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?

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.