Page 6 of 7

Re: Another crash

Posted: Wed May 26, 2010 1:16 pm
by John Adams
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.

Re: Another crash

Posted: Thu Jun 03, 2010 7:25 am
by John Adams
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

Re: Another crash

Posted: Thu Jun 03, 2010 2:39 pm
by Scatman
Wow that player reallllyyy wanted to get in. Seems to be almost every 3 seconds he was trying to get in...

Re: Another crash

Posted: Thu Jun 03, 2010 2:52 pm
by John Adams
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

Re: Another crash

Posted: Fri Jun 04, 2010 3:58 pm
by Eradani
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

Re: Another crash

Posted: Tue Jun 08, 2010 1:36 pm
by John Adams
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

Re: Another crash

Posted: Wed Jun 16, 2010 6:48 pm
by John Adams
[center]SCATMAN!!![/center]


...Tess is crashed, awaiting your diagnosis.


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

Re: Another crash

Posted: Thu Jun 17, 2010 11:42 am
by John Adams
24 hours now. Any interest in this crash?

Re: Another crash

Posted: Thu Jun 17, 2010 10:05 pm
by John Adams
Crashed again. Woot!

Re: Another crash

Posted: Fri Jun 18, 2010 11:54 pm
by Scatman
I tried RDing into Tess and it's refusing the connection.

Re: Another crash

Posted: Mon Jul 19, 2010 3:27 pm
by John Adams
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.

Re: Another crash

Posted: Mon Jul 19, 2010 4:04 pm
by Eradani
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.

Re: Another crash

Posted: Sun Jul 25, 2010 5:32 pm
by John Adams
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.

Re: Another crash

Posted: Mon Aug 02, 2010 5:34 pm
by Secrets
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

Re: Another crash

Posted: Sat Aug 21, 2010 1:45 pm
by John Adams
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.