[Solved] On map update , bots crash when they use function GetMap()

Issue #14 resolved
David Magalhães created an issue
[New Thread 26041]
[New Thread 4564]
[New Thread 26054]
[New Thread 26053]
[New Thread 26052]
[New Thread 26051]
[New Thread 26049]
[New Thread 26048]
[New Thread 25877]
[New Thread 25876]
[New Thread 25875]
[New Thread 25874]
[New Thread 25873]
[New Thread 25872]
[New Thread 25869]
[Thread debugging using libthread_db enabled]
Core was generated by `/home/server/Core/Winterchill/bin/worldserver'.
Program terminated with signal 11, Segmentation fault.
#0  0x0000000000a1f048 in WorldObject::GetMap ()
#0  0x0000000000a1f048 in WorldObject::GetMap ()
No symbol table info available.
#1  0x0000000000a1f7e1 in WorldObject::GetGridActivationRange() const ()
No symbol table info available.
#2  0x0000000000b36c42 in Map::VisitNearbyCellsOf(WorldObject*, TypeContainerVisitor<Trinity::ObjectUpdater, TypeMapContainer<TypeList<GameObject, TypeList<Creature, TypeList<DynamicObject, TypeList<Corpse, TypeNull> > > > > >&, TypeContainerVisitor<Trinity::ObjectUpdater, TypeMapContainer<TypeList<Player, TypeList<Creature, TypeList<Corpse, TypeList<DynamicObject, TypeNull> > > > > >&) ()
No symbol table info available.
#3  0x0000000000b3ad43 in Map::Update(unsigned int) ()
No symbol table info available.
#4  0x0000000000b48bf1 in MapUpdateRequest::call() ()
No symbol table info available.
#5  0x0000000000e82f71 in DelayExecutor::svc() ()
No symbol table info available.
#6  0x00002b7c688e8c67 in ACE_Task_Base::svc_run (args=<value optimized out>)
    at ../../ace/Task.cpp:271
        t = 0x2aaaace1e840
        svc_status = <value optimized out>
#7  0x00002b7c688ea33b in ACE_Thread_Adapter::invoke_i (this=<value optimized out>)
    at ../../ace/Thread_Adapter.cpp:161
        hook = 0x0
        func = 0x2b7c688e8c30 <ACE_Task_Base::svc_run(void*)>
        arg = 0x2aaaace1e840
        cancel_flags = 4259842
        status = 0x0
#8  0x00002b7c688ea3c5 in ACE_Thread_Adapter::invoke (this=0x2aaac40470b0)
    at ../../ace/Thread_Adapter.cpp:96
        exit_hook_instance = <value optimized out>
        exit_hook_maybe = {instance_ = 0x0}
        exit_hook_ptr = <value optimized out>
#9  0x00000035ef60677d in start_thread () from /lib64/libpthread.so.0
No symbol table info available.
#10 0x00000035eeed33ed in clone () from /lib64/libc.so.6
No symbol table info available.

for some reason the bots are crashing when master teleports

Comments (11)

  1. Nobody

    I have the same issue when I die with NPC bots

    MoveSplineInitArgs::Validate: expression 'velocity > 0.1f' failed for GUID: 0

    C:/Users/Matt/Desktop/Wow-

    Project/MaleficCore/255DevCore3/src/server/game/Entities/Object\Object.h:775

    in WorldObject::GetMap ASSERTION FAILED:

    m_currMap

    [0x322975]

    [0x1c8e09]

    [0x25aee0]

    [0x1f84b8]

    [0x1fb60f]

    [0x1f03c1]

    ACE_Task_Base::svc_run()+0x2e [0x0]

    ACE_Thread_Adapter::invoke_i()+0x88 [0x0]

    ACE_Thread_Adapter::invoke()+0x83 [0x0]

    endthreadex()+0x3a [0x0]

    endthreadex()+0xe4 [0x0]

    BaseThreadInitThunk()+0x12 [0x0]

    RtlInitializeExceptionChain()+0x63 [0x0]

    RtlInitializeExceptionChain()+0x36 [0x0]

  2. Nobody

    Mine is only with NPC bots. Playerbots seem to be working fine now for me. Sorry for the confusion. I should have opened a separate issue.

  3. trickerer repo owner

    matthew ferrill

    Liho's fix doesn't allow you to summon npcbots anymore though. :(

    Why is that? Crash every time player dies? Also, do you always get warlock npcbot?

  4. Nobody

    Yes, crash on death of player...I Think I do always get Warlock npcbot, I've been using them to test 10 man content, so I have at least 1 of each class in raid.

  5. trickerer repo owner

    for now this code part looks like:

    void ObjectAccessor::RemoveCorpse(Corpse* corpse)
    {
        ASSERT(corpse && corpse->GetType() != CORPSE_BONES);
    
        //TODO: more works need to be done for corpse and other world object
        if (Map* map = corpse->FindMap())
        {
            corpse->DestroyForNearbyPlayers();
            if (corpse->IsInGrid())
                map->RemoveFromMap(corpse, false);
            else
            {
                corpse->RemoveFromWorld();
                corpse->ResetMap();
            }
        }
        else
    
            corpse->RemoveFromWorld();
    
  6. Log in to comment