EQ2World.exe crash (rev 150)

Old bugs stored here for reference.
User avatar
John Adams
Retired
Posts: 9684
Joined: Thu Jul 26, 2007 6:27 am
EQ2Emu Server: EQ2Emulator Test Center
Characters: John
Location: Arizona
Contact:

Post by John Adams » Sat Oct 11, 2008 11:55 am

Excellent. I just woke up (spend til 4am playing Assassin's Creed hehe) so coffee and EQ2Emu testing are in the queue. I'll have it on TessEQ2Dev in 15 or so minutes.
Btw, not to derail, but are you ready for the FK work? I've been running live with these for a few weeks, and with no server code changes, they seem to be working ok.

LethalEncounter
Team: Zombie
Posts: 2717
Joined: Wed Jul 25, 2007 10:10 pm

Post by LethalEncounter » Sat Oct 11, 2008 11:58 am

Sure, as long as we are good to go with these changes we can implement it as well if you have them ready. Just PM the queries and I'll see how I can get the update server to use them.

User avatar
John Adams
Retired
Posts: 9684
Joined: Thu Jul 26, 2007 6:27 am
EQ2Emu Server: EQ2Emulator Test Center
Characters: John
Location: Arizona
Contact:

Post by John Adams » Sat Oct 11, 2008 1:19 pm

Ok, let me refresh the FK stuff with the new field changes after some testing, and I'll give you the queries.
Thanks!

User avatar
John Adams
Retired
Posts: 9684
Joined: Thu Jul 26, 2007 6:27 am
EQ2Emu Server: EQ2Emulator Test Center
Characters: John
Location: Arizona
Contact:

Post by John Adams » Sat Oct 11, 2008 2:03 pm

World still crashes when you leave the Source of Evil tutorial epic zone using the door widget.

Code: Select all

 	ntdll.dll!7c91b1fa() 	
 	[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]	
 	EQ2World.exe!std::_Vector_iterator<Spawn *,std::allocator<Spawn *> >::~_Vector_iterator<Spawn *,std::allocator<Spawn *> >()  + 0x14 bytes	C++
 	ntdll.dll!7c901046() 	
>	EQ2World.exe!Mutex::lock()  Line 116	C++
 	EQ2World.exe!EQStream::GetState()  Line 257 + 0x1a bytes	C++
 	EQ2World.exe!EQStream::CheckActive()  Line 270 + 0x14 bytes	C++
 	EQ2World.exe!EQStream::EQ2QueuePacket(EQ2Packet * app=0x0da5c6e8, bool attempted_combine=false)  Line 479 + 0x8 bytes	C++
 	EQ2World.exe!Client::QueuePacket(EQ2Packet * app=0x0da5c6e8)  Line 156	C++
 	EQ2World.exe!ZoneServer::CustomizeSpawn(Spawn * spawn=0x0bee0660, Client * client=0x09186b80)  Line 1329	C++
 	EQ2World.exe!ZoneServer::CheckSendSpawnToClient()  Line 508	C++
 	EQ2World.exe!ZoneServer::Process()  Line 624	C++
 	EQ2World.exe!ZoneLoop(void * tmp=0x0aa68070)  Line 2374 + 0x8 bytes	C++
 	EQ2World.exe!_callthreadstart()  Line 293 + 0xf bytes	C
 	EQ2World.exe!_threadstart(void * ptd=0x0aa68d30)  Line 277	C
 	kernel32.dll!7c80b713() 	

User avatar
John Adams
Retired
Posts: 9684
Joined: Thu Jul 26, 2007 6:27 am
EQ2Emu Server: EQ2Emulator Test Center
Characters: John
Location: Arizona
Contact:

Post by John Adams » Sat Oct 11, 2008 2:13 pm

I think this one was my fault. The door from SourceEvil to QueensColony had all 0's for destination coords. We probably shouldn't crash the world in this case, but fixing the destination coords no longer crashes the world.

LethalEncounter
Team: Zombie
Posts: 2717
Joined: Wed Jul 25, 2007 10:10 pm

Post by LethalEncounter » Sat Oct 11, 2008 2:35 pm

You sure that is the stack trace from the crash? That doesnt look like it crashed.

User avatar
John Adams
Retired
Posts: 9684
Joined: Thu Jul 26, 2007 6:27 am
EQ2Emu Server: EQ2Emulator Test Center
Characters: John
Location: Arizona
Contact:

Post by John Adams » Sat Oct 11, 2008 3:03 pm

Yep, it's what was in the window when I clicked Break. I can try it again, I believe it'll happen each time if this door is set to 0,0,0 zone coords.
If it matters, this break left me in the code for Mutex.h, I believe. I'll try it again.

User avatar
John Adams
Retired
Posts: 9684
Joined: Thu Jul 26, 2007 6:27 am
EQ2Emu Server: EQ2Emulator Test Center
Characters: John
Location: Arizona
Contact:

Post by John Adams » Sat Oct 11, 2008 3:10 pm

My favorite kind of bug. One that fixes itself and can no longer be reproduced. Put the zone coords back to 0's and no more crash. So whatever.
Apparently there was some other data bad in that row that got "fixed" when I updated the zone coords. Who knows. Moving on. :)

