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 :>