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 = "novice 0 0 0 0 0 0 0 0 0", id = 0},
{name = "swordsman 0 0 0 0 0 0", id = 1}, {
name = "mage", '\' <repeats 11 times>, id = 2}, {
name = "archer 0 0 0 0 0 0 0 0 0", id = 3}, {
name = "acolyte 0 0 0 0 0 0 0 0", id = 4}, {
name = "merchant 0 0 0 0 0 0 0", id = 5}, {
name = "thief 0 0 0 0 0 0 0 0 0 0", id = 6}, {
name = "knight 0 0 0 0 0 0 0 0 0", id = 7}, {
name = "priest 0 0 0 0 0 0 0 0 0", id = 8}, {
name = "priestess 0 0 0 0 0 0", id = 8}, {
name = "wizard 0 0 0 0 0 0 0 0 0", id = 9}, {
name = "blacksmith 0 0 0 0 0", id = 10}, {
name = "hunter 0 0 0 0 0 0 0 0 0", id = 11}, {
name = "assassin 0 0 0 0 0 0 0", id = 12}, {
name = "crusader 0 0 0 0 0 0 0", id = 14}, {
name = "monk", '\' <repeats 11 times>, id = 15}, {
name = "sage", '\' <repeats 11 times>, id = 16}, {
name = "rogue 0 0 0 0 0 0 0 0 0 0", id = 17}, {
name = "alchemist 0 0 0 0 0 0", id = 18}, {
name = "bard", '\' <repeats 11 times>, id = 19}, {
name = "dancer 0 0 0 0 0 0 0 0 0", id = 20}, {
name = "super novice 0 0 0", id = 23}, {
name = "supernovice 0 0 0 0", id = 23}, {
name = "gunslinger 0 0 0 0 0", id = 24}, {
name = "gunner 0 0 0 0 0 0 0 0 0", id = 24}, {
name = "ninja 0 0 0 0 0 0 0 0 0 0", id = 25}, {
name = "high novice 0 0 0 0", id = 4001}, {
name = "swordsman high 0", id = 4002}, {
name = "mage high 0 0 0 0 0 0", id = 4003}, {
name = "archer high 0 0 0 0", id = 4004}, {
name = "acolyte high 0 0 0", id = 4005}, {
name = "merchant high 0 0", id = 4006}, {
name = "thief high 0 0 0 0 0", id = 4007}, {
name = "lord knight 0 0 0 0", id = 4008}, {
name = "high priest 0 0 0 0", id = 4009}, {
name = "high priestess 0", id = 4009}, {
name = "high wizard 0 0 0 0", id = 4010}, {
name = "whitesmith 0 0 0 0 0", id = 4011}, {
name = "sniper 0 0 0 0 0 0 0 0 0", id = 4012}, {
name = "assassin cross 0", id = 4013}, {
name = "paladin 0 0 0 0 0 0 0 0", id = 4015}, {
name = "champion 0 0 0 0 0 0 0", id = 4016}, {
name = "professor 0 0 0 0 0 0", id = 4017}, {
name = "stalker 0 0 0 0 0 0 0 0", id = 4018}, {
name = "creator 0 0 0 0 0 0 0 0", id = 4019}, {
name = "clown 0 0 0 0 0 0 0 0 0 0", id = 4020}, {
name = "gypsy 0 0 0 0 0 0 0 0 0 0", id = 4021}, {
name = "baby novice 0 0 0 0", id = 4023}, {
name = "baby swordsman 0", id = 4024}, {
name = "baby mage 0 0 0 0 0 0", id = 4025}, {
name = "baby archer 0 0 0 0", id = 4026}, {
name = "baby acolyte 0 0 0", id = 4027}, {
name = "baby merchant 0 0", id = 4028}, {
name = "baby thief 0 0 0 0 0", id = 4029}, {
name = "baby knight 0 0 0 0", id = 4030}, {
name = "baby priest 0 0 0 0", id = 4031}, {
name = "baby priestess 0", id = 4031}, {
name = "baby wizard 0 0 0 0", id = 4032}, {
name = "baby blacksmith", id = 4033}, {
name = "baby hunter 0 0 0 0", id = 4034}, {
name = "baby assassin 0 0", id = 4035}, {
name = "baby crusader 0 0", id = 4037}, {
name = "baby monk 0 0 0 0 0 0", id = 4038}, {
name = "baby sage 0 0 0 0 0 0", id = 4039}, {
name = "baby rogue 0 0 0 0 0", id = 4040}, {
name = "baby alchemist 0", id = 4041}, {
name = "baby bard 0 0 0 0 0 0", id = 4042}, {
name = "baby dancer 0 0 0 0", id = 4043}, {
name = "super baby 0 0 0 0 0", id = 4045}, {
name = "taekwon 0 0 0 0 0 0 0 0", id = 4046}, {
name = "taekwon boy 0 0 0 0", id = 4046}, {
name = "taekwon girl 0 0 0", id = 4046}, {
name = "star gladiator 0", id = 4047}, {
name = "soul linker 0 0 0 0", id = 4049}}
#5 0x0810e49b in is_atcommand_sub (fd=11, sd=0xac8f4f70,
str=0xacd02208 "@job 4049", gmlvl=0) at atcommand.c:8685
format = "