Page 2 of 3
Re: World Crash: Camp Timers (?)
Posted: Fri Aug 22, 2014 8:40 am
by Lokked
I have 2 thoughts about the Unreal Channel message:
1) It means nothing: Perhaps the client continues to send it's position update packets (ServerShortMove()), and those reach the server after the actor's channel has been destroyed (through the server's logout process, I don't actually know how this part of the server code works, just guessing).
OR
2) The server code for removing the character from the world is prone to race conditions, and something is being access after it's been destroyed.
Re: World Crash: Camp Timers (?)
Posted: Fri Aug 22, 2014 10:11 am
by Dakadin
I should be available tonight. We can do it later if that makes it a bit easier for you Volt or we might have better luck Saturday or Sunday.
Re: World Crash: Camp Timers (?)
Posted: Fri Aug 22, 2014 11:31 am
by Volt
Ok with luck I will wake up early tomorrow but no promises (it is saturday morning after all ). Go ahead without me if you are up for it but I am happy to join in if I can.
Re: World Crash: Camp Timers (?)
Posted: Sat Aug 23, 2014 3:05 am
by John Adams
Another crash related to that GetCurrentChunk function. I'm not seeing any errors coming from CampTimers::Check(), but I did notice that "character" is not being double checked, so just to try something out, I added the following code:
auto character = itr2.first;
if (!character) {
LogDebug(LOG_GENERAL, 0, "In CampTimers::Check(): UNRECOVERABLE ERROR: character == null");
continue;
}
Trying this because it seems "character" is null when this the next check is being done on
auto chunk = character->GetCurrentChunk();.
Volt / ??? let me know if this causes any unexpected consequence.
For proper use case testing of camp timers, think of every possible way you can to disconnect while the /camp timer is running. Exit, terminating the client in task manager, Logout, double-camping, etc. Perhaps this is happening because someone types /camp then closes the client brutally.
Re: World Crash: Camp Timers (?)
Posted: Sat Aug 23, 2014 5:20 am
by Volt
[quote="John Adams"]Volt / ??? let me know if this causes any unexpected consequence.[/quote]
That should be fine. Though, if it actually ever finds a (!character) I would need to know and ponder why and also how to more properly handle that. My current understanding is that this should never happen unless something is really broken.
Re: World Crash: Camp Timers (?)
Posted: Sat Aug 23, 2014 5:22 am
by Volt
John, can I please have a db copy of Dakadin's character that is prone to crashing?
Also, what character(s) were online at the latest crash?
Re: World Crash: Camp Timers (?)
Posted: Sat Aug 23, 2014 9:03 am
by John Adams
[quote="Volt"]John, can I please have a db copy of Dakadin's character that is prone to crashing?
Also, what character(s) were online at the latest crash?[/quote]
I do not know who was online. I thought it randomly happened to whomever. I will re-export New Telon DB full, and post it to the private SVN. Somehow I do not feel this is data-related though. Sounds like a process (starting my timer, and starting it again, quitting ahead of it, or so forth). Something QA'ish.
Re: World Crash: Camp Timers (?)
Posted: Sat Aug 23, 2014 9:08 am
by John Adams
[quote="Volt"]Though, if it actually ever finds a (!character) I would need to know and ponder why and also how to more properly handle that. My current understanding is that this should never happen unless something is really broken.[/quote]
While I tend to agree with you, that something further "upstream" is likely being mishandled, we saw this in an almost constant state in EQ2Emu with pointers to disappearing objects would occur, literally BETWEEN a if( stuff ) stuff->dostuff(); meaning, between the check for if "stuff" was valid, and the execution of the very next line "stuff->dostuff();" the "stuff" became invalid.
Ask Jabantiz. This was all over EQ2's code, and none of us had a clue why. We just started dumping in validation checks everywhere and it seems to have handled the problem.
Re: World Crash: Camp Timers (?)
Posted: Sat Aug 23, 2014 9:09 am
by Dakadin
That was the spot Lokked and I talked about the other night. I think data somewhere has to be playing a part since it is following the same character around even after restarting the client and server. I think what is happening is something happens that some how is invalidating the character instance. This could explain why I couldn't interact with much of the world. Either my client crashes or the server crashes. I am going to try logging in with both my characters to see if I can break it with the change you added John.
Re: World Crash: Camp Timers (?)
Posted: Sat Aug 23, 2014 9:11 am
by John Adams
Ok, I am barely awake, sipping coffee, and will keep an eye on you.