Another crash

Old bugs stored here for reference.
Locked
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:

Re: Another crash

Post by John Adams » Wed May 26, 2010 1:16 pm

Tess is crashed. Care to take a look?

Appears that LE might have updated opcodes, since I see an error I haven't seen before:

Code: Select all

[20100526 09:55:23] [Error] Incompatible version: 1027

Stack:

Code: Select all

>	EQ2WorldDebug.exe!ZoneServer::SendSpawnChanges()  Line 1124 + 0x8 bytes	C++
 	EQ2WorldDebug.exe!ZoneServer::SpawnProcess()  Line 778	C++
 	EQ2WorldDebug.exe!SpawnLoop(void * tmp=0x16978138)  Line 3901 + 0x8 bytes	C++
 	EQ2WorldDebug.exe!_callthreadstart()  Line 293 + 0xf bytes	C
 	EQ2WorldDebug.exe!_threadstart(void * ptd=0x20e3add8)  Line 277	C
 	kernel32.dll!77e64829() 	
 	[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]	
I haven't updated code in a while, so if it needs to be recompiled, go for it.

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:

Re: Another crash

Post by John Adams » Thu Jun 03, 2010 7:25 am

TessEQ2 appears to be fooked yet again. Now all of a sudden, every day there's a problem. Was running fine for days/weeks with almost 100 connects before something changed this last week.

I need this looked into asap. Symptom is, a zone is started, won't shut down, and clients that connect are not being disconnected.

Console:

Code: Select all

*** Processing Future packet: Seq=10543

*** Processing Future packet: Seq=10544

*** Processing Future packet: Seq=10545

[20100602 10:55:29] [Status] AddAuth: 5848 Key: 1275501329
Timeout up!, state=0
[20100602 10:55:33] [Status] AddAuth: 5848 Key: 1275501333
[20100602 10:55:37] [Status] AddAuth: 5848 Key: 1275501337
Timeout up!, state=2
[20100602 10:55:41] [Status] AddAuth: 5848 Key: 1275501341
Timeout up!, state=2
Removing connection
[20100602 10:55:50] [Status] AddAuth: 5848 Key: 1275501350
[20100602 10:55:53] [Status] AddAuth: 5848 Key: 1275501353
[20100602 10:56:09] [Status] AddAuth: 5848 Key: 1275501369
[20100602 10:56:34] [Status] AddAuth: 5848 Key: 1275501394
Delete char request: 5848 3729
Delete char request: 5848 3729
[20100602 10:57:27] [Debug] Setting New Character Starting Zone to 'OutpostOverl
ord' from player choice.
[20100602 10:57:47] [Status] AddAuth: 5848 Key: 1275501467
[20100602 10:57:55] [Status] AddAuth: 5848 Key: 1275501475
[20100602 10:58:00] [Status] AddAuth: 5848 Key: 1275501480
[20100602 10:58:04] [Status] AddAuth: 5848 Key: 1275501484
[20100602 10:58:07] [Status] AddAuth: 5848 Key: 1275501487
[20100602 10:58:11] [Status] AddAuth: 5848 Key: 1275501491
[20100602 10:58:13] [Status] AddAuth: 5848 Key: 1275501493
[20100602 10:58:16] [Status] AddAuth: 5848 Key: 1275501496
[20100602 10:58:20] [Status] AddAuth: 5848 Key: 1275501500
[20100602 10:58:53] [Status] AddAuth: 5848 Key: 1275501533
Delete char request: 5848 3730
Delete char request: 5848 3730
[20100602 12:02:26] [Debug] Setting New Character Starting Zone to 'QueensColony
' from player choice.
[20100602 12:02:27] [Status] AddAuth: 5848 Key: 1275505347
[20100602 12:02:50] [Status] AddAuth: 5848 Key: 1275505370
[20100602 12:02:58] [Status] AddAuth: 5848 Key: 1275505378
[20100602 12:03:06] [Status] AddAuth: 5848 Key: 1275505386
[20100602 12:03:12] [Status] AddAuth: 5848 Key: 1275505392
[20100602 12:03:15] [Status] AddAuth: 5848 Key: 1275505395
[20100602 12:05:38] [Status] AddAuth: 5848 Key: 1275505538
[20100602 12:05:42] [Status] AddAuth: 5848 Key: 1275505542
[20100602 16:48:23] [Status] AddAuth: 4117 Key: 1275522503
[20100602 16:48:25] [Status] New client from ip: 206.47.201.186 port: 45793
[20100602 16:48:25] [Status] Adding new client...
[20100602 16:48:26] [Status] New client from ip: 206.47.201.186 port: 45793
[20100602 16:48:27] [Status] World: Removing client from ip: 206.47.201.186 port
: 45793
Removing connection
[20100603 03:52:03] [Status] AddAuth: 5370 Key: 1275562323
[20100603 03:52:04] [Status] New client from ip: 96.31.200.245 port: 3738
[20100603 03:52:04] [Status] Adding new client...
[20100603 03:52:05] [Status] ZoneAuth: Access Key: 1275562323, Character Name: K
amm, Account ID: 5370
I'm really pissed that we somehow lost our ability to crash/debug these deadlocks. Not sure why that had to happen, but it was before LE left the project so I cannot even blame Scatman. :D

