PDA

View Full Version : Zone Crash Bug in newest CVS release


Xorith
11-18-2004, 03:54 AM
Hello, submitted this on the bugzilla on sourceforge.

I'll paste it here too, though.

When a player (well, in this case it was a GM) loots an NPC's corpse, the zone server dies.

Here's my core dump through gdb:

(gdb) bt
#0 0x0812cc9f in ItemCommonInst::GetAugmentItemID (this=0x0, slot=3 '\003') at Item.h:361

#1 0x0816cdb6 in Client::SendItemLink (this=0x89dd810, inst=0x8a15c78, send_to_all=true) at inventory.cpp:468
#2 0x080d13b5 in Corpse::LootItem (this=0x8a33990, client=0x89dd810, app=0x8a13f38) at PlayerCorpse.cpp:929
#3 0x081081c4 in Client::HandlePacket (this=0x89dd810, app=0x8a13f38) at client_packet.cpp:2070
#4 0x080ab4d1 in Client::Process (this=0x89dd810) at client_process.cpp:523
#5 0x0808e566 in EntityList::MobProcess (this=0x81d9960) at entity.cpp:326
#6 0x080b4f20 in main (argc=5, argv=0x1) at net.cpp:373
(gdb)
#0 0x0812cc9f in ItemCommonInst::GetAugmentItemID (this=0x0, slot=3 '\003') at Item.h:361
#1 0x0816cdb6 in Client::SendItemLink (this=0x89dd810, inst=0x8a15c78, send_to_all=true) at inventory.cpp:468
#2 0x080d13b5 in Corpse::LootItem (this=0x8a33990, client=0x89dd810, app=0x8a13f38) at PlayerCorpse.cpp:929
#3 0x081081c4 in Client::HandlePacket (this=0x89dd810, app=0x8a13f38) at client_packet.cpp:2070
#4 0x080ab4d1 in Client::Process (this=0x89dd810) at client_process.cpp:523
#5 0x0808e566 in EntityList::MobProcess (this=0x81d9960) at entity.cpp:326
#6 0x080b4f20 in main (argc=5, argv=0x1) at net.cpp:373
(gdb)


Notice frame #0 has this=0x0 (NULL). This is usually a "very bad thing" :P

Not sure, but could this also be linked to the Merchant issue where the merchants always say "This item is for display purposes only"...? I found out that the Merchant only says this when the item lookup in the DB fails.

-- Xorith

cavedude
11-18-2004, 05:50 AM
I can confirm. When I loot a NPC's corpse, the zone server doesn't crash, however the character can't do anything until they zone/camp.

Xorith
11-18-2004, 10:00 AM
My server does that when you interact with merchants.. Very very odd.

Does it make sense that having added columns to the items table (per a few posts around here) might break shared memory?

Doodman
11-18-2004, 10:55 AM
I don't think the NPC looting and the merchant one are the same but, but the NPC looting is fixed in dev CVS.. Should be on SF in a few hours.

But here is the patch to loottables.cpp:
*** loottables-orig.cpp Mon Nov 8 19:11:03 2004
--- loottables.cpp Thu Nov 18 16:39:27 2004
***************
*** 599,604 ****
--- 599,609 ----

item->item_id = item2->ItemNumber;
item->charges = charges;
+ item->aug1 = 0;
+ item->aug2 = 0;
+ item->aug3 = 0;
+ item->aug4 = 0;
+ item->aug5 = 0;
if (equipit) {
uint8 eslot = 0xFF;
//const Item_Struct* item2 = database.GetItem(item->item_id);


Sorry about that.. Thought I caught all ServerLootItem_Structs, but missed setting the augments to 0 on the NPC loot.

Xorith
11-18-2004, 01:11 PM
Thanks Doodman! Excellent response time. :) Even better than most commercial projects.