Issue information

Issue ID
#834
Status
Duplicate
Severity
None
Started
Hercules Elf Bot
Jan 17, 2008 8:09
Last Post
Hercules Elf Bot
Jan 17, 2008 8:09
Confirmation
N/A

Hercules Elf Bot - Jan 17, 2008 8:09

Originally posted by [b]Itakou[/b]
http://www.eathena.ws/board/index.php?autocom=bugtracker&showbug=834

the stackdump based on revision 12082,

QUOTE
-------------------

Error occured on Wednesday, January 16, 2008 at 20:34:28.

C:\Inetpub\vhosts\icarus.legacyro.com\Icarus\map-server_sql.exe caused an Access Violation at location 005e0ef1 in module C:\Inetpub\vhosts\icarus.legacyro.com\Icarus\map-server_sql.exe Reading from location 785a93d4.

Registers:
eax=dddddddd ebx=7ffff000 ecx=00000000 edx=ffffddcb esi=0012fd70 edi=0012f794
eip=005e0ef1 esp=0012f6c8 ebp=0012f794 iopl=0 nv up ei pl nz na po nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010206

Call stack:
005E0EF1 map_delobjectnofree c:\users\itakou\desktop\server\icarus\src\map\map.c:1142
0069815A skill_delunit c:\users\itakou\desktop\server\icarus\src\map\skill.c:9333
006988F8 skill_delunitgroup c:\users\itakou\desktop\server\icarus\src\map\skill.c:9457
006B7BB6 status_change_end c:\users\itakou\desktop\server\icarus\src\map\status.c:6404
006BA06E status_change_timer c:\users\itakou\desktop\server\icarus\src\map\status.c:7067
00533177 do_timer c:\users\itakou\desktop\server\icarus\src\common\timer.c:386
0051CA4E main c:\users\itakou\desktop\server\icarus\src\common\core.c:253
006E0203 __tmainCRTStartup


Since I have modifications in place, here is where the lines point for me...


map.c:1142
CODE
int map_delobjectnofree(int id)
{
    if(objects[id]==NULL) // LINE 1142
        return 0;


skill.c:9333
CODE
int skill_delunit (struct skill_unit* unit)
{

    ...

    clif_skill_delunit(unit);

    unit->group=NULL;
    unit->alive=0;
    map_delobjectnofree(unit->bl.id); // LINE 9333
    if(--group->alive_count==0)
        skill_delunitgroup(NULL, group);

    return 0;
}


skill.c:9457
CODE
int skill_delunitgroup (struct block_list *src, struct skill_unit_group *group)
{

    ...

    if (src->type==BL_PC && group->state.ammo_consume)
        battle_consume_ammo((TBL_PC*)src, group->skill_id, group->skill_lv);

    group->alive_count=0;

    // remove all unit cells
    if(group->unit != NULL)
        for( i = 0; i < group->unit_count; i++ )
            skill_delunit(&group->unit[i]); // LINE 9457


status.c:6404
CODE
        case SC_DANCING:
            {
                struct map_session_data *dsd;
                struct status_change_entry *dsc;
                struct skill_unit_group *group;
                if(sce->val2)
                {
                    group = (struct skill_unit_group *)sce->val2;
                    sce->val2 = 0;
                    skill_delunitgroup(bl, group); // LINE 6404
                }



status.c:7067
CODE
int status_change_timer(int tid, unsigned int tick, int id, int data)
{

    ...

    // default for all non-handled control paths is to end the status
    return status_change_end( bl,type,tid ); // LINE 7067
#undef sc_timer_next
}