Jump to content

crash on mangos-worldd: ../../../src/game/Object.h:485:


Recommended Posts

Posted

rev. 10704

mangos-worldd: ../../../src/game/Object.h:485: Map* WorldObject::GetMap() const: Assertion `"m_currMap" && 0' failed.
../../../src/game/Object.h:485: Error: Assertion in GetMap failed: m_currMap
Stack Trace:
/home/server/bin/mangos-worldd(_ZN8AreaAura6UpdateEj+0xac7) [0x766c77]
/home/server/bin/mangos-worldd(_ZN15SpellAuraHolder6UpdateEj+0x3a) [0x75b5da]
/home/server/bin/mangos-worldd(_ZN4Unit13_UpdateSpellsEj+0x8c) [0x7d7c1c]
/home/server/bin/mangos-worldd(_ZN4Unit6UpdateEj+0x36) [0x7e7576]
/home/server/bin/mangos-worldd(_ZN6Player6UpdateEj+0x5d) [0x72a20d]
/home/server/bin/mangos-worldd(_ZN3Map6UpdateERKj+0x78) [0x663ed8]
/home/server/bin/mangos-worldd(_ZN10MapManager6UpdateEj+0x6b) [0x66daeb]
/home/server/bin/mangos-worldd(_ZN5World6UpdateEj+0x228) [0x80be28]
/home/server/bin/mangos-worldd(_ZN13WorldRunnable3runEv+0x1c1) [0x510d51]
/home/server/bin/mangos-worldd(_ZN9ACE_Based6Thread10ThreadTaskEPv+0xa) [0x8b5f1a]
/lib/libpthread.so.0 [0x7ffff60cfa04]
/lib/libc.so.6(clone+0x6d) [0x7ffff568dd4d]
[Thread 0x7ffff4d4e910 (LWP 7709) terminado]
[New Thread 0x7ffff4d4e910 (LWP 7710)]
[New Thread 0x7ffff4340910 (LWP 7711)]
[New Thread 0x7ffff3b3f910 (LWP 7712)]
[New Thread 0x7fff901fd910 (LWP 7792)]
[New Thread 0x7fff8f9fc910 (LWP 7793)]
[New Thread 0x7fff8f1fb910 (LWP 7794)]
[New Thread 0x7fff8e9fa910 (LWP 7795)]
[New Thread 0x7fff8e0f9910 (LWP 7796)]
[New Thread 0x7fff8d8f8910 (LWP 7797)]
[New Thread 0x7fff8d0f7910 (LWP 7798)]
[New Thread 0x7fff8c8f6910 (LWP 7799)]
[New Thread 0x7fff8c0f5910 (LWP 7800)]
[New Thread 0x7fff8b8f4910 (LWP 7801)]
[New Thread 0x7fff8b0f3910 (LWP 7802)]
[New Thread 0x7fff8a8f2910 (LWP 7803)]



Program received signal SIGABRT, Aborted.
[Change to Thread 0x7fff8f9fc910 (LWP 7793)]
0x00007ffff55e14b5 in raise () from /lib/libc.so.6
#0  0x00007ffff55e14b5 in raise () from /lib/libc.so.6
#1  0x00007ffff55e4f50 in abort () from /lib/libc.so.6
#2  0x00007ffff55da481 in __assert_fail () from /lib/libc.so.6
#3  0x0000000000520c02 in WorldObject::GetMap (this=<value optimized out>)
   at ../../../src/game/Object.h:485
#4  0x00000000007d5118 in Unit::GetPet (this=0x7ffedf2d0000)
   at ../../../src/game/Unit.cpp:5937
#5  0x0000000000766c77 in AreaAura::Update (this=0x7fff5b13f4c0,
   diff=<value optimized out>) at ../../../src/game/SpellAuras.cpp:676
#6  0x000000000075b5da in Aura::UpdateAura (this=0x7fff5b132d40, diff=201)
   at ../../../src/game/SpellAuras.h:424
#7  SpellAuraHolder::Update (this=0x7fff5b132d40, diff=201)
   at ../../../src/game/SpellAuras.cpp:9279
#8  0x00000000007d7c1c in SpellAuraHolder::UpdateHolder (this=0x7fff14b84000,
   time=201) at ../../../src/game/SpellAuras.h:105
#9  Unit::_UpdateSpells (this=0x7fff14b84000, time=201)
   at ../../../src/game/Unit.cpp:3513
#10 0x00000000007e7576 in Unit::Update (this=0x7fff14b84000, p_time=201)
   at ../../../src/game/Unit.cpp:310
#11 0x000000000072a20d in Player::Update (this=0x7fff14b84000, p_time=201)
   at ../../../src/game/Player.cpp:1199
#12 0x0000000000663ed8 in Map::Update (this=0x10a8000, t_diff=@0x7fff8f9fbf8c)
   at ../../../src/game/Map.cpp:469
#13 0x000000000066daeb in MapManager::Update (this=0x7fff90258c60,
   diff=<value optimized out>) at ../../../src/game/MapManager.cpp:263
#14 0x000000000080be28 in World::Update (this=0x7ffff7f7f900, diff=31)
   at ../../../src/game/World.cpp:1481
#15 0x0000000000510d51 in WorldRunnable::run (this=<value optimized out>)
   at ../../../src/mangosd/WorldRunnable.cpp:60
#16 0x00000000008b5f1a in ACE_Based::Thread::ThreadTask (param=0x1e1a)
   at ../../../src/shared/Threading.cpp:187
#17 0x00007ffff60cfa04 in start_thread () from /lib/libpthread.so.0
#18 0x00007ffff568dd4d in clone () from /lib/libc.so.6
#19 0x0000000000000000 in ?? ()
#0  0x00007ffff55e14b5 in raise () from /lib/libc.so.6
No symbol table info available.
#1  0x00007ffff55e4f50 in abort () from /lib/libc.so.6
No symbol table info available.
#2  0x00007ffff55da481 in __assert_fail () from /lib/libc.so.6
No symbol table info available.
#3  0x0000000000520c02 in WorldObject::GetMap (this=<value optimized out>)
  at ../../../src/game/Object.h:485
       st = {static SYMBUFSIZ = 4096,
         buf_ = "/home/server/bin/mangos-worldd(_ZN8AreaAura6UpdateEj+0xac7) [0x766c77]\\n/home/server/bin/mangos-worldd(_ZN15SpellAuraHolder6UpdateEj+0x3a) [0x75b5da]\\n/home/server/bin/mangos-worldd(_ZN4Un$
         buflen_ = 804,
         static UNSUPPORTED = 0x7ffff7b8d640 "<stack traces unsupported platform>", static UNABLE_TO_GET_TRACE = 0x7ffff7b8d670 "<unable to get trace>"}
       __FUNCTION__ = "GetMap"
       __PRETTY_FUNCTION__ = "Map* WorldObject::GetMap() const"
#4  0x00000000007d5118 in Unit::GetPet (this=0x7ffedf2d0000)
   at ../../../src/game/Unit.cpp:5937
       pet = 0x0
       pet_guid = {m_guid = 17383894589751951382}
#5  0x0000000000766c77 in AreaAura::Update (this=0x7fff5b13f4c0,
   diff=<value optimized out>) at ../../../src/game/SpellAuras.cpp:676
       pet = <value optimized out>
       Target = 0x7ffedf2d0000
       itr = 0x7ffedf2d29e0
       pGroup = <value optimized out>
       owner = 0x7fff14b84000
       targets = {<std::_List_base<Unit*, std::allocator<Unit*> >> = {
           _M_impl = {<std::allocator<std::_List_node<Unit*> >> = {<__gnu_cxx::new_allocator<std::_List_node<Unit*> >> = {<No data fields>}, <No data fields>}, _M_node = {_M_next = 0x7fff8f9fac10,
               _M_prev = 0x7fff8f9fac10}}}, <No data fields>}
       caster = 0x7fff14b84000
#6  0x000000000075b5da in Aura::UpdateAura (this=0x7fff5b132d40, diff=201)
   at ../../../src/game/SpellAuras.h:424
No locales.
#7  SpellAuraHolder::Update (this=0x7fff5b132d40, diff=201)
   at ../../../src/game/SpellAuras.cpp:9279
       aura = 0x7fff5b13f4c0
#8  0x00000000007d7c1c in SpellAuraHolder::UpdateHolder (this=0x7fff14b84000,
   time=201) at ../../../src/game/SpellAuras.h:105
No locales.
#9  Unit::_UpdateSpells (this=0x7fff14b84000, time=201)
   at ../../../src/game/Unit.cpp:3513
       i_holder = 0x7fff5b132d40
#10 0x00000000007e7576 in Unit::Update (this=0x7fff14b84000, p_time=201)
   at ../../../src/game/Unit.cpp:310
No locales.
#11 0x000000000072a20d in Player::Update (this=0x7fff14b84000, p_time=201)
   at ../../../src/game/Player.cpp:1199
       now = <value optimized out>
       pet = <value optimized out>
#12 0x0000000000663ed8 in Map::Update (this=0x10a8000, t_diff=@0x7fff8f9fbf8c)
   at ../../../src/game/Map.cpp:469
       plr = 0x1e1a
       updater = {i_timeDiff = 201}
       __FUNCTION__ = "Update"
       __PRETTY_FUNCTION__ = "virtual void Map::Update(const uint32&)"
#13 0x000000000066daeb in MapManager::Update (this=0x7fff90258c60,
   diff=<value optimized out>) at ../../../src/game/MapManager.cpp:263
No locales.
#14 0x000000000080be28 in World::Update (this=0x7ffff7f7f900, diff=31)
   at ../../../src/game/World.cpp:1481
No locales.
#15 0x0000000000510d51 in WorldRunnable::run (this=<value optimized out>)
   at ../../../src/mangosd/WorldRunnable.cpp:60
       diff = 31
       realCurrTime = <value optimized out>
       realPrevTime = <value optimized out>
       prevSleepTime = 30
#16 0x00000000008b5f1a in ACE_Based::Thread::ThreadTask (param=0x1e1a)
   at ../../../src/shared/Threading.cpp:187
No locales.
#17 0x00007ffff60cfa04 in start_thread () from /lib/libpthread.so.0
No symbol table info available.
#18 0x00007ffff568dd4d in clone () from /lib/libc.so.6
No symbol table info available.
#19 0x0000000000000000 in ?? ()

Please help.

Posted

This assert happened because player was removed from the map (far-teleported) BUT code in AreaAura::Update() was not able to handle this situation correctly aka didn't check if player is in world which lead to failed assertion in WorldObject::GetMap() function call.

Do you use third-party patches or this happened on clean mangos core?

UPDATE: faulty code is in

Pet* Unit::GetPet() const
{    
ObjectGuid pet_guid = GetPetGuid();   
if (!pet_guid.IsEmpty())    
{        
       if(Pet* pet = GetMap()->GetPet(pet_guid))
               return pet;
       sLog.outError("Unit::GetPet: %s not exist.", pet_guid.GetString().c_str()); 
       const_cast<Unit*>(this)->SetPet(0);
   }
   return NULL;
}

Posted
I'm using the version of INSIDER but in this function doesn't have no change.

Yes, but problem is that player was teleported and then your aura code decided to do something with player's pet -> call GetMap() -> get assert. Something is reeeeeeeealy bad in patches you use or someone has broken delayed far teleports.

Posted

Thanks Ambal, i try review what is happening.

Perhaps using this we can solve these crash:

Pet* Unit::GetPet() const

{

ObjectGuid pet_guid = GetPetGuid();

if (!pet_guid.IsEmpty())

{

if (IsInWorld())

{

if(Pet* pet = GetMap()->GetPet(pet_guid))

return pet;

}

sLog.outError("Unit::GetPet: %s not exist.", pet_guid.GetString().c_str());

const_cast<Unit*>(this)->SetPet(0);

}

return NULL;

}

Posted

Current far telport code _unsummon_ pet before far teleport, pet_guid == 0 must be .

Pet remembering as temporary unsummoned. So really something wrong in your code.

            if (pet)
               UnsummonPetTemporaryIfAny();

Possible you have custom patch for mutiply pets, that incorrectly handle UnsummonPetTemporaryIfAny

I not see reason add IsInWorld random checks just because some custom code wrongly work with core functionality.

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. Privacy Policy Terms of Use