Issue Information
-
#005083
-
3 - Medium
-
Fixed
Issue Confirmations
-
Yes (0)No (0)
Originally posted by ShadowIllusion
http://www.eathena.w...er&showbug=5083
When you have a player online, then you press CTRL+C (or @mapexit using GM Account), it will crash after finished cleaning mapname...
But its okay if there are no player online...
In src/map/npc.c, it crashed in this line, on npc_event_sub:
if( ev->nd->sc.option&OPTION_INVISIBLE )
After debugging, I found the culprit. npc/other/poring_war.txt
If I comment this entire code, it will not crash. But it will crash even when I only just put:
Seems it hates that label? I don't think so. If I placed that label in another script, as long as its not in poring_war.txt, the server will not crash...
This post has been edited by ShadowIllusion: Nov 9 2011, 03:30 AM
http://www.eathena.w...er&showbug=5083
When you have a player online, then you press CTRL+C (or @mapexit using GM Account), it will crash after finished cleaning mapname...
But its okay if there are no player online...
QUOTE
Error occured on Wednesday, November 9, 2011 at 15:42:17.
D:\map-server_sql.exe caused an Access Violation at location 0065616c in module D:\map-server_sql.exe Reading from location fdfe06ed.
Registers:
eax=1bf4c944 ebx=7efde000 ecx=fdfdfdfd edx=0008e3c8 esi=0018fc0c edi=0018f934
eip=0065616c esp=0018f85c ebp=0018f934 iopl=0 nv up ei pl nz na po nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00010206
D:\map-server_sql.exe caused an Access Violation at location 0065616c in module D:\map-server_sql.exe Reading from location fdfe06ed.
Registers:
eax=1bf4c944 ebx=7efde000 ecx=fdfdfdfd edx=0008e3c8 esi=0018fc0c edi=0018f934
eip=0065616c esp=0018f85c ebp=0018f934 iopl=0 nv up ei pl nz na po nc
cs=0023 ss=002b ds=002b es=002b fs=0053 gs=002b efl=00010206
In src/map/npc.c, it crashed in this line, on npc_event_sub:
if( ev->nd->sc.option&OPTION_INVISIBLE )
After debugging, I found the culprit. npc/other/poring_war.txt
QUOTE
OnPCLogoutEvent:
getmapxy .@map$,.@x,.@y,0;
if (.@map$ == "poring_w02") {
if(WoP_SaveMap$ != "") {
savepoint WoP_SaveMap$,WoP_SaveMap_X,WoP_SaveMap_Y;
set WoP_SaveMap$,"";
set WoP_SaveMap_X,0;
set WoP_SaveMap_Y,0;
}
delitem 7773,countitem(7773);
set wop_team,0;
}
end;
getmapxy .@map$,.@x,.@y,0;
if (.@map$ == "poring_w02") {
if(WoP_SaveMap$ != "") {
savepoint WoP_SaveMap$,WoP_SaveMap_X,WoP_SaveMap_Y;
set WoP_SaveMap$,"";
set WoP_SaveMap_X,0;
set WoP_SaveMap_Y,0;
}
delitem 7773,countitem(7773);
set wop_team,0;
}
end;
If I comment this entire code, it will not crash. But it will crash even when I only just put:
QUOTE
OnPCLogoutEvent:
end;
end;
Seems it hates that label? I don't think so. If I placed that label in another script, as long as its not in poring_war.txt, the server will not crash...
This post has been edited by ShadowIllusion: Nov 9 2011, 03:30 AM
Originally posted by Ind
I've tested about to 4 times to reproduce and I failed, gdb also didn't detect anything. -- i was with 3 clients open + the GM who did @mapexit.
I've tested about to 4 times to reproduce and I failed, gdb also didn't detect anything. -- i was with 3 clients open + the GM who did @mapexit.
Originally posted by Epoque
I believe this was confirmed at eAthena, with regards to the OnPCLogoutEvent label not occuring until the map_session_data for the player had been freed. This is confirmed but unresolved from what I can tell.
I believe this was confirmed at eAthena, with regards to the OnPCLogoutEvent label not occuring until the map_session_data for the player had been freed. This is confirmed but unresolved from what I can tell.
Originally posted by Ind
hum I was looking at the map_quit/npc_event_sub the only reason I see as being the possible culprit for that is the OnPCLogoutEvent being queued (because otherwise it is run on the fly while player data is still available -- reason my attempts to reproduce didn't crash). but who queues (or have) this many OnPCLogoutEvent oOI believe this was confirmed at eAthena, with regards to the OnPCLogoutEvent label not occuring until the map_session_data for the player had been freed. This is confirmed but unresolved from what I can tell.
Originally posted by Ind
this was fixed by me when i did the 7s speed up performance thingo in the shutdown processing, it happened because it'd free all the units randomly as they were ordered players mobs npcs etc, and on my edit i made players be freed first then everything else (and that fixes this).
this was fixed by me when i did the 7s speed up performance thingo in the shutdown processing, it happened because it'd free all the units randomly as they were ordered players mobs npcs etc, and on my edit i made players be freed first then everything else (and that fixes this).