User avatar
Scatman
Retired
Posts: 1688
Joined: Wed Apr 16, 2008 5:44 am
EQ2Emu Server: Scatman's Word
Characters: Scatman
Location: New Jersey

Re: Another crash

Post by Scatman » Thu Jun 03, 2010 2:39 pm

Wow that player reallllyyy wanted to get in. Seems to be almost every 3 seconds he was trying to get in...

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:

Re: Another crash

Post by John Adams » Thu Jun 03, 2010 2:52 pm

Well that was a problem I reported to LE, because I don't think the LoginServer can process connections that fast. So I thought it was some dickhead hacking something, but LE never looked into it.

And, I think I just kicked you off RDP. Sorry Scat :D

User avatar
Eradani
Posts: 192
Joined: Wed May 05, 2010 6:25 am
Location: Saskatchewan

Re: Another crash

Post by Eradani » Fri Jun 04, 2010 3:58 pm

finally got my client unpatched and got online.
- crashed theshadowsden
- had screwup on tess and now i'm not disconnecting so can't log in again
my client version: 12682L, 2016/06/06
last one that will run on XP cause i'm just a stick-in-the-mud

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:

Re: Another crash

Post by John Adams » Tue Jun 08, 2010 1:36 pm

Minuss,

Dev server is back up in debug. Can you re-produce the steps you had the crash just now? (Got Signal 11) so I can get a trace for the devs?

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:

Re: Another crash

Post by John Adams » Wed Jun 16, 2010 6:48 pm

[center]SCATMAN!!![/center]


...Tess is crashed, awaiting your diagnosis.


There is something so f'n wrong with our locks... unbelievable.

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:

Re: Another crash

Post by John Adams » Thu Jun 17, 2010 11:42 am

24 hours now. Any interest in this crash?

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:

Re: Another crash

Post by John Adams » Thu Jun 17, 2010 10:05 pm

Crashed again. Woot!

User avatar
Scatman
Retired
Posts: 1688
Joined: Wed Apr 16, 2008 5:44 am
EQ2Emu Server: Scatman's Word
Characters: Scatman
Location: New Jersey

Re: Another crash

Post by Scatman » Fri Jun 18, 2010 11:54 pm

I tried RDing into Tess and it's refusing the connection.

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:

Re: Another crash

Post by John Adams » Mon Jul 19, 2010 3:27 pm

Ok Scatman-doo... I back-revved Tess to sometime around May 14th I think, which was the last time she ran for a week straight without crashing. Now, she's been running for over 2 weeks and had 35 or so connections without an issue.

This tells me, something that changed between May 14th and (whenever our last commit was) is what caused the problems. I'd like to see if one of you savvy devs would get on that, see if you can find out what changed to cause the problem. Lots of bug fixes happened I think, but one of them screwed the pooch.

See what you can find, please.
John Adams
EQ2Emulator - Project Ghost
"Everything should work now, except the stuff that doesn't" ~Xinux

User avatar
Eradani
Posts: 192
Joined: Wed May 05, 2010 6:25 am
Location: Saskatchewan

Re: Another crash

Post by Eradani » Mon Jul 19, 2010 4:04 pm