User avatar
John Adams
Retired
Posts: 9684
Joined: Thu Jul 26, 2007 6:27 am
EQ2Emu Server: EQ2Emulator Test Center
Characters: John
Location: Arizona
Contact:

Post by John Adams » Sun Oct 12, 2008 12:05 pm

Here's another odd call stack.

Code: Select all

 	ntdll.dll!7c91b1fa() 	
 	[Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]	
>	EQ2World.exe!_nh_malloc_dbg(unsigned int nSize=112, int nhFlag=0, int nBlockUse=1, const char * szFileName=0x00000000, int nLine=0)  Line 268 + 0x15 bytes	C++
 	EQ2World.exe!malloc(unsigned int nSize=7929924)  Line 154 + 0x15 bytes	C++
 	ntdll.dll!7c901046() 	
 	EQ2World.exe!Mutex::lock()  Line 116	C++
 	EQ2World.exe!EQStream::GetState()  Line 257 + 0x1a bytes	C++
 	EQ2World.exe!EQStream::CheckActive()  Line 270 + 0x14 bytes	C++
 	EQ2World.exe!EQStream::EQ2QueuePacket(EQ2Packet * app=0x0e816698, bool attempted_combine=false)  Line 479 + 0x8 bytes	C++
 	EQ2World.exe!Client::QueuePacket(EQ2Packet * app=0x0e816698)  Line 156	C++
 	EQ2World.exe!ZoneList::HandleGlobalChatMessage(Client * from=0x0d56be08, char * to=0x0e6a2658, unsigned short channel=28, char * message=0x0e66c106, char * channel_name=0x00000000)  Line 301	C++
 	EQ2World.exe!Commands::Process(unsigned int index=8, EQ2_16BitString * command_parms=0x1160fba4, Client * client=0x0d56be08)  Line 796 + 0x25 bytes	C++
 	EQ2World.exe!Client::HandlePacket(EQApplicationPacket * app=0x0c63aad8)  Line 852	C++
 	EQ2World.exe!Client::Process(bool zone_process=true)  Line 1150 + 0xc bytes	C++
 	EQ2World.exe!ZoneServer::ClientProcess()  Line 1052 + 0xa bytes	C++
 	EQ2World.exe!ZoneServer::Process()  Line 627	C++
 	EQ2World.exe!ZoneLoop(void * tmp=0x0d515b00)  Line 2374 + 0x8 bytes	C++
 	EQ2World.exe!_callthreadstart()  Line 293 + 0xf bytes	C
 	EQ2World.exe!_threadstart(void * ptd=0x0cfa9c80)  Line 277	C
 	kernel32.dll!7c80b713() 	
The server was running fine, player created and logged in, and simply did an /ooc and crashed the world.

LethalEncounter
Team: Zombie
Posts: 2717
Joined: Wed Jul 25, 2007 10:10 pm

Post by LethalEncounter » Sun Oct 12, 2008 2:53 pm

