Issue information

Issue ID
#945
Status
Duplicate
Severity
None
Started
Hercules Elf Bot
Feb 9, 2008 21:19
Last Post
Hercules Elf Bot
Feb 9, 2008 21:19
Confirmation
N/A

Hercules Elf Bot - Feb 9, 2008 21:19

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

Hi There... My eAthena stable server is crashing sometimes.
Here is the bt full backtrace:

CODE
(gdb) bt
#0  _mfree (ptr=0xdddddddd, file=0x8172817 "skill.c", line=9425,
    func=0x81744f6 "skill_delunitgroup") at malloc.c:360
#1  0x080eed12 in skill_delunitgroup (src=0xac8f4f70, group=0xac86dd8c)
    at skill.c:9425
#2  0x080b05aa in status_change_end (bl=0xac8f4f70, type=SC_DANCING, tid=-1)
    at status.c:6362
#3  0x0809ffad in pc_jobchange (sd=0xac8f4f70, job=4049, upper=0) at pc.c:5577
#4  0x0811c70c in atcommand_jobchange (fd=11, sd=0xac8f4f70,
    command=0xbfdc1fa8 "@job", message=0xbfdc1f44 "4049") at atcommand.c:1414

My atcommand.c is modified. Code around lind 1414:
CODE
    if (job == 37 ||job == 45)
        return 0;

    if (pcdb_checkid(job))
    {
        if (pc_jobchange(sd, job, upper) == 0)      <----- 1414
            clif_displaymessage(fd, msg_txt(12)); // Your job has been changed.
        else {
            clif_displaymessage(fd, msg_txt(155)); // Impossible to change your job.
            return -1;
        }


CODE
#5  0x0810e49b in is_atcommand_sub (fd=11, sd=0xac8f4f70,
    str=0xacd02208 "@job 4049", gmlvl=0) at atcommand.c:8685

Again modified
CODE
    if( log_config.gm && info->level >= log_config.gm )
        log_atcommand(sd, str);

    if( info->func(fd, sd, command, args) != 0 ) <---- 8685
    {
        sprintf(output, msg_txt(154), command); // "%s failed."
        clif_displaymessage(fd, output);
    }

CODE
#6  0x0810e5b0 in is_atcommand (fd=11, sd=0xac8f4f70,
    message=0xb <Address 0xb out of bounds>) at atcommand.c:8721    <----- that's just this line: "return is_atcommand_sub(fd,sd,message,gmlvl);"
#7  0x08084355 in clif_parse_GlobalMessage (fd=11, sd=0xac8f4f70)
    at clif.c:8114
#8  0x080808af in clif_parse (fd=11) at clif.c:11348

clif.c is modified too.
CODE
        if (sd
            || packet_db[packet_ver][cmd].func == clif_parse_WantToConnection
            || packet_db[packet_ver][cmd].func == clif_parse_debug
        )    //Only execute the function when there's an sd (except for debug/wanttoconnect packets)
            packet_db[packet_ver][cmd].func(fd, sd);   <--- 11348
    }

CODE
#9  0x08155e8e in do_sockets (next=50) at socket.c:750
#10 0x08154905 in main (argc=1, argv=0xbfdc2364) at core.c:254


(gdb) bt full
#0  _mfree (ptr=0xdddddddd, file=0x8172817 "skill.c", line=9425,
    func=0x81744f6 "skill_delunitgroup") at malloc.c:360
        head = <value optimized out>
#1  0x080eed12 in skill_delunitgroup (src=0xac8f4f70, group=0xac86dd8c)
    at skill.c:9425
        ud = (struct unit_data *) 0xac8f4f88
        i = 42
        j = <value optimized out>
        __FUNCTION__ = "skill_delunitgroup"
