Page 5 of 7

Re: Another crash

Posted: Fri Mar 26, 2010 5:40 pm
by John Adams
What is it with this crash?

Code: Select all

>	EQ2WorldDebug.exe!Spell::GetSpellData()  Line 290 + 0x3 bytes	C++
 	EQ2WorldDebug.exe!Player::ModifySpellStatus(Spell * spell=0x00000000, short value=-4, bool all_spells=false, unsigned short recast=0, bool modify_recast=true)  Line 1208 + 0x10 bytes	C++
 	EQ2WorldDebug.exe!SpellProcess::RemoveSpellFromQueue(Entity * caster=0x159f0710, bool hostile_only=true)  Line 442	C++
 	EQ2WorldDebug.exe!ZoneServer::KillSpawn(Spawn * dead=0x169abf08, Spawn * killer=0x159f0710, bool send_packet=true, unsigned char damage_type='', unsigned short kill_blow_type=0)  Line 2916	C++
 	EQ2WorldDebug.exe!Combat::KillSpawn(Spawn * dead=0x169abf08, Spawn * killer=0x159f0710, unsigned char damage_type='', unsigned short kill_blow_type=0)  Line 125	C++
 	EQ2WorldDebug.exe!Combat::DamageSpawn(Entity * attacker=0x159f0710, Spawn * victim=0x169abf08, unsigned char type='À', unsigned char damage_type='', unsigned int low_damage=1, unsigned int high_damage=5, const char * spell_name=0x00000000)  Line 176	C++
 	EQ2WorldDebug.exe!Combat::MeleeAttack(Entity * attacker=0x159f0710, Spawn * victim=0x169abf08, float distance=-4.3541746, bool primary=true)  Line 295	C++
 	EQ2WorldDebug.exe!Combat::Process()  Line 80	C++
 	EQ2WorldDebug.exe!CombatLoop(void * tmp=0x159f7020)  Line 3833 + 0xf bytes	C++
 	EQ2WorldDebug.exe!_callthreadstart()  Line 293 + 0xf bytes	C
 	EQ2WorldDebug.exe!_threadstart(void * ptd=0x159fbc28)  Line 277	C
 	kernel32.dll!77e64829() 	
 	[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]	
I think it's just this one player doing this over and over. Gonna leave Tess offline til Scat shows his hairy face around here tonight.

Re: Another crash

Posted: Fri Mar 26, 2010 7:27 pm
by John Adams
Ok, taking a stab at trying to at least understand why this is a crash. So I click on the first line in the trace, it takes me to:

Code: Select all

SpellData* Spell::GetSpellData(){
	return spell;
}
where "spell" has no value.

So I click on the second line in the crash, which takes me to:

Code: Select all

void Player::ModifySpellStatus(Spell* spell, sint16 value, bool all_spells, int16 recast, bool modify_recast){
	MSpellsBook.lock();
	vector<SpellBookEntry*>::iterator itr;
	SpellBookEntry* spell2 = 0;
	for(itr = spells.begin(); itr != spells.end(); itr++){
		spell2 = *itr;
		if(all_spells || (spell2->spell_id == spell->GetSpellData()->id)){			
			if(modify_recast){
				spell2->recast = recast;
				spell2->recast_available = Timer::GetCurrentTime2() + (recast*100);
			}
			if(modify_recast || spell2->recast_available <= Timer::GetCurrentTime2() || value == 4) //4 is the spell que value
				spell2->status += value;
			if(!all_spells)
				break;
		}
	}
	MSpellsBook.unlock();
}
Specifically this line:

Code: Select all

