From 11373cd78a107894604339d182e40ed93b0aa0de Mon Sep 17 00:00:00 2001 From: Petric Date: Wed, 24 Nov 2021 10:41:49 +0000 Subject: [PATCH] fix(Core/Shutdown): add checks to see if MapUpdater threads are joineable (#7450) --- src/server/game/Maps/Map.cpp | 2 +- src/server/game/Maps/MapUpdater.cpp | 5 ----- src/server/game/Maps/MapUpdater.h | 2 +- src/server/game/World/World.cpp | 1 + 4 files changed, 3 insertions(+), 7 deletions(-) diff --git a/src/server/game/Maps/Map.cpp b/src/server/game/Maps/Map.cpp index 46c4307bc..2aca8fb46 100644 --- a/src/server/game/Maps/Map.cpp +++ b/src/server/game/Maps/Map.cpp @@ -69,7 +69,7 @@ Map::~Map() { WorldObject* obj = *i_worldObjects.begin(); ASSERT(obj->IsWorldObject()); - LOG_ERROR("maps", "Map::~Map: WorldObject TypeId is not a corpse! (%u)", static_cast(obj->GetTypeId())); + LOG_DEBUG("maps", "Map::~Map: WorldObject TypeId is not a corpse! (%u)", static_cast(obj->GetTypeId())); //ASSERT(obj->GetTypeId() == TYPEID_CORPSE); obj->RemoveFromWorld(); obj->ResetMap(); diff --git a/src/server/game/Maps/MapUpdater.cpp b/src/server/game/Maps/MapUpdater.cpp index 6f4b9d62f..9156ec5d8 100644 --- a/src/server/game/Maps/MapUpdater.cpp +++ b/src/server/game/Maps/MapUpdater.cpp @@ -74,11 +74,6 @@ MapUpdater::MapUpdater(): pending_requests(0) { } -MapUpdater::~MapUpdater() -{ - deactivate(); -} - void MapUpdater::activate(size_t num_threads) { _workerThreads.reserve(num_threads); diff --git a/src/server/game/Maps/MapUpdater.h b/src/server/game/Maps/MapUpdater.h index 3ef1b2540..59b4f0e1a 100644 --- a/src/server/game/Maps/MapUpdater.h +++ b/src/server/game/Maps/MapUpdater.h @@ -31,7 +31,7 @@ class MapUpdater { public: MapUpdater(); - virtual ~MapUpdater(); + ~MapUpdater() = default; void schedule_update(Map& map, uint32 diff, uint32 s_diff); void schedule_lfg_update(uint32 diff); diff --git a/src/server/game/World/World.cpp b/src/server/game/World/World.cpp index 1ff937724..cd18fc609 100644 --- a/src/server/game/World/World.cpp +++ b/src/server/game/World/World.cpp @@ -2119,6 +2119,7 @@ void World::SetInitialWorldSettings() if (sConfigMgr->isDryRun()) { + sMapMgr->UnloadAll(); LOG_INFO("server.loading", "AzerothCore dry run completed, terminating."); exit(0); }