#2  0x080b05aa in status_change_end (bl=0xac8f4f70, type=SC_DANCING, tid=-1)
    at status.c:6362
        dsd = <value optimized out>
        dsc = <value optimized out>
        sd = (struct map_session_data *) 0xac8f4f70
        sc = (struct status_change *) 0xac8f5208
        sce = (struct status_change_entry *) 0xac469c78
        status = (struct status_data *) 0xac8f51b8
        vd = (struct view_data *) 0xac8f5154
        opt_flag = <value optimized out>
        calc_flag = 537133056
        __FUNCTION__ = "status_change_end"
#3  0x0809ffad in pc_jobchange (sd=0xac8f4f70, job=4049, upper=0) at pc.c:5577
        id = 9425
        i = 18
        b_class = <value optimized out>
        __FUNCTION__ = "pc_jobchange"
#4  0x0811c70c in atcommand_jobchange (fd=11, sd=0xac8f4f70,
    command=0xbfdc1fa8 "@job", message=0xbfdc1f44 "4049") at atcommand.c:1414
        i = 1290
        job = 4049
        upper = 0
        __FUNCTION__ = "atcommand_jobchange"
        jobs = {{name = "novice000000000", id = 0},
  {name = "swordsman000000", id = 1}, {
    name = "mage", '\' <repeats 11 times>, id = 2}, {
    name = "archer000000000", id = 3}, {
    name = "acolyte00000000", id = 4}, {
    name = "merchant0000000", id = 5}, {
    name = "thief0000000000", id = 6}, {
    name = "knight000000000", id = 7}, {
    name = "priest000000000", id = 8}, {
    name = "priestess000000", id = 8}, {
    name = "wizard000000000", id = 9}, {
    name = "blacksmith00000", id = 10}, {
    name = "hunter000000000", id = 11}, {
    name = "assassin0000000", id = 12}, {
    name = "crusader0000000", id = 14}, {
    name = "monk", '\' <repeats 11 times>, id = 15}, {
    name = "sage", '\' <repeats 11 times>, id = 16}, {
    name = "rogue0000000000", id = 17}, {
    name = "alchemist000000", id = 18}, {
    name = "bard", '\' <repeats 11 times>, id = 19}, {
    name = "dancer000000000", id = 20}, {
    name = "super novice000", id = 23}, {
    name = "supernovice0000", id = 23}, {
    name = "gunslinger00000", id = 24}, {
    name = "gunner000000000", id = 24}, {
    name = "ninja0000000000", id = 25}, {
    name = "high novice0000", id = 4001}, {
    name = "swordsman high0", id = 4002}, {
    name = "mage high000000", id = 4003}, {
    name = "archer high0000", id = 4004}, {
    name = "acolyte high000", id = 4005}, {
    name = "merchant high00", id = 4006}, {
    name = "thief high00000", id = 4007}, {
    name = "lord knight0000", id = 4008}, {
    name = "high priest0000", id = 4009}, {
    name = "high priestess0", id = 4009}, {
    name = "high wizard0000", id = 4010}, {
    name = "whitesmith00000", id = 4011}, {
    name = "sniper000000000", id = 4012}, {
    name = "assassin cross0", id = 4013}, {
    name = "paladin00000000", id = 4015}, {
    name = "champion0000000", id = 4016}, {
    name = "professor000000", id = 4017}, {
    name = "stalker00000000", id = 4018}, {
    name = "creator00000000", id = 4019}, {
    name = "clown0000000000", id = 4020}, {
    name = "gypsy0000000000", id = 4021}, {
    name = "baby novice0000", id = 4023}, {
    name = "baby swordsman0", id = 4024}, {
    name = "baby mage000000", id = 4025}, {
    name = "baby archer0000", id = 4026}, {
    name = "baby acolyte000", id = 4027}, {
    name = "baby merchant00", id = 4028}, {
    name = "baby thief00000", id = 4029}, {
    name = "baby knight0000", id = 4030}, {
    name = "baby priest0000", id = 4031}, {
    name = "baby priestess0", id = 4031}, {
    name = "baby wizard0000", id = 4032}, {
    name = "baby blacksmith", id = 4033}, {
    name = "baby hunter0000", id = 4034}, {
    name = "baby assassin00", id = 4035}, {
    name = "baby crusader00", id = 4037}, {
    name = "baby monk000000", id = 4038}, {
    name = "baby sage000000", id = 4039}, {
    name = "baby rogue00000", id = 4040}, {
    name = "baby alchemist0", id = 4041}, {
    name = "baby bard000000", id = 4042}, {
    name = "baby dancer0000", id = 4043}, {
    name = "super baby00000", id = 4045}, {
    name = "taekwon00000000", id = 4046}, {
    name = "taekwon boy0000", id = 4046}, {
    name = "taekwon girl000", id = 4046}, {
    name = "star gladiator0", id = 4047}, {
    name = "soul linker0000", id = 4049}}