if(all_spells || (spell2->spell_id == spell->GetSpellData()->id)){
And when I highlight the last ->id, there is no value. Is this why it's crashing? Because there's a null value and C++ is too stupid to figure it out on it's own?

Or is the problem actually further down in the guts of this trace? I'll keep going.

Re: Another crash

Posted: Sat Mar 27, 2010 10:09 am
by Scatman
Did you update your server to my commit yesterday?

But yes it's because spell is a NULL value.

Re: Another crash

Posted: Sat Mar 27, 2010 11:20 am
by John Adams
Yep, all updated nice and proper. Waiting for it to happen again to see if it's a specific spell ID

Re: Another crash

Posted: Sat Mar 27, 2010 11:34 am
by Scatman
Compiling a fix.

Re: Another crash

Posted: Mon Mar 29, 2010 5:48 am
by John Adams
Crash

Code: Select all

>	EQ2WorldDebug.exe!std::_Debug_message(const wchar_t * message=0x00f5f6b8, const wchar_t * file=0x00f5e770, unsigned int line=256)  Line 24	C++
 	EQ2WorldDebug.exe!std::_Tree<std::_Tmap_traits<unsigned int,Skill *,std::less<unsigned int>,std::allocator<std::pair<unsigned int const ,Skill *> >,0> >::const_iterator::operator*()  Line 256 + 0x14 bytes	C++
 	EQ2WorldDebug.exe!std::_Tree<std::_Tmap_traits<unsigned int,Skill *,std::less<unsigned int>,std::allocator<std::pair<unsigned int const ,Skill *> >,0> >::iterator::operator*()  Line 466	C++
 	EQ2WorldDebug.exe!std::_Tree<std::_Tmap_traits<unsigned int,Skill *,std::less<unsigned int>,std::allocator<std::pair<unsigned int const ,Skill *> >,0> >::iterator::operator->()  Line 471	C++
 	EQ2WorldDebug.exe!PlayerSkillList::~PlayerSkillList()  Line 139 + 0x8 bytes	C++
 	EQ2WorldDebug.exe!Player::~Player()  Line 102 + 0x20a bytes	C++
 	EQ2WorldDebug.exe!Player::`scalar deleting destructor'()  + 0x14 bytes	C++
 	EQ2WorldDebug.exe!Client::~Client()  Line 180 + 0x32 bytes	C++
 	EQ2WorldDebug.exe!Client::`scalar deleting destructor'()  + 0x14 bytes	C++
 	EQ2WorldDebug.exe!IsPointer<Client *>::Delete(Client * key=0x15dc30e8)  Line 101 + 0x1c bytes	C++
 	EQ2WorldDebug.exe!HandleDeletes<Client *>::CheckDeletes(bool force=false)  Line 183 + 0x10 bytes	C++
 	EQ2WorldDebug.exe!MutexList<Client *>::update(bool force=false)  Line 262	C++
 	EQ2WorldDebug.exe!MutexList<Client *>::size(bool include_pending=true)  Line 133	C++
 	EQ2WorldDebug.exe!ZoneServer::ClientProcess()  Line 1846 + 0x10 bytes	C++
 	EQ2WorldDebug.exe!ZoneServer::Process()  Line 871	C++
 	EQ2WorldDebug.exe!ZoneLoop(void * tmp=0x15c6f068)  Line 3852 + 0x8 bytes	C++
 	EQ2WorldDebug.exe!_callthreadstart()  Line 293 + 0xf bytes	C
 	EQ2WorldDebug.exe!_threadstart(void * ptd=0x16280218)  Line 277	C
 	kernel32.dll!77e64829() 	
 	[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]	
This one displayed the funky C++ runtime dialog about an iteration unable to be interatededrrrsomethin

Re: Another crash

Posted: Tue Mar 30, 2010 7:59 am
by John Adams
Crash.

Code: Select all

>	EQ2WorldDebug.exe!operator delete(void * pUserData=0xfeeefeee)  Line 52 + 0x3 bytes	C++
 	EQ2WorldDebug.exe!Timer::`scalar deleting destructor'()  + 0x25 bytes	C++
 	EQ2WorldDebug.exe!SpellProcess::Process()  Line 135 + 0x37 bytes	C++
 	EQ2WorldDebug.exe!ZoneServer::Process()  Line 873	C++
 	EQ2WorldDebug.exe!ZoneLoop(void * tmp=0x21ddb098)  Line 3853 + 0x8 bytes	C++
 	EQ2WorldDebug.exe!_callthreadstart()  Line 293 + 0xf bytes	C
 	EQ2WorldDebug.exe!_threadstart(void * ptd=0x1a7a7028)  Line 277	C
 	kernel32.dll!77e64829() 	
 	[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]	

Re: Another crash

Posted: Mon Apr 05, 2010 11:47 am
by John Adams
Crash, but this one said "EQ2WorldDebug.exe has triggered a breakpoint", though there are no breakpoints set.

Code: Select all

>	EQ2WorldDebug.exe!strtoxl(localeinfo_struct * plocinfo=0x00000000, const char * nptr=0x00000000, const char * * endptr=0x00000000, int ibase=10, int flags=0)  Line 94 + 0x2f bytes	C++
 	EQ2WorldDebug.exe!strtol(const char * nptr=0x00000000, char * * endptr=0x00000000, int ibase=10)  Line 236 + 0x15 bytes	C++
 	EQ2WorldDebug.exe!atol(const char * nptr=0x00000000)  Line 56 + 0xd bytes	C
 	EQ2WorldDebug.exe!atoi(const char * nptr=0x00000000)  Line 100 + 0x9 bytes	C
 	EQ2WorldDebug.exe!WorldDatabase::loadCharacter(const char * ch_name=0x1825125c, unsigned int account_id=126, Client * client=0x167a1bf8)  Line 1752 + 0xf bytes	C++
 	EQ2WorldDebug.exe!Client::HandlePacket(EQApplicationPacket * app=0x1c113d90)  Line 662 + 0x20 bytes	C++
 	EQ2WorldDebug.exe!Client::Process(bool zone_process=false)  Line 1599 + 0xc bytes	C++
 	EQ2WorldDebug.exe!ClientList::Process()  Line 1734 + 0x10 bytes	C++
 	EQ2WorldDebug.exe!main(int argc=1, char * * argv=0x019d36b0)  Line 252	C++
 	EQ2WorldDebug.exe!__tmainCRTStartup()  Line 266 + 0x19 bytes	C
 	EQ2WorldDebug.exe!mainCRTStartup()  Line 182	C
 	kernel32.dll!77e6f23b() 	
 	[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]	

Edit: Hmm, tracing it back, this is where the break started I think:

Code: Select all

		client->GetPlayer()->GetPlayerInfo()->SetAccountAge(atoi(row[27]));
which happens to be a bug ElCapoTotal just fixed. I'll leave it for him to look over.

Scatman: This is fixed.

Re: Another crash

Posted: Mon Apr 05, 2010 12:14 pm
by John Adams
Oh, and get this... it was Sakurato that crashed me! Did he think to mention it? Hell no.


Btw potato, Sak's 'created_date' is all 0's. The updating of that field was implemented way after he became a char. Maybe that's the bug?

Code: Select all

DATEDIFF(CURDATE(), created_date) AS accage
results in NULL on him, but on anyone with data, it's a valid int.

Re: Another crash

Posted: Mon Apr 05, 2010 3:50 pm
by Zcoretri
It's really hard to tell if its crashed or not if you can't see console output, or lack thereof.

I never got in world, got stuck at loading.

Re: Another crash

Posted: Thu May 06, 2010 8:23 am
by John Adams
Crash writing to the log file.

Code: Select all

 	EQ2WorldDebug.exe!_output_l(_iobuf * stream=0x01203808, const char * format=0x0101d45c, localeinfo_struct * plocinfo=0x00000000, char * argptr=0x2281e2a0)  Line 1643 + 0x1f bytes	C++
 	EQ2WorldDebug.exe!vfprintf_helper(int (_iobuf *, const char *, localeinfo_struct *, char *)* outfn=0x007b6731, _iobuf * str=0x01203808, const char * format=0x0101d43c, localeinfo_struct * plocinfo=0x00000000, char * ap=0x2281e29c)  Line 69 + 0x13 bytes	C
 	EQ2WorldDebug.exe!vfprintf(_iobuf * str=0x01203808, const char * format=0x0101d43c, char * ap=0x2281e29c)  Line 117 + 0x18 bytes	C
 	EQ2WorldDebug.exe!EQEMuLog::write(EQEMuLog::LogIDs id=Error, const char * fmt=0x0101d43c, ...)  Line 139 + 0x1b bytes	C++
>	EQ2WorldDebug.exe!Mutex::lock()  Line 115 + 0x1e bytes	C++
 	EQ2WorldDebug.exe!EQStream::EQ2QueuePacket(EQ2Packet * app=0x2b4884a8, bool attempted_combine=false)  Line 555	C++
 	EQ2WorldDebug.exe!Client::QueuePacket(EQ2Packet * app=0x2b4884a8)  Line 194	C++
 	EQ2WorldDebug.exe!ZoneServer::HandleChatMessage(Client * client=0x203356a0, Spawn * from=0x20e07d98, const char * to=0x00000000, unsigned short channel=32, const char * message=0x2aa2a168, float distance=0.00000000, const char * channel_name=0x00000000, bool show_bubble=true)  Line 1942	C++
 	EQ2WorldDebug.exe!ZoneServer::HandleChatMessage(Spawn * from=0x20e07d98, const char * to=0x00000000, unsigned short channel=32, const char * message=0x2aa2a168, float distance=0.00000000, const char * channel_name=0x00000000, bool show_bubble=true)  Line 1954	C++
 	EQ2WorldDebug.exe!ZoneList::HandleGlobalChatMessage(Client * from=0x26ef49e0, char * to=0x00000000, unsigned short channel=32, const char * message=0x2aa2a168, const char * channel_name=0x00000000)  Line 447	C++
 	EQ2WorldDebug.exe!Commands::Process(unsigned int index=12, EQ2_16BitString * command_parms=0x2281fb24, Client * client=0x26ef49e0)  Line 1241	C++
 	EQ2WorldDebug.exe!Client::HandlePacket(EQApplicationPacket * app=0x2ac011b8)  Line 1108	C++
 	EQ2WorldDebug.exe!Client::Process(bool zone_process=true)  Line 1599 + 0xc bytes	C++
 	EQ2WorldDebug.exe!ZoneServer::ClientProcess()  Line 1882 + 0x18 bytes	C++
 	EQ2WorldDebug.exe!ZoneServer::Process()  Line 884	C++
 	EQ2WorldDebug.exe!ZoneLoop(void * tmp=0x27d59060)  Line 3878 + 0x8 bytes	C++
 	EQ2WorldDebug.exe!_callthreadstart()  Line 293 + 0xf bytes	C
 	EQ2WorldDebug.exe!_threadstart(void * ptd=0x262bb648)  Line 277	C
 	kernel32.dll!77e64829() 	
 	[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]	

Re: Another crash

Posted: Mon May 17, 2010 6:56 pm
by John Adams
Today EQ2Emulator.net lost it's MySQL instance for some reason (thank you LE for fixing that), but in the process, TessEQ2 crashed - we were on such a long straight uptime too! 1 Week 4 Days 10 Hours 35 Minutes, 79 connections!

Code: Select all

>	EQ2WorldDebug.exe!EQStream::GetState()  Line 273 + 0xf bytes	C++
 	EQ2WorldDebug.exe!EQStreamFactory::CheckTimeout(bool remove_all=false)  Line 256 + 0x8 bytes	C++
 	EQ2WorldDebug.exe!main(int argc=1, char * * argv=0x019d36c8)  Line 256	C++
 	EQ2WorldDebug.exe!__tmainCRTStartup()  Line 266 + 0x19 bytes	C
 	EQ2WorldDebug.exe!mainCRTStartup()  Line 182	C
 	kernel32.dll!77e6f23b() 	
 	[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]	

Re: Another crash

Posted: Tue May 18, 2010 10:12 am
by ZexisStryfe
you were going for the record, huh? :lol:

Re: Another crash

Posted: Tue May 18, 2010 6:37 pm
by John Adams
Going for 2 weeks, 100 connects, 10 simultaneous!

Re: Another crash

Posted: Wed May 19, 2010 12:04 am
by ilythor
I'd happily try to cut that number down to 9, yet i keep running face first into Hardware Hiccups. My hard drive released it's puff of magic uncorrupting smoke, and decided to randomly stop working. I had to get a new hard drive and I tried my hardest to recover a byte of it, but nothing. Eq2 has dissapeared. Again. I used Linux of a CD, downloaded all the system recovery tools I could grab my hands on, scoured all the Linux support Forums, all the terminal commands a Microsoft Developer (developers, developers, developers) could want to poke a stick at. Nada.

It's ok, upgrading internet the split second this modem decides to arrive. Don't get your hopes up though! Knowing my luck with Eq2.