|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Support::Windows Servers Support forum for Windows EQEMu users. |
10-13-2011, 12:49 PM
|
Hill Giant
|
|
Join Date: May 2010
Posts: 105
|
|
Crash zone.exe when clicking doors in HS and VP
As soon as anyone on the server with any client zones into howling stones and clicks on a door, it crashes the zone server and I have to restart the server. HALP! I have closed howling stones and VP until we get it fixed
|
10-13-2011, 03:31 PM
|
Demi-God
|
|
Join Date: Aug 2010
Posts: 1,742
|
|
Look in the zone logs to see if you can find any errors. You can also run the zone in the debugger to find out exactly where it is crashing.
|
03-01-2012, 10:52 AM
|
Fire Beetle
|
|
Join Date: Jun 2008
Location: UK
Posts: 13
|
|
Bodi Did you manage to find out what was causing this issue? As i'm having the same exact issue.
|
|
|
|
03-01-2012, 01:43 PM
|
Fire Beetle
|
|
Join Date: Jun 2008
Location: UK
Posts: 13
|
|
Having gone through this wonderful post
http://www.eqemulator.org/forums/sho...ighlight=debug
I was able to create a call stack from the zone debugging.
This was in Charasis (howlingstones) when clicking on the west top platform door.
Any help with this is Greatly Appreciated, Thanks.
Code:
> Zone.exe!EntityList::GetEntityCorpse(unsigned short id=553) Line 886 + 0x14 bytes C++
Zone.exe!EntityList::GetID(unsigned short get_id=553) Line 973 + 0xf bytes C++
Zone.exe!EntityList::GetFreeID() Line 1166 + 0xd bytes C++
Zone.exe!EntityList::AddCorpse(Corpse * corpse=0x0d7d1260, unsigned int in_id=4294967295) Line 591 + 0x8 bytes C++
Zone.exe!ZoneDatabase::LoadPlayerCorpse(unsigned int player_corpse_id=3516) Line 1743 C++
Zone.exe!ZoneDatabase::GetPlayerCorpseItemAt(unsigned int corpse_id=3516, unsigned short slotid=16) Line 1618 + 0xc bytes C++
Zone.exe!XS_Client_GetCorpseItemAt(interpreter * my_perl=0x02a71024, cv * cv=0x0b9284c4) Line 5113 + 0x13 bytes C++
perl510.dll!28047f15()
[Frames below may be incorrect and/or missing, no symbols loaded for perl510.dll]
perl510.dll!2806ef18()
perl510.dll!2802a27f()
perl510.dll!28029f9b()
Zone.exe!Embperl::dosub(const char * subname=0x0c542a08, const std::vector<std::basic_string<char,std::char_traits<char>,std::allocator<char> >,std::allocator<std::basic_string<char,std::char_traits<char>,std::allocator<char> > > > * args=[...](), int mode=6) Line 346 + 0x13 bytes C++
Zone.exe!PerlXSParser::SendCommands(const char * pkgprefix=0x0018f0d4, const char * event=0x008db610, unsigned int npcid=0, Mob * other=0x0c503fa0, Mob * mob=0x0c503fa0, ItemInst * iteminst=0x00000000) Line 159 + 0xe3 bytes C++
Zone.exe!PerlembParser::EventCommon(QuestEventID event=EVENT_CLICKDOOR, unsigned int objid=0, const char * data=0x0018f164, NPC * npcmob=0x00000000, ItemInst * iteminst=0x00000000, Mob * mob=0x0c503fa0, unsigned int extradata=0) Line 775 + 0x2c bytes C++
Zone.exe!PerlembParser::EventPlayer(QuestEventID evt=EVENT_CLICKDOOR, Client * client=0x0c503fa0, std::basic_string<char,std::char_traits<char>,std::allocator<char> > data="11 0", unsigned int extra_data=0) Line 802 C++
Zone.exe!QuestParserCollection::EventPlayer(QuestEventID evt=EVENT_CLICKDOOR, Client * client=0x0c503fa0, std::basic_string<char,std::char_traits<char>,std::allocator<char> > data="11 0", unsigned int extra_data=0) Line 161 C++
Zone.exe!Client::Handle_OP_ClickDoor(const EQApplicationPacket * app=0x0c5429d0) Line 5959 C++
Zone.exe!Client::HandlePacket(const EQApplicationPacket * app=0x0c5429d0) Line 456 C++
Zone.exe!Client::Process() Line 740 + 0xf bytes C++
Zone.exe!EntityList::MobProcess() Line 488 + 0x1a bytes C++
Zone.exe!main(int argc=3, char * * argv=0x02c31a80) Line 480 C++
Zone.exe!__tmainCRTStartup() Line 266 + 0x12 bytes C
kernel32.dll!75873677()
ntdll.dll!77b39f02()
ntdll.dll!77b39ed5()
Zone.exe!Parser::LoadScript(int npcid=-1961784568, const char * zone=0x8b500842, Mob * activater=0xe851d84d) Line 1071 + 0x27 bytes C++
4d8b0000()
where the > is it points to this
Code:
> if (iterator.GetData()->GetID() == id)
{
return iterator.GetData();
}
iterator.Advance();
}
return 0;
|
|
|
|
03-02-2012, 12:09 AM
|
Fire Beetle
|
|
Join Date: Jun 2008
Location: UK
Posts: 13
|
|
Fixed the issue after looking at the last entry in the call stack debugger log
Code:
Zone.exe!EntityList::GetEntityCorpse(unsigned short id=553) Line 886 + 0x14 bytes C++
I emptied the player corpses table, logged back into the test server and hey presto it's no longer crashing and giving the correct blue text
This is Locked!
|
09-15-2012, 07:11 PM
|
|
Discordant
|
|
Join Date: Sep 2009
Posts: 269
|
|
I'm getting this in various places. It can happen with doors or hailing certain NPC's and the debugging results all point to that GetEntityCorpse prototype.
Has anyone else dealt with this? I've cleared my player corpses table and it's good for a while but it crops back up.
|
09-23-2012, 12:26 AM
|
|
Developer
|
|
Join Date: Apr 2012
Location: North Carolina
Posts: 2,815
|
|
[bump] Before I started in on the inverted doors fix some time ago, I actually used to play...
I think I remember having this issue as well way back in April, but it seemed to go away when I started using perl 5.12 and made sure my plugins were up to date.
I haven't been charasis or veeshan's lately, so I'm not sure if that was an absolute fix or not. When I get my setup going 100% going again, I'll see if I can
get perl to act up there for me.
__________________
Uleat of Bertoxxulous
Compilin' Dirty
|
|
|
|
10-08-2012, 01:57 PM
|
Hill Giant
|
|
Join Date: Oct 2002
Location: Rockville, MD
Posts: 124
|
|
After having an issue related to this i found that the problem was in the
check_hasitem.pl plugin.
basically the reason clearing corpse table was causing it to work was because of these lines in that plugin:
Code:
#Check corpses
if ($body_count > 0) {
for ($i=1; $i<=$body_count; $i++) {
$body_id = $client->GetCorpseID($i);
for ($slot1=0; $slot1<=30; $slot1++) {
$itemid1 = $client->GetCorpseItemAt($body_id, $slot1);
if ($itemid1 == $itmchk) {
return 1;
}
}
for ($slot1=251; $slot1<=340; $slot1++) {
$itemid1 = $client->GetCorpseItemAt($body_id, $slot1);
if ($itemid1 == $itmchk) {
return 1;
}
}
}
}
removing this seemed to solve the issue - i noticed it when i realized that the crashes were only occuring in zones where player.pl governed the locking/unlocking of doors, it also solved a crash within my scripts for checking if players had completed their 1.0s before moving on to a new quest
(using quest::check_hasitem($client, $item_id); )
seems to have fixed it all up removing that block from the plugin. Hope this helps others experiencing it :P
__________________
Bront -Server Admin/Owner and Lead Quest Dev for Kildrukaun's Prophecy
http://kpemu.com/
|
|
|
|
10-12-2012, 08:21 AM
|
|
Discordant
|
|
Join Date: Sep 2009
Posts: 269
|
|
I ended up disabling shadowrest and reducing corpse times as a band-aid until I could dig into it further.
This was very helpful, thanks.
|
|
|
|
10-12-2012, 08:44 AM
|
|
Developer
|
|
Join Date: Aug 2006
Location: USA
Posts: 5,946
|
|
Maybe a sanity check is needed for "while(1)" ?
Code:
int16 EntityList::GetFreeID()
{
if(last_insert_id > 1500)
last_insert_id = 0;
int16 getid=last_insert_id;
while(1)
{
getid++;
if (GetID(getid) == 0)
{
last_insert_id = getid;
return getid;
}
}
}
Seems like that could easily cause an infinite loop if last_insert_id is really high to begin with. Either way, it seems like a bad idea to use "while(1)" to me.
Here is EntityList::GetID() for reference:
Code:
Entity* EntityList::GetID(int16 get_id)
{
Entity* ent=0;
if((ent=entity_list.GetEntityMob(get_id))!=0)
return ent;
else if((ent=entity_list.GetEntityDoor(get_id))!=0)
return ent;
else if((ent=entity_list.GetEntityCorpse(get_id))!=0)
return ent;
// else if((ent=entity_list.GetEntityGroup(get_id))!=0)
// return ent;
else if((ent=entity_list.GetEntityObject(get_id))!=0)
return ent;
else if((ent=entity_list.GetEntityTrap(get_id))!=0)
return ent;
else if((ent=entity_list.GetEntityBeacon(get_id))!=0)
return ent;
else
return 0;
}
Last edited by trevius; 10-12-2012 at 08:52 AM..
|
|
|
|
Posting Rules
|
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts
HTML code is Off
|
|
|
All times are GMT -4. The time now is 09:07 AM.
|
|
|
|
|
|
|
|
|
|
|
|
|