View Single Post
  #1  
Old 01-03-2011, 07:26 PM
l0stmancd
Fire Beetle
 
Join Date: Apr 2005
Posts: 23
Default Zone crash error in MobAI (GetNpCSpells) - possibly related to recent checkin...

Hey folks. I posted this in the windows server support forum as opposed bug report forum. My apologies.

Relevant information pasted below.

Original Link: http://www.eqemulator.org/forums/showthread.php?t=32828

--snip--

Was doing some work on a small modification today and found that I was having some zones crash whenever I attempted to zone into them. I built off an unmodified trunk and found it was still occuring.

Access Violation Exception in -some- zones at MobAI.cpp Line 2335 specifically: "npc_spells_cache[iDBSpellsID]->entries[j].resist_adjust = row[7] ? atoi(row[7]) : spells[npc_spells_cache[iDBSpellsID]->entries[j].spellid].ResistDiff;"

I had added the required sql for a change one of the devs put in and it added a null column called resist_adjust to the npc_sells_entries table. This line checks to see if this column has any data in it for a particular row and, if not, attempts to use the spells resist difference. Fails for me in Everfrost and Rivervale. Does not fail in Halas.

I saw the "Bugs" forum but given the statement about "true bugs" I figured I this would be the best place to post this. If it should have been posted elsewhere, please let me know.
Reply With Quote Multi-Quote This Message Quick reply to this message

--snip--

--snip--
trevius
Developer

I haven't looked at this much, but I assume it should be set to NOT NULL and have a default of 0.

Though, not sure about that based on this line from mob.h:

Code:

int32* oSpellWillFinish = 0, int32 item_slot = 0xFFFFFFFF, uint32 timer = 0xFFFFFFFF, uint32 timer_duration = 0, uint32 type = 0, sint16 *resist_adjust = NULL);

__________________
Trevazar/Trevius Owner of: Storm Haven
Everquest Emulator FAQ (Frequently Asked Questions) - Read It!
Reply With Quote Multi-Quote This Message Quick reply to this message

--snip--

--snip--
l0stmancd

After noting the defect, I didn't stay too long in this spot... but... I -think- this part of the line is what is actually failing "spells[npc_spells_cache[iDBSpellsID]->entries[j].spellid].ResistDiff"

I put a watch on the "row[7]" and it returned 0 so it should have flipped to the section listed right above here and failed.

Honestly do not know what should be happening here but I assume KimmySprite should be able to see it pretty quickly. This was added in rev 1794 on 12/31/2010.

--snip--
Reply With Quote