#5  0x0810e49b in is_atcommand_sub (fd=11, sd=0xac8f4f70,
    str=0xacd02208 "@job 4049", gmlvl=0) at atcommand.c:8685
        format = "1000ô36Ü¿3000´CP¯Ï00030ý3401000m000¡000ë000´CP¯þÿÿÿ1000(37Ü¿½36\b\b3237Ü¿E000x37Ü¿Ýá6\bÃœ00030000H37Ü¿ÚS25\b\r000´CP¯H37Ü¿\234_³\b30ý340\f000\b000\"000\\æu¬"
        info = (AtCommandInfo *) 0x818b26c
        command = "@job0è¨\bô\205220\a000è37Ü¿\\©\a\b\237<26\bá000Xo26\b\b16\204“!Ü¿20000\204 Ü¿0000 N7\bpO\217¬\b\"Ь24Ö25\b\b\"Ь000030 Ü¿Í>\t\b\233±26\b[0007\21626\b"
        args = "40490000À_25\b0000#000÷000ÚS25\b\r0001000\23437Ü¿E000d35P¯20000h Ü¿r16\b\b\200¨\a\b34000ø37Ü¿Ýá6\ba000231001000\f!Ü¿20000d35P¯"
        output = "ÃŽ000´CP¯\n000ø36Ü¿r16\b\b\200¨\a\bN200ÃŽ000£000ê000¿00010003237Ü¿\n000´CP¯2000U{\n\b´CP¯C2100@°26\b´CP¯6000\234EP¯00000u000000´CP¯3037Ü¿,24\v\b1000\t000è50020'000000¨\216\2166G_)4ÿÿÿÿ¯000Ãœ000Ø36Ü¿ÙØ6\b4lâ¬Î000H37Ü¿ìÛ6\b3300026000m0000000100"
#6  0x0810e5b0 in is_atcommand (fd=11, sd=0xac8f4f70,
    message=0xb <Address 0xb out of bounds>) at atcommand.c:8721
        gmlvl = 0
        __FUNCTION__ = "is_atcommand"
#7  0x08084355 in clif_parse_GlobalMessage (fd=11, sd=0xac8f4f70)
    at clif.c:8114
        text = <value optimized out>
        textlen = <value optimized out>
        name = 0xacd02200 "Timmy : @job 4049"
        message = 0xacd02208 "@job 4049"
        namelen = 5
        messagelen = 10
#8  0x080808af in clif_parse (fd=11) at clif.c:11348
        packet_ver = 22
        packet_len = 22
        err = 128
        sd = (TBL_PC *) 0xac8f4f70
        pnum = 0
#9  0x08155e8e in do_sockets (next=50) at socket.c:750
        rfd = {__fds_bits = {2048, 0 <repeats 31 times>}}
        timeout = {tv_sec = 0, tv_usec = 12000}
        ret = 0
        i = 11
#10 0x08154905 in main (argc=1, argv=0xbfdc2364) at core.c:254
        next = 9425



Thanks in advance :>