World Crash - KickDupeClients
Moderators: Community Managers, Developers
- John Adams
- Retired
- Posts: 4581
- Joined: Wed Aug 28, 2013 9:40 am
- Location: Phoenix, AZ.
- Contact:
World Crash - KickDupeClients
Thought I had a bug for this before... so here's the one for right now.
Stack;
Code:
&lock is empty -- first time I've seen that
Naturally, we only have big crashes when there are 5+ people online
Stack;
Code: Select all
ntdll.dll!77398277() Unknown
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]
> WorldServer.exe!Mutex::ReadLock() Line 99 C++
WorldServer.exe!UDPServer::GetClient(unsigned int account_id) Line 194 C++
WorldServer.exe!ChunkServer::GetClient(unsigned int account_id) Line 277 C++
WorldServer.exe!UDPServer::KickDupeClients(unsigned int account_id, unsigned int connection_id) Line 258 C++
WorldServer.exe!Net::HandleCharacterSelected(std::shared_ptr<Client> & client, PacketStruct * packet_struct) Line 390 C++
WorldServer.exe!Net::Process() Line 159 C++
WorldServer.exe!main(int argc, char * * argv) Line 189 C++
WorldServer.exe!__tmainCRTStartup() Line 241 C
WorldServer.exe!mainCRTStartup() Line 164 C
kernel32.dll!7574338a() Unknown
ntdll.dll!77329f72() Unknown
ntdll.dll!77329f45() Unknown
Code: Select all
void Mutex::ReadLock() {
#if defined(_WIN32)
# if defined(VG_DEBUG)
timem_t start = TimeMS();
while (!TryAcquireSRWLockShared(&lock)) { // <== here
if ((TimeMS() - start > MUTEX_TIMEOUT)) {
Code: Select all
- &lock 0x00000390 {Ptr=??? } _RTL_SRWLOCK *
Ptr <Unable to read memory>
start 18446744073249213183 unsigned __int64
+ this 0x00000370 {name=0x00000370 <Error reading characters of string.> lock={Ptr=??? } } Mutex *
- John Adams
- Retired
- Posts: 4581
- Joined: Wed Aug 28, 2013 9:40 am
- Location: Phoenix, AZ.
- Contact:
Re: World Crash - KickDupeClients
Sitting here watching New Telon, this crash just happened again. Any ideas?
Re: World Crash - KickDupeClients
The lock object must not be initializing or is being deleted somewhere, but this seems almost impossible. I'll think about it. Perhaps a try catch can give us a change to report more.
How many were on? Was the player logging in a different char than what they've disconnected with, and into a different chunk?
How many were on? Was the player logging in a different char than what they've disconnected with, and into a different chunk?
- John Adams
- Retired
- Posts: 4581
- Joined: Wed Aug 28, 2013 9:40 am
- Location: Phoenix, AZ.
- Contact:
Re: World Crash - KickDupeClients
From what it looked like, it was 1 character (Vurgood) and 1 chunk. I think that's usually the only character he logs in with.
- John Adams
- Retired
- Posts: 4581
- Joined: Wed Aug 28, 2013 9:40 am
- Location: Phoenix, AZ.
- Contact:
Re: World Crash - KickDupeClients
Today it was Zarlore. Maybe he'll see this and remember what was happening at the time. From the console, it appears he was at character select, with what looks like another character online in the world before him. If people hitting Char Select (only) is corrupting in-game connections, we got bigger problems than before.
Stack (the same)
Vars:
Console
fwiw, this particular behavior is new (as in the last month or so), so it should be easy to track down what changed. Maybe it's the quick fix Lokked put in to try and clear reconnects? Could we be nuking a Lock before we're supposed to?
Which naturally brings me back to the question I've asked a dozen times; why are we not just killing all in-world connections when an Account requests a list of characters? I'm still not sure I understand why this is not the solution to all our reconnect issues.
Stack (the same)
Code: Select all
ntdll.dll!774c8277() Unknown
[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]
> WorldServer.exe!Mutex::ReadLock() Line 99 C++
WorldServer.exe!UDPServer::GetClient(unsigned int account_id) Line 194 C++
WorldServer.exe!ChunkServer::GetClient(unsigned int account_id) Line 278 C++
WorldServer.exe!UDPServer::KickDupeClients(unsigned int account_id, unsigned int connection_id) Line 258 C++
WorldServer.exe!Net::HandleCharacterSelected(std::shared_ptr<Client> & client, PacketStruct * packet_struct) Line 390 C++
WorldServer.exe!Net::Process() Line 159 C++
WorldServer.exe!main(int argc, char * * argv) Line 189 C++
WorldServer.exe!__tmainCRTStartup() Line 241 C
WorldServer.exe!mainCRTStartup() Line 164 C
kernel32.dll!75c2338a() Unknown
ntdll.dll!77459f72() Unknown
ntdll.dll!77459f45() Unknown
Code: Select all
- &lock 0x00000390 {Ptr=??? } _RTL_SRWLOCK *
Ptr <Unable to read memory>
start 1166794971 unsigned __int64
- this 0x00000370 {name=0x00000370 <Error reading characters of string.> lock={Ptr=??? } } Mutex *
- name 0x00000370 <Error reading characters of string.> char[32]
[0] <Unable to read memory>
[1] <Unable to read memory>
[2] <Unable to read memory>
[3] <Unable to read memory>
[4] <Unable to read memory>
[5] <Unable to read memory>
[6] <Unable to read memory>
[7] <Unable to read memory>
[8] <Unable to read memory>
[9] <Unable to read memory>
[10] <Unable to read memory>
[11] <Unable to read memory>
[12] <Unable to read memory>
[13] <Unable to read memory>
[14] <Unable to read memory>
[15] <Unable to read memory>
[16] <Unable to read memory>
[17] <Unable to read memory>
[18] <Unable to read memory>
[19] <Unable to read memory>
[20] <Unable to read memory>
[21] <Unable to read memory>
[22] <Unable to read memory>
[23] <Unable to read memory>
[24] <Unable to read memory>
[25] <Unable to read memory>
[26] <Unable to read memory>
[27] <Unable to read memory>
[28] <Unable to read memory>
[29] <Unable to read memory>
[30] <Unable to read memory>
[31] <Unable to read memory>
- lock {Ptr=??? } _RTL_SRWLOCK
Ptr <Unable to read memory>
Which naturally brings me back to the question I've asked a dozen times; why are we not just killing all in-world connections when an Account requests a list of characters? I'm still not sure I understand why this is not the solution to all our reconnect issues.
- John Adams
- Retired
- Posts: 4581
- Joined: Wed Aug 28, 2013 9:40 am
- Location: Phoenix, AZ.
- Contact:
Re: World Crash - KickDupeClients
Okay, this is worse than ever. I literally just restarted the world, Logged in fully as myself. Zarlore, god rest his soul, logs in right after me and I believe crashed out or something, because the second he hit character select again, the world crashed (above).
Could just be his character? I don't want to have to do a character wipe, I was waiting until Stats were done and 0.3 to begin, but if we're chasing our tails, we need to figure that out now. Nothing, not even bad data, should ever crash the world.
Could just be his character? I don't want to have to do a character wipe, I was waiting until Stats were done and 0.3 to begin, but if we're chasing our tails, we need to figure that out now. Nothing, not even bad data, should ever crash the world.
- Attachments
-
[The extension log has been deactivated and can no longer be displayed.]
Re: World Crash - KickDupeClients
what the... I just replied a few moments ago and it didnt show up in this thread
Re: World Crash - KickDupeClients
OK... here is what happened with login today:
I was able to get to Character select - OK
I was able to select any one of my characters - OK
But then I get "Connecting [character name] ... and I eventually time out and closed to desktop
I was able to get to Character select - OK
I was able to select any one of my characters - OK
But then I get "Connecting [character name] ... and I eventually time out and closed to desktop
- John Adams
- Retired
- Posts: 4581
- Joined: Wed Aug 28, 2013 9:40 am
- Location: Phoenix, AZ.
- Contact:
Re: World Crash - KickDupeClients
Glaxono, just for clarity, you are Zarlore, right? Does this happen with all the characters you created, or just one in particular?
Re: World Crash - KickDupeClients
My test characters are Zarlore, Earful, Littleman
They all did the same thing. I was just about to try a new account to see if it is just bugged up previous chracters
They all did the same thing. I was just about to try a new account to see if it is just bugged up previous chracters