PDA

View Full Version : Zone crash error in MobAI (GetNpCSpells) - possibly related to recent checkin...


l0stmancd
01-03-2011, 07:26 PM
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--

KLS
01-04-2011, 01:55 AM
I'll add a check to make sure the spell is valid for that failure condition. It sounds like there's some bad data in your DB.

And yes it's intended to be NULL by design.