Jump to content

DrKLO

Members
  • Posts

    20
  • Joined

  • Last visited

    Never
  • Donations

    0.00 GBP 

Everything posted by DrKLO

  1. i think it's related to http://github.com/rsa/mangos/commit/b6d31044b7ea17630cab6f9001a31bcf0b67a536 patch
  2. i found one crash, main thread stuck in this part of code 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) //STUCK HERE GetPlayer()->GetMotionMaster()->MovementExpired(false); if (mountDisplayId) GetPlayer()->Mount( mountDisplayId ); GetPlayer()->GetMotionMaster()->MoveTaxiFlight(path,pathNode); } i added iteration counter in this loop and break it when it equal to 100, no core stuck any more maybe someone have the same problem?
  3. if you shoot with wand, and while shooting if you press a lot of time on some instans spell, this spell will be casted a lot of times seem that cooldown isn't apply on spell when casting shoot spell so you can cast one spell up to ~10 times without cooldown
  4. http://paste2.org/p/716069 caused by this commit http://github.com/mangos/mangos/commit/7661fe98398107a968c68d1a346002a70db772b1 i just revert it, because there was a lot of crash
  5. to Lightguard, the problem is not only in the instance reset. If someone change difficulty who outside dungeon, and someone who inside make relog in the game - server will crash, because he will enter in the dungeon that not bind to him, and we get assert(false) in the code sLog.outError("InstanceMap::Add: player %s(%d) is being put in instance %d,%d,%d,%d,%d,%d but he is in group %d and is bound to instance %d,%d,%d,%d,%d,%d!", player->GetName(), player->GetGUIDLow(), mapSave->GetMapId(), mapSave->GetInstanceId(), mapSave->GetDifficulty(), mapSave->GetPlayerCount(), mapSave->GetGroupCount(), mapSave->CanReset(), GUID_LOPART(pGroup->GetLeaderGUID()), playerBind->save->GetMapId(), playerBind->save->GetInstanceId(), playerBind->save->GetDifficulty(), playerBind->save->GetPlayerCount(), playerBind->save->GetGroupCount(), playerBind->save->CanReset()); if(groupBind) sLog.outError("InstanceMap::Add: the group is bound to instance %d,%d,%d,%d,%d,%d", groupBind->save->GetMapId(), groupBind->save->GetInstanceId(), groupBind->save->GetDifficulty(), groupBind->save->GetPlayerCount(), groupBind->save->GetGroupCount(), groupBind->save->CanReset()); assert(false); we just prvevent it i think it's bl1zz like, bacause i got message that i can't change dungeon difficulty, bacause i or some of my party members in the dungeon already
  6. moderators, plz move it to the patch section
  7. if someone compile source with #define MANGOS_DEBUG and enable logs, we should see what happened before crash in logs maybe we should change in WaypointMovementGenerator.cpp this // prevent a crash at empty waypoint path. if (!i_path || i_path->empty()) { creature.clearUnitState(UNIT_STAT_ROAMING_MOVE); return true; } // i_path was modified by chat commands for example if (i_path->size() != i_hasDone.size()) i_hasDone.resize(i_path->size()); if (i_currentNode >= i_path->size()) i_currentNode = 0; and this CreatureTraveller traveller(creature); i_nextMoveTime.Update(diff); i_destinationHolder.UpdateTraveller(traveller, diff, false, true); to avoid crash
  8. CreatureTraveller traveller(creature); i_nextMoveTime.Update(diff); i_destinationHolder.UpdateTraveller(traveller, diff, false, true); -this function DestinationHolder<TRAVELLER>::UpdateTraveller ... traveller.Relocation(x, y, z, ori); - in some cases - this template<> inline void Traveller<Creature>::Relocation(float x, float y, float z, float orientation) { i_traveller.GetMap()->CreatureRelocation(&i_traveller, x, y, z, orientation); } void Map::CreatureRelocation(Creature *creature, float x, float y, float z, float ang) ... // if creature can't be move in new cell/grid (not loaded) move it to repawn cell/grid // creature coordinates will be updated and notifiers send if(!CreatureRespawnRelocation(creature)) - this bool Map::CreatureRespawnRelocation(Creature *c) ... c->GetMotionMaster()->Clear(); - this in 9400-9401 there was added some changes in CreatureRelocation, and maybe some of this changes delete WaypointMovementGenerator? so we have crash, and i_path = 0
  9. i say that it's look like, not sure Vladimir, can after MovementInform(creature); - creature.IsStopped() become false? Russian: Если не может, то краш точно не из за этого, т.к. краш только тогда, когда creature.IsStopped() = false.
  10. first post updated, fortgot to add the same check in HandleSetRaidDifficultyOpcode
  11. if we look at code we see if (creature.IsStopped()){ - look at this check .... MovementInform(creature); } and after if (i_nextMoveTime.Passed()) { // If stopped then begin a new move segment if (creature.IsStopped()) - the same check { .... } else { .... i_nextMoveTime.Reset(i_path->at(i_currentNode).delay); - there was crash, because i_past = null; ... } if first check passed, crash code can't be call so making check i_path after MovementInform(creature); as in [9434] doesn't help looks like it's deleted from other thread, but creatures on what was crash don't have eventAI or SD2 scripts PS sorry for my bad english
  12. this hack and bug can't cause crash in WorldSession::HandleMovementOpcodes and i think can't cause server freeze, because function WaypointMovementGenerator<Creature>::Update doesn't have loop, it's called once for each time diff as i see. if you have freezes, try to disable logs and compile without debug and with optimization, because with loglevel = 3 i have freezes too. Now uptime is more then one day with 300+ online for me.
  13. bug: if yo go to the dungeon, for example in normal 10 difficulty, and then invite in the raid someone who outside. If this someone change dungeon difficulty and people inside dungeon make logout - server will crash or instance will reset So do not let this someone to change dungeon difficulty if somebody in this raid\\group in dungeon. http://paste2.org/p/682412 http://paste2.org/p/683844
  14. i'm use freeze detector, 300 seconds check. But i'm use KAPATEJIb patches, there is meybe some that prevent freezes.
  15. http://paste2.org/p/681918 18 hours uptime now and still no crashes
  16. WaypointMovementGenerator.cpp - line 243
  17. so else { // If not stopped then stop it and set the reset of TimeTracker to waittime creature.StopMoving(); SetStoppedByPlayer(false); if(!i_path) { sLog.outDebug("wtf? path is null!\\n"); //-----add this check return true; } i_nextMoveTime.Reset(i_path->at(i_currentNode).delay); ++i_currentNode; if (i_currentNode >= i_path->size()) i_currentNode = 0; } so crash is disappear, i_path become null, don't know why. In log i see my check. all this creatures have event_ai, and maybe during update this calls MonsterMoveWithSpeed, and then Reset, that makes i_path = null
  18. crashed 3 times on creature with entry 10760, guid 94985 and one with creature entry 3501, guid 52494 both when LoadPath, i think it's called after movgen->Reset(*creature); that was added in 9400 i think that's YTDB bug i'll try to clear this creature waypoints
  19. What bug does the patch fix? What features does the patch add? If you fully broke you weapon, wear it and learn talent(for example Two-Handed Weapon Specialization), then you weapon damage increase. Then unwear this weapon and unlearn talents. You damage doesn't decrease. You can do it a lot of times, and you melee damage will be increase and increase. So we shouldn't increase damage with broken item. For which repository revision was the patch created? 8809+ Is there a thread in the bug report section or at lighthouse? If yes, please add a link to the thread. Didn't find any Who has been writing this patch? Please include either forum user names or email addresses. Me diff --git a/src/game/Player.cpp b/src/game/Player.cpp index b93b34c..62bc9e7 100644 --- a/src/game/Player.cpp +++ b/src/game/Player.cpp @@ -6889,6 +6889,10 @@ void Player::_ApplyWeaponDependentAuraCritMod(Item *item, WeaponAttackType attac void Player::_ApplyWeaponDependentAuraDamageMod(Item *item, WeaponAttackType attackType, Aura* aura, bool apply) { + //don't apply mod if item is broken + if(item->IsBroken()) + return; + // ignore spell mods for not wands Modifier const* modifier = aura->GetModifier(); if((modifier->m_miscvalue & SPELL_SCHOOL_MASK_NORMAL)==0 && (getClassMask() & CLASSMASK_WAND_USERS)==0)
  20. 2 functions GameObject* ObjectAccessor::GetGameObject(WorldObject const &u, uint64 guid) { GameObject * ret = GetObjectInWorld(guid, (GameObject*)NULL); if(!ret) return NULL; if(ret->GetMapId() != u.GetMapId()) ret = NULL; if(ret->GetInstanceId() != u.GetInstanceId()) return NULL; return ret; } DynamicObject* ObjectAccessor::GetDynamicObject(WorldObject const &u, uint64 guid) { DynamicObject * ret = GetObjectInWorld(guid, (DynamicObject*)NULL); if(!ret) return NULL; if(ret->GetMapId() != u.GetMapId()) ret = NULL; if(ret->GetInstanceId() != u.GetInstanceId()) return NULL; return ret; } if(ret->GetMapId() != u.GetMapId()) ret = NULL; !!! ret = 0 and after this ret->GetInstanceId(). if(ret->GetInstanceId() != u.GetInstanceId()) return NULL; i think there should be if(ret->GetMapId() != u.GetMapId()) return NULL;
×
×
  • 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