One thing I noticed is the server tends to die after I've died from a fall. I remembered seeing this as fixed in the changelog somewhere and went found it.

Idk if this is much help as this was before May 14, but it's still crashing from that.

==3/28/2010:
elcapototal: fixed bug where the server would crash if you killed yourself from a high fall.
my client version: 12682L, 2016/06/06
last one that will run on XP cause i'm just a stick-in-the-mud

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:

Re: Another crash

Post by John Adams » Sun Jul 25, 2010 5:32 pm

New record without crashing ;)
Server Running For: 3 Weeks 1 Day 20 Hours 36 Minutes
Connections Since Startup: 47
Total Zones Loaded Now: 1
Notice the Stats showed total running zones at 1, but World console read 4. Maybe there's something buggy there.

Code: Select all

>	EQ2WorldDebug.exe!operator delete(void * pUserData=0xcdcdcdcd)  Line 52 + 0x3 bytes	C++
 	EQ2WorldDebug.exe!std::allocator<char>::deallocate(char * _Ptr=0xcdcdcdcd, unsigned int __formal=713)  Line 140 + 0x9 bytes	C++
 	EQ2WorldDebug.exe!std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Tidy(bool _Built=true, unsigned int _Newsize=0)  Line 2158	C++
 	EQ2WorldDebug.exe!std::basic_string<char,std::char_traits<char>,std::allocator<char> >::~basic_string<char,std::char_traits<char>,std::allocator<char> >()  Line 907	C++
 	EQ2WorldDebug.exe!std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *>::~pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *>()  + 0x14 bytes	C++
 	EQ2WorldDebug.exe!std::_Tree_nod<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >::_Node::~_Node()  + 0x17 bytes	C++
 	EQ2WorldDebug.exe!std::_Tree_nod<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >::_Node::`scalar deleting destructor'()  + 0x14 bytes	C++
 	EQ2WorldDebug.exe!std::_Destroy<std::_Tree_nod<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >::_Node>(std::_Tree_nod<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >::_Node * _Ptr=0x32c1af48)  Line 60	C++
 	EQ2WorldDebug.exe!std::allocator<std::_Tree_nod<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >::_Node>::destroy(std::_Tree_nod<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >::_Node * _Ptr=0x32c1af48)  Line 160 + 0x9 bytes	C++
 	EQ2WorldDebug.exe!std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >::_Erase(std::_Tree_nod<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >::_Node * _Rootnode=0x32c1af48)  Line 1172	C++
 	EQ2WorldDebug.exe!std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >::_Erase(std::_Tree_nod<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >::_Node * _Rootnode=0x1bc07208)  Line 1170	C++
 	EQ2WorldDebug.exe!std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >::clear()  Line 972	C++
 	EQ2WorldDebug.exe!std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >::erase(std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >::const_iterator _First=("guild",0x3950fa98 {is_set=true if_not_set=true if_set=true ...}), std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >::const_iterator _Last=(<Bad Ptr>,0xcdcdcdcd {is_set=??? if_not_set=??? if_set=??? ...}))  Line 938	C++
 	EQ2WorldDebug.exe!std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >::_Tidy()  Line 1421 + 0x95 bytes	C++
 	EQ2WorldDebug.exe!std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >::~_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >()  Line 541	C++
 	EQ2WorldDebug.exe!std::map<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> > >::~map<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> > >()  + 0x14 bytes	C++
 	EQ2WorldDebug.exe!PacketStruct::~PacketStruct()  Line 324 + 0x48 bytes	C++
 	EQ2WorldDebug.exe!PacketStruct::`scalar deleting destructor'()  + 0x14 bytes	C++
 	EQ2WorldDebug.exe!Spawn::spawn_serialize(Spawn * spawn=0x370f7710, unsigned short version=1008)  Line 267 + 0x31 bytes	C++
 	EQ2WorldDebug.exe!NPC::serialize(Spawn * player=0x370f7710, unsigned short version=1008)  Line 137	C++
 	EQ2WorldDebug.exe!ZoneServer::CustomizeSpawn(Spawn * spawn=0x19826018, Client * client=0x36700c08)  Line 2030 + 0x22 bytes	C++
 	EQ2WorldDebug.exe!ZoneServer::CheckSendSpawnToClient(Client * client=0x36700c08, bool initial_login=false)  Line 721	C++
 	EQ2WorldDebug.exe!ZoneServer::CheckSendSpawnToClient()  Line 736	C++
 	EQ2WorldDebug.exe!ZoneServer::SpawnProcess()  Line 786	C++
 	EQ2WorldDebug.exe!SpawnLoop(void * tmp=0x37559150)  Line 3901 + 0x8 bytes	C++
 	EQ2WorldDebug.exe!_callthreadstart()  Line 293 + 0xf bytes	C
 	EQ2WorldDebug.exe!_threadstart(void * ptd=0x351ec160)  Line 277	C
 	kernel32.dll!77e64829() 	
 	[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]	
