MaNGOS: 10337
DB: YTDB 559
Well, I think I have found an infinite loop here:
void WorldSession::SendDoFlight( uint32 mountDisplayId, uint32 path, uint32 pathNode )
{
// remove fake death
if (GetPlayer()->hasUnitState(UNIT_STAT_DIED))
GetPlayer()->RemoveSpellsCausingAura(SPELL_AURA_FEIGN_DEATH);
while(GetPlayer()->GetMotionMaster()->GetCurrentMovementGeneratorType()==FLIGHT_MOTION_TYPE) // --> Here is the problem
{
// DEBUG_LOG("I'M NOW IN THE WHILE, IS IT INFINITE??");
GetPlayer()->GetMotionMaster()->MovementExpired(false);
}
if (mountDisplayId)
GetPlayer()->Mount( mountDisplayId );
GetPlayer()->GetMotionMaster()->MoveTaxiFlight(path,pathNode);
}
I have some custom patches but nothing related to taxi paths, my server gets freezed sometimes and with that DEBUG_LOG I have found the loop where it fails. How to reproduce? Don't know, may be take flight paths until it gets stucked
If you have a freeze and the last output is: "WORLD: Taxi has to go from X to X" then this is your problem.
Any ideas or anyone has the same bug?