That was a /tell command, but could you try rebuilding the project? Something strange is going on with your server as your last two stacktraces happen when the server uses a lock, which does nothing but tell the server that it wants to lock the section of code. It shouldn't crash, unless of course you set an option to halt if the lock couldn't be obtained within an extremely short amount of time. Otherwise if it can't be obtained, it will just wait until it can.

User avatar
John Adams
Retired
Posts: 9684
Joined: Thu Jul 26, 2007 6:27 am
EQ2Emu Server: EQ2Emulator Test Center
Characters: John
Location: Arizona
Contact:

Post by John Adams » Sun Oct 12, 2008 10:55 pm

This is just the private SVN code, compiled Debug Win32, and run in debug mode. Traffic is forwarded to this WinXP machine while this server is running, and is the exact same config as the previous call stacks - with the exception that it is from a different SVN.
Whenever I get a new download of code, I usually wipe the old dir, copy the SVN files to the "working" dir and compile - so they should be a clean compile each time. The only setting in the project I ever change is where the EXE is to be created, which is my EQ2Emu folder with the other config files.
I'll mess with it again this week. Normally Dev is locked, so this was just my testing new char creations with the new field changes + FK work, and some noob snuck in and crashed me ;)

LethalEncounter
Team: Zombie
Posts: 2717
Joined: Wed Jul 25, 2007 10:10 pm

Post by LethalEncounter » Mon Oct 13, 2008 5:42 am

What exception is displayed when it crashes?

User avatar
John Adams
Retired
Posts: 9684
Joined: Thu Jul 26, 2007 6:27 am
EQ2Emu Server: EQ2Emulator Test Center
Characters: John
Location: Arizona
Contact:

Post by John Adams » Mon Oct 13, 2008 11:27 am

Mostly it is the 'memory cannot be "read"' message. Due to that critical section regkey you had me set, I also sometimes get the warning about the critical section after clearing the memory cannot be "read" message, though the server resets and runs fine.
Once in a great while, I'll get the plain old "EQ2World.exe has crashed" WER dialog on Windows, only if the debugger is not running.
With the newest code (your compile), I have not seen a crash yet, I'll let you know if it continues.

LethalEncounter
Team: Zombie
Posts: 2717
Joined: Wed Jul 25, 2007 10:10 pm

Post by LethalEncounter » Mon Oct 13, 2008 1:37 pm

John Adams wrote:Mostly it is the 'memory cannot be "read"' message. Due to that critical section regkey you had me set, I also sometimes get the warning about the critical section after clearing the memory cannot be "read" message, though the server resets and runs fine.
I would increase the value for that key then. The timeout should only occur if there is a problem, not during normal operations. If you continue after that exception is thrown it probably invalidates the lock and will cause further problems.

User avatar
John Adams
Retired
Posts: 9684
Joined: Thu Jul 26, 2007 6:27 am
EQ2Emu Server: EQ2Emulator Test Center
Characters: John
Location: Arizona
Contact:

Post by John Adams » Mon Oct 13, 2008 8:17 pm

Trapped another foul crash. Not sure what was going on, but some /repops. Things were getting really slow, and EQ2World.exe was at 50% (and 2 eq2 clients ate up the other 50% heh). So dunno if it was simply resources...

Code: Select all

>	EQ2World.exe!NPC_AI::Process(NPC * npc=0x06151a50)  Line 57 + 0x8 bytes	C++
 	EQ2World.exe!Combat::Process()  Line 55 + 0xf bytes	C++
 	EQ2World.exe!ZoneServer::Process()  Line 628	C++
 	EQ2World.exe!ZoneLoop(void * tmp=0x0696dd68)  Line 2374 + 0x8 bytes	C++
 	EQ2World.exe!_callthreadstart()  Line 293 + 0xf bytes	C
 	EQ2World.exe!_threadstart(void * ptd=0x0696e4f8)  Line 277	C
 	kernel32.dll!7c80b713() 	
 	[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]	

Locked

Who is online

Users browsing this forum: No registered users and 0 guests