This is with May 14th'ish code, so it might not line up with current source, but something you can look at to see if it's obvious.

There was 1 client and 4 zones active.

Secrets
Retired
Posts: 40
Joined: Wed Jul 25, 2007 2:51 pm
Location: Sleeping

Re: Another crash

Post by Secrets » Mon Aug 02, 2010 5:34 pm

John Adams wrote:New record without crashing ;)
Server Running For: 3 Weeks 1 Day 20 Hours 36 Minutes
Connections Since Startup: 47
Total Zones Loaded Now: 1
Notice the Stats showed total running zones at 1, but World console read 4. Maybe there's something buggy there.

Code: Select all

>	EQ2WorldDebug.exe!operator delete(void * pUserData=0xcdcdcdcd)  Line 52 + 0x3 bytes	C++
 	EQ2WorldDebug.exe!std::allocator<char>::deallocate(char * _Ptr=0xcdcdcdcd, unsigned int __formal=713)  Line 140 + 0x9 bytes	C++
 	EQ2WorldDebug.exe!std::basic_string<char,std::char_traits<char>,std::allocator<char> >::_Tidy(bool _Built=true, unsigned int _Newsize=0)  Line 2158	C++
 	EQ2WorldDebug.exe!std::basic_string<char,std::char_traits<char>,std::allocator<char> >::~basic_string<char,std::char_traits<char>,std::allocator<char> >()  Line 907	C++
 	EQ2WorldDebug.exe!std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *>::~pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *>()  + 0x14 bytes	C++
 	EQ2WorldDebug.exe!std::_Tree_nod<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >::_Node::~_Node()  + 0x17 bytes	C++
 	EQ2WorldDebug.exe!std::_Tree_nod<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >::_Node::`scalar deleting destructor'()  + 0x14 bytes	C++
 	EQ2WorldDebug.exe!std::_Destroy<std::_Tree_nod<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >::_Node>(std::_Tree_nod<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >::_Node * _Ptr=0x32c1af48)  Line 60	C++
 	EQ2WorldDebug.exe!std::allocator<std::_Tree_nod<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >::_Node>::destroy(std::_Tree_nod<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >::_Node * _Ptr=0x32c1af48)  Line 160 + 0x9 bytes	C++
 	EQ2WorldDebug.exe!std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >::_Erase(std::_Tree_nod<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >::_Node * _Rootnode=0x32c1af48)  Line 1172	C++
 	EQ2WorldDebug.exe!std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >::_Erase(std::_Tree_nod<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >::_Node * _Rootnode=0x1bc07208)  Line 1170	C++
 	EQ2WorldDebug.exe!std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >::clear()  Line 972	C++
 	EQ2WorldDebug.exe!std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >::erase(std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >::const_iterator _First=("guild",0x3950fa98 {is_set=true if_not_set=true if_set=true ...}), std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >::const_iterator _Last=(<Bad Ptr>,0xcdcdcdcd {is_set=??? if_not_set=??? if_set=??? ...}))  Line 938	C++
 	EQ2WorldDebug.exe!std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >::_Tidy()  Line 1421 + 0x95 bytes	C++
 	EQ2WorldDebug.exe!std::_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >::~_Tree<std::_Tmap_traits<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> >,0> >()  Line 541	C++
 	EQ2WorldDebug.exe!std::map<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> > >::~map<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,DataStruct *,std::less<std::basic_string<char,std::char_traits<char>,std::allocator<char> > >,std::allocator<std::pair<std::basic_string<char,std::char_traits<char>,std::allocator<char> > const ,DataStruct *> > >()  + 0x14 bytes	C++
 	EQ2WorldDebug.exe!PacketStruct::~PacketStruct()  Line 324 + 0x48 bytes	C++
 	EQ2WorldDebug.exe!PacketStruct::`scalar deleting destructor'()  + 0x14 bytes	C++
 	EQ2WorldDebug.exe!Spawn::spawn_serialize(Spawn * spawn=0x370f7710, unsigned short version=1008)  Line 267 + 0x31 bytes	C++
 	EQ2WorldDebug.exe!NPC::serialize(Spawn * player=0x370f7710, unsigned short version=1008)  Line 137	C++
 	EQ2WorldDebug.exe!ZoneServer::CustomizeSpawn(Spawn * spawn=0x19826018, Client * client=0x36700c08)  Line 2030 + 0x22 bytes	C++
 	EQ2WorldDebug.exe!ZoneServer::CheckSendSpawnToClient(Client * client=0x36700c08, bool initial_login=false)  Line 721	C++
 	EQ2WorldDebug.exe!ZoneServer::CheckSendSpawnToClient()  Line 736	C++
 	EQ2WorldDebug.exe!ZoneServer::SpawnProcess()  Line 786	C++
 	EQ2WorldDebug.exe!SpawnLoop(void * tmp=0x37559150)  Line 3901 + 0x8 bytes	C++
 	EQ2WorldDebug.exe!_callthreadstart()  Line 293 + 0xf bytes	C
 	EQ2WorldDebug.exe!_threadstart(void * ptd=0x351ec160)  Line 277	C
 	kernel32.dll!77e64829() 	
 	[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]	
