Dead client
Posted: Wed Jan 22, 2014 2:04 am
First by dead client I mean the world stops responding but the client never disconnects, you could sit in there forever running around the zone with out loosing connection. I am sure all us devs have seen this at least once.
Now what it actually is, a zone server crash/deadlock.
While trying to reproduce a bug Foof brought to my attention I ran across this, again. I was able to determine the zone had crapped out on me and the reason I was never disconnected was because the ping was still keeping me alive, the ping is maintained by the world server and not the zone server like all the visible stuff is so when the zone crapped out every thing stopped working but the connection never times out.
I am not sure how the zone was dying without giving any errors and without actually shutting down. I did have a debugger attached so I was able to pause the server until the client disconnected and then resumed and while the world server registered the client timed out the zone server refused to let the client go, finally I typed exit in the console, sadly the stubborn mostly dead zone refused to give in and shut down.
Debugger showed it stuck trying to get the players target, made some changes to how we get a target and how we clear it when a spawn is removed. I really doubt this will fix the dead client issue, however I did not encounter it again in my attempt to reproduce the bug when I ran into it so quickly the first time so who knows maybe it will.
If any of you run across this again can you please post detailed info on what you were doing in game, and if at all possible reproduce what I did with the debugger, pause until the client times out, resume and wait a bit then type exit in the console, wait a bit then pause again and see where it is stuck.
Now what it actually is, a zone server crash/deadlock.
While trying to reproduce a bug Foof brought to my attention I ran across this, again. I was able to determine the zone had crapped out on me and the reason I was never disconnected was because the ping was still keeping me alive, the ping is maintained by the world server and not the zone server like all the visible stuff is so when the zone crapped out every thing stopped working but the connection never times out.
I am not sure how the zone was dying without giving any errors and without actually shutting down. I did have a debugger attached so I was able to pause the server until the client disconnected and then resumed and while the world server registered the client timed out the zone server refused to let the client go, finally I typed exit in the console, sadly the stubborn mostly dead zone refused to give in and shut down.
Debugger showed it stuck trying to get the players target, made some changes to how we get a target and how we clear it when a spawn is removed. I really doubt this will fix the dead client issue, however I did not encounter it again in my attempt to reproduce the bug when I ran into it so quickly the first time so who knows maybe it will.
If any of you run across this again can you please post detailed info on what you were doing in game, and if at all possible reproduce what I did with the debugger, pause until the client times out, resume and wait a bit then type exit in the console, wait a bit then pause again and see where it is stuck.