mangosR2 / mangos

Production (stable and testing) versions of current mangosR2 v2 server (World of Warcraft: Wrath of the Lich King, 3.3.5a client).
http://mangosr2.2x2forum.com/
GNU General Public License v2.0
175 stars 77 forks source link

SpellAuraHolder issue #1416

Closed Undergarun closed 10 years ago

Undergarun commented 10 years ago

http://pastebin.com/KrKJ81WP http://pastebin.com/BsDnK1J3 http://pastebin.com/gQNVLPWT

Without drop usage LOCKED SpellAuraHolderPtr.

Need check those crashes before test Locked SpellAuraHolderPtr removal.

Undergarun commented 10 years ago

Second one spell issue:

http://pastebin.com/HKudEbFn

Both happens just once, but now with higher MapUpdate.Threads working, those weird crashes appears.

rsa commented 10 years ago

this crush with locked SpellAuraHolderPtr or with not locked (commit https://github.com/mangosR2/mangos/commit/12f12a52b324ff4c849bf8e166e703cb5365bad9)?

Undergarun commented 10 years ago

With locket SpellAuraHolderPtr!! Master version. No testing commit implemented.

rsa commented 10 years ago

please, link your string Unit.cpp:8200 with master line numbers. possible problem in constructions like SpellAuraHolderMap const& victimAuras = pVictim->GetSpellAuraHolderMap(); for (SpellAuraHolderMap::const_iterator itr = victimAuras.begin(); itr != victimAuras.end(); ++itr) without SmartPtr lock - after last lock changes requires more accurate operations.

Undergarun commented 10 years ago

// custom scripted mod from dummy AuraList const& mDummy = owner->GetAurasByType(SPELL_AURA_DUMMY); for(AuraList::const_iterator i = mDummy.begin(); i != mDummy.end(); ++i) { SpellEntry const _spell = (_i)->GetSpellProto(); //Fire and Brimstone if (spell->SpellFamilyName == SPELLFAMILY_WARLOCK && spell->GetSpellIconID() == 3173) { if (pVictim->HasAuraState(AURA_STATE_CONFLAGRATE) && (damageInfo->GetSpellProto()->SpellFamilyName == SPELLFAMILY_WARLOCK && damageInfo->GetSpellProto()->GetSpellFamilyFlags().test<CF_WARLOCK_INCINERATE, CF_WARLOCK_CHAOSBOLT>())) { DoneTotalMod = ((_i)->GetModifier()->m_amount+100.0f) / 100.0f; break; } } }

Undergarun commented 10 years ago

The only diff between master and my repo is Armory Support.

Undergarun commented 10 years ago

Other low chance crash in Auras

http://pastebin.com/C4GCAKcf

Undergarun commented 10 years ago

http://pastebin.com/zyK4e8Eb

Undergarun commented 10 years ago

No new crashes. Thank you.