This is with May 14th'ish code, so it might not line up with current source, but something you can look at to see if it's obvious.

There was 1 client and 4 zones active.
I'll take a look at source and fix this. Shouldn't be too hard if it's a 0xcd error :P

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:

Re: Another crash

Post by John Adams » Sat Aug 21, 2010 1:45 pm

Another crash, when I targetted a "?" spawn that was currently set as an Object:

Code: Select all

   0: 01 00 0C 00 63 6F 6D 62 - 69 6E 65 20 73 61 76 65  | ....combine save
   0: 09 01 00 00                                        | ....
   0: 25 00 01 00 30                                     | %...0

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb3bfeb70 (LWP 13601)]
Spawn::GetSpawnScript (this=0xf49dc40) at Spawn.cpp:694
694             if(spawn_script.length() > 0)
(gdb) bt
#0  Spawn::GetSpawnScript (this=0xf49dc40) at Spawn.cpp:694
#1  0x081bc4f6 in ZoneServer::CallSpawnScript (this=0xb4407d18, npc=0xf49dc40,
    type=3 '\003', spawn=0xb4400c00, message=0x0) at zoneserver.cpp:1626
#2  0x0812a06c in Client::HandlePacket (this=0xb4400658, app=0xfcc8c38)
    at client.cpp:1086
#3  0x0812c0e7 in Client::Process (this=0xb4400658, zone_process=true)
    at client.cpp:1600
#4  0x081da19f in ZoneServer::ClientProcess (this=0xb4407d18)
    at zoneserver.cpp:1882
#5  0x081dd521 in ZoneServer::Process (this=0xb4407d18) at zoneserver.cpp:883
#6  0x081dd9ae in ZoneLoop (tmp=0xb4407d18) at zoneserver.cpp:3878
#7  0xb7c6880e in start_thread () from /lib/tls/i686/cmov/libpthread.so.0
#8  0xb7beaa0e in clone () from /lib/tls/i686/cmov/libc.so.6
I was target, /spawn combine 20, /spawn combine save, and there were a few stragglers that I targetted and tried /spawn remove 1, when the world crashed.

FYI, table `spawn_scripts` is empty - no scripts linked to spawns on Dev.



EDIT: Hmm, after re-launching the world and logging back in, the spawn I was trying to delete was gone already... like it had been picked up by the /spawn combine 20, but after saving, never depopped. The bug in fact might be that the spawn was in fact depopped, but never left the client? Dunno. Either way, we should not crash - ever ;)

Someone please have a look.

Locked

Who is online

Users browsing this forum: No registered users and 0 guests