Jump to content

[10198] permanent crashes


Guest heugabel

Recommended Posts

hi, our server crashes permanently after updating to 10198. its a clean core +sd2 (and some little additions like armory, broadcast)

             Core was generated by `/home/instant/server/bin/mangos-worldd2'.
Program terminated with signal 6, Aborted.
[New process 13484]
[New process 13489]
[New process 13488]
[New process 13487]
[New process 13486]
[New process 13485]
[New process 13475]
[New process 13483]
[New process 13478]
[New process 13477]
[New process 13476]
#0  0x00007fd63b432ed5 in raise () from /lib/libc.so.6
#0  0x00007fd63b432ed5 in raise () from /lib/libc.so.6
No symbol table info available.
#1  0x00007fd63b4343f3 in abort () from /lib/libc.so.6
No symbol table info available.
#2  0x00007fd63b42bdc9 in __assert_fail () from /lib/libc.so.6
No symbol table info available.
#3  0x00000000009cfdcd in MotionMaster::UpdateMotion (this=0x2989920, 
   diff=100) at ../../../src/game/MotionMaster.cpp:72
   st = {static SYMBUFSIZ = 4096, 
 buf_ = "/home/instant/server/bin/mangos-worldd2(_ZN6Player6UpdateEj+0xdf) [0xaa12f1]\\n/home/instant/server/bin/mangos-worldd2(_ZN3Map6UpdateERKj+0xc4) [0x9b28ba]\\n/home/instant/server/bin/mangos-worldd2(_ZN10Ma"..., buflen_ = 569, 
 static UNSUPPORTED = 0x7fd63da16540 "<stack traces unsupported platform>", 
 static UNABLE_TO_GET_TRACE = 0x7fd63da16570 "<unable to get trace>"}
   __FUNCTION__ = "UpdateMotion"
   __PRETTY_FUNCTION__ = "void MotionMaster::UpdateMotion(uint32)"
#4  0x0000000000b9d1d3 in Unit::Update (this=0x2988000, p_time=100)
   at ../../../src/game/Unit.cpp:328
No locals.
#5  0x0000000000aa12f1 in Player::Update (this=0x2988000, p_time=100)
   at ../../../src/game/Player.cpp:1217
   now = 1115696464
   pet = (class Pet *) 0x9b5e37
#6  0x00000000009b28ba in Map::Update (this=0x1630000, t_diff=@0x4280400c)
   at ../../../src/game/Map.cpp:520
   plr = (class Player *) 0x2988000
   updater = {i_timeDiff = 1115700976}
   grid_object_update = {i_visitor = @0x1000}
   world_object_update = {i_visitor = @0x0}
   __FUNCTION__ = "Update"
   __PRETTY_FUNCTION__ = "virtual void Map::Update(const uint32&)"
#7  0x00000000009cb858 in MapManager::Update (this=0x7fd629010c60, diff=47)
   at ../../../src/game/MapManager.cpp:250
   iter = {<std::tr1::__detail::_Hashtable_iterator_base<std::Pair<const unsigned int, Map*>, false>> = {_M_cur_node = 0x7fd62549c790, 
   _M_cur_bucket = 0x7fd625106688}, <No data fields>}
#8  0x0000000000bc785b in World::Update (this=0x7fd63a933900, diff=47)
   at ../../../src/game/World.cpp:1486
   autobroadcaston = 0
#9  0x000000000080407c in WorldRunnable::run (this=0x7fd62512e070)
   at ../../../src/mangosd/WorldRunnable.cpp:60
   diff = 47
   realCurrTime = 3637508842
   realPrevTime = 3637508795
   prevSleepTime = 47
#10 0x0000000000c95a46 in ACE_Based::Thread::ThreadTask (param=0x7fd62512e070)
   at ../../../src/shared/Threading.cpp:187
   _task = (class ACE_Based::Runnable *) 0x7fd62512e070
#11 0x00007fd63bf00fc7 in start_thread () from /lib/libpthread.so.0
No symbol table info available.
#12 0x00007fd63b4d064d in clone () from /lib/libc.so.6
No symbol table info available.
#13 0x0000000000000000 in ?? ()
No symbol table info available.         

is this a map problem?

Link to comment
Share on other sites

I have tried and get errors like this

ERROR:HandleMoveNotActiveMover: incorrect mover guid: mover is Player Efesto (Guid: 20312) and should be Player Efesto (Guid: 20312) instead of Player Efesto (Guid: 20312)

and then world thread hangs

"Efesto should be Efesto, not Efesto" xD

Link to comment
Share on other sites

Well... 12 hours online with this supermegahack...

if( i_owner->hasUnitState(UNIT_STAT_CAN_NOT_MOVE) )
       return;
-    ASSERT( !empty() );
+    // ASSERT( !empty() );
+    if ( !empty() )
+    {
   m_cleanFlag |= MMCF_UPDATE;
   if (!top()->Update(*i_owner, diff))
   {
       m_cleanFlag &= ~MMCF_UPDATE;
       MovementExpired();
   }
   else
       m_cleanFlag &= ~MMCF_UPDATE;

   if (m_expList)
   {
       for (size_t i = 0; i < m_expList->size(); ++i)
       {
           MovementGenerator* mg = (*m_expList)[i];
           if (!isStatic(mg))
               delete mg;
       }

       delete m_expList;
       m_expList = NULL;

       if (empty())
           Initialize();

       if (m_cleanFlag & MMCF_RESET)
       {
           top()->Reset(*i_owner);
           m_cleanFlag &= ~MMCF_RESET;
       }
   }
+    }
+    else
+        return;

Don't ask me why I have tried this, I write it last night, too late, and with desperation... xD

I comment first the ASSERT, but my server crashes with a SIGFAULT, but with this... At least it's online.

Link to comment
Share on other sites

Am not a very good programmer, so my question is: What does this ASSERT do?

Anyway, I'm gonna try that hack also. I can't manage to fix it myself sadly enough.. Like you said, at least it's online..

ASSERT checks if MotionMaster was initialized before use. If it's not initialized then you are using it wrong.

Link to comment
Share on other sites

ASSERT in a C built-in function , taking a boolean expression as paramater, if the parameter is false (here, the empty() function returns a boolean) the ASSERT makes the program properly crash. It's used to debug a program, and prevent memory corrupt.

Link to comment
Share on other sites

×
×
  • 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