Issue information

Issue ID
#777
Status
Fixed
Severity
Medium
Started
Hercules Elf Bot
Jan 10, 2008 0:52
Last Post
Hercules Elf Bot
Jan 10, 2008 0:52
Confirmation
N/A

Hercules Elf Bot - Jan 10, 2008 0:52

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

Stack dump,

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

Error occured on Wednesday, January 9, 2008 at 05:21:21.

C:\Inetpub\vhosts\icarus.legacyro.com\Icarus\map-server_sql.exe caused an Access Violation at location 00680c99 in module C:\Inetpub\vhosts\icarus.legacyro.com\Icarus\map-server_sql.exe Reading from location 0000000c.

Registers:
eax=00000000 ebx=7ffff000 ecx=00000004 edx=0000001f esi=0012fd70 edi=0012fbcc
eip=00680c99 esp=0012f500 ebp=0012fbcc iopl=0 nv up ei pl zr na po nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010246

Call stack:
00680C99 skill_castend_nodamage_id c:\users\itakou\desktop\server\icarus\src\map\skill.c:4178
00687540 skill_castend_id c:\users\itakou\desktop\server\icarus\src\map\skill.c:5313
00532457 do_timer c:\users\itakou\desktop\server\icarus\src\common\timer.c:386
0051CA1E main c:\users\itakou\desktop\server\icarus\src\common\core.c:253
006DFB13 __tmainCRTStartup f:\rtm\vctools\crt_bld\self_x86\crt\src\crt0.c:318
006DF8CD mainCRTStartup f:\rtm\vctools\crt_bld\self_x86\crt\src\crt0.c:187
77E6F23B C:\WINDOWS\system32\kernel32.dll:77E6F23B ProcessIdToSessionId



Memory leaks found,

QUOTE
0168 : c:\users\itakou\desktop\server\icarus\src\map\npc.c line 2273 size 50
0169 : c:\users\itakou\desktop\server\icarus\src\map\script.c line 2064 size 12
0170 : c:\users\itakou\desktop\server\icarus\src\map\npc.c line 2273 size 50
0171 : c:\users\itakou\desktop\server\icarus\src\map\script.c line 2064 size 12
0172 : c:\users\itakou\desktop\server\icarus\src\map\npc.c line 2273 size 50
0173 : c:\users\itakou\desktop\server\icarus\src\map\script.c line 2064 size 12
0174 : c:\users\itakou\desktop\server\icarus\src\map\npc.c line 2273 size 50
0175 : c:\users\itakou\desktop\server\icarus\src\map\script.c line 2064 size 12
0176 : c:\users\itakou\desktop\server\icarus\src\map\npc.c line 2273 size 50
0177 : c:\users\itakou\desktop\server\icarus\src\map\script.c line 2064 size 12
0178 : c:\users\itakou\desktop\server\icarus\src\map\npc.c line 2273 size 50
0179 : c:\users\itakou\desktop\server\icarus\src\map\script.c line 2064 size 12
0180 : c:\users\itakou\desktop\server\icarus\src\map\npc.c line 2273 size 50
0181 : c:\users\itakou\desktop\server\icarus\src\map\script.c line 2167 size 15
0182 : c:\users\itakou\desktop\server\icarus\src\map\script.c line 2167 size 17
0183 : c:\users\itakou\desktop\server\icarus\src\map\script.c line 2167 size 20



Because my source is a little different, here are where the lines point to for me,

skill.c:4178
CODE
    case SA_DISPELL:
        if (flag&1 || (i = skill_get_splash(skillid, skilllv)) < 1)
        {
            clif_skill_nodamage(src,bl,skillid,skilllv,1);
            if((dstsd && (dstsd->class_&MAPID_UPPERMASK) == MAPID_SOUL_LINKER)
                || (tsc && tsc->data[SC_SPIRIT] && tsc->data[SC_SPIRIT]->val2 == SL_ROGUE) //Rogue's spirit defends againt dispel.
                || rand()%100 >= 50+10*skilllv)
            {
                if (sd)
                    clif_skill_fail(sd,skillid,0,0);
                break;
            }
            if(status_isimmune(bl) || !tsc->count) // LINE 4178



skill.c:5313
CODE
        map_freeblock_lock();
        if (skill_get_casttype(ud->skillid) == CAST_NODAMAGE)
            skill_castend_nodamage_id(src,target,ud->skillid,ud->skilllv,tick,0); // LINE 5313
        else
            skill_castend_damage_id(src,target,ud->skillid,ud->skilllv,tick,0);



npc.c:2167
CODE
        default:
            data->u.str = pc_readglobalreg_str(sd, name);
            break;
        }

        if( data->u.str == NULL || data->u.str[0] == '\' )
        {// empty string
            data->type = C_CONSTSTR;
            data->u.str = "";
        }
        else
        {// duplicate string
            data->type = C_STR;
            data->u.str = aStrdup(data->u.str); // LINE 2167
        }



npc.c:2064
CODE
    CREATE(code,struct script_code,1); // LINE 2064
    code->script_buf  = script_buf;
    code->script_size = script_size;
    code->script_vars = NULL;
    return code;
}



npc.c:2273
CODE
    if (script == NULL) {
        // script parse error?
        aFree(srcbuf);
        return 1;
    }

    p = (char *) aMallocA (50*sizeof(char)); // LINE 2273
    strncpy(p, w3, 50);