mirror of
https://github.com/EQEmu/Server.git
synced 2025-12-13 14:41:28 +00:00
[Logging] Add stack trace in code paths that shouldn't occur (#2453)
* [Logging] Add stack trace in code paths that shouldn't occur * Update zone_store.cpp * Windows workaround
This commit is contained in:
parent
f8e7576ae7
commit
f357361474
@ -650,6 +650,7 @@ SET(common_headers
|
|||||||
patches/uf_limits.h
|
patches/uf_limits.h
|
||||||
patches/uf_ops.h
|
patches/uf_ops.h
|
||||||
patches/uf_structs.h
|
patches/uf_structs.h
|
||||||
|
stacktrace/backward.hpp
|
||||||
StackWalker/StackWalker.h
|
StackWalker/StackWalker.h
|
||||||
util/memory_stream.h
|
util/memory_stream.h
|
||||||
util/directory.h
|
util/directory.h
|
||||||
|
|||||||
4476
common/stacktrace/backward.hpp
Normal file
4476
common/stacktrace/backward.hpp
Normal file
File diff suppressed because it is too large
Load Diff
@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
#include "zone_store.h"
|
#include "zone_store.h"
|
||||||
#include "../common/content/world_content_service.h"
|
#include "../common/content/world_content_service.h"
|
||||||
|
#include "stacktrace/backward.hpp"
|
||||||
|
|
||||||
ZoneStore::ZoneStore() = default;
|
ZoneStore::ZoneStore() = default;
|
||||||
ZoneStore::~ZoneStore() = default;
|
ZoneStore::~ZoneStore() = default;
|
||||||
@ -82,11 +83,21 @@ const char *ZoneStore::GetZoneName(uint32 zone_id, bool error_unknown)
|
|||||||
}
|
}
|
||||||
|
|
||||||
LogInfo(
|
LogInfo(
|
||||||
"[GetZoneName] Failed to get zone name by zone_id [{}] error_unknown [{}]",
|
"[GetZoneName] Failed to get zone name by zone_id [{}] error_unknown [{}] printing stack",
|
||||||
zone_id,
|
zone_id,
|
||||||
(error_unknown ? "true" : "false")
|
(error_unknown ? "true" : "false")
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
|
// print stack when invalid input
|
||||||
|
if (zone_id == 0) {
|
||||||
|
backward::StackTrace st;
|
||||||
|
backward::TraceResolver e = {};
|
||||||
|
st.load_here(32);
|
||||||
|
backward::Printer p;
|
||||||
|
p.print(st);
|
||||||
|
}
|
||||||
|
|
||||||
return nullptr;
|
return nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,3 +1,5 @@
|
|||||||
|
#include "../../common/zone_store.h"
|
||||||
|
|
||||||
void WorldserverCLI::TestCommand(int argc, char **argv, argh::parser &cmd, std::string &description)
|
void WorldserverCLI::TestCommand(int argc, char **argv, argh::parser &cmd, std::string &description)
|
||||||
{
|
{
|
||||||
description = "Test command";
|
description = "Test command";
|
||||||
@ -6,4 +8,5 @@ void WorldserverCLI::TestCommand(int argc, char **argv, argh::parser &cmd, std::
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
zone_store.GetZoneName(0, false);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -94,7 +94,7 @@ ZoneServer::~ZoneServer() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
bool ZoneServer::SetZone(uint32 in_zone_id, uint32 in_instance_id, bool is_static_zone) {
|
bool ZoneServer::SetZone(uint32 in_zone_id, uint32 in_instance_id, bool in_is_static_zone) {
|
||||||
is_booting_up = false;
|
is_booting_up = false;
|
||||||
|
|
||||||
std::string zone_short_name = ZoneName(in_zone_id, true);
|
std::string zone_short_name = ZoneName(in_zone_id, true);
|
||||||
@ -114,7 +114,7 @@ bool ZoneServer::SetZone(uint32 in_zone_id, uint32 in_instance_id, bool is_stati
|
|||||||
) :
|
) :
|
||||||
""
|
""
|
||||||
),
|
),
|
||||||
is_static_zone ? " (Static)" : ""
|
in_is_static_zone ? " (Static)" : ""
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -130,7 +130,7 @@ bool ZoneServer::SetZone(uint32 in_zone_id, uint32 in_instance_id, bool is_stati
|
|||||||
LSSleepUpdate(GetPrevZoneID());
|
LSSleepUpdate(GetPrevZoneID());
|
||||||
}
|
}
|
||||||
|
|
||||||
is_static_zone = is_static_zone;
|
is_static_zone = in_is_static_zone;
|
||||||
|
|
||||||
strn0cpy(zone_name, zone_short_name.c_str(), sizeof(zone_name));
|
strn0cpy(zone_name, zone_short_name.c_str(), sizeof(zone_name));
|
||||||
strn0cpy(long_name, zone_long_name.c_str(), sizeof(long_name));
|
strn0cpy(long_name, zone_long_name.c_str(), sizeof(long_name));
|
||||||
|
|||||||
@ -40,7 +40,7 @@ public:
|
|||||||
void SendEmoteMessage(const char* to, uint32 to_guilddbid, int16 to_minstatus, uint32 type, const char* message, ...);
|
void SendEmoteMessage(const char* to, uint32 to_guilddbid, int16 to_minstatus, uint32 type, const char* message, ...);
|
||||||
void SendEmoteMessageRaw(const char* to, uint32 to_guilddbid, int16 to_minstatus, uint32 type, const char* message);
|
void SendEmoteMessageRaw(const char* to, uint32 to_guilddbid, int16 to_minstatus, uint32 type, const char* message);
|
||||||
void SendKeepAlive();
|
void SendKeepAlive();
|
||||||
bool SetZone(uint32 in_zone_id, uint32 in_instance_id = 0, bool is_static_zone = false);
|
bool SetZone(uint32 in_zone_id, uint32 in_instance_id = 0, bool in_is_static_zone = false);
|
||||||
void TriggerBootup(uint32 in_zone_id = 0, uint32 in_instance_id = 0, const char* admin_name = 0, bool is_static_zone = false);
|
void TriggerBootup(uint32 in_zone_id = 0, uint32 in_instance_id = 0, const char* admin_name = 0, bool is_static_zone = false);
|
||||||
void Disconnect() { auto handle = tcpc->Handle(); if (handle) { handle->Disconnect(); } }
|
void Disconnect() { auto handle = tcpc->Handle(); if (handle) { handle->Disconnect(); } }
|
||||||
void IncomingClient(Client* client);
|
void IncomingClient(Client* client);
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user