mirror of
https://github.com/TES3MP/openmw-tes3mp.git
synced 2025-02-28 01:39:40 +00:00
[Server] Add custom terminate handler with stacktrace
This commit is contained in:
parent
a3d5fbbdcd
commit
dad0b38f25
1 changed files with 84 additions and 75 deletions
|
@ -139,8 +139,25 @@ boost::program_options::variables_map launchOptions(int argc, char *argv[], File
|
||||||
return variables;
|
return variables;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#include "stacktrace.hpp"
|
||||||
|
|
||||||
|
|
||||||
int main(int argc, char *argv[])
|
int main(int argc, char *argv[])
|
||||||
{
|
{
|
||||||
|
set_terminate([]() {
|
||||||
|
try
|
||||||
|
{
|
||||||
|
rethrow_exception(current_exception());
|
||||||
|
}
|
||||||
|
catch (const exception &e)
|
||||||
|
{
|
||||||
|
LOG_MESSAGE_SIMPLE(Log::LOG_FATAL, " Woops, something wrong! Exception:\n\t%s", e.what());
|
||||||
|
}
|
||||||
|
|
||||||
|
stacktrace();
|
||||||
|
abort();
|
||||||
|
});
|
||||||
|
|
||||||
Settings::Manager mgr;
|
Settings::Manager mgr;
|
||||||
Files::ConfigurationManager cfgMgr;
|
Files::ConfigurationManager cfgMgr;
|
||||||
|
|
||||||
|
@ -210,9 +227,6 @@ int main(int argc, char *argv[])
|
||||||
|
|
||||||
RakNet::SocketDescriptor sd((unsigned short) port, addr.c_str());
|
RakNet::SocketDescriptor sd((unsigned short) port, addr.c_str());
|
||||||
|
|
||||||
//try
|
|
||||||
{
|
|
||||||
|
|
||||||
switch (peer->Startup((unsigned) players, &sd, 1))
|
switch (peer->Startup((unsigned) players, &sd, 1))
|
||||||
{
|
{
|
||||||
case RakNet::RAKNET_STARTED:
|
case RakNet::RAKNET_STARTED:
|
||||||
|
@ -252,7 +266,8 @@ int main(int argc, char *argv[])
|
||||||
for (int i = 0;; ++i)
|
for (int i = 0;; ++i)
|
||||||
list.push_back(mgr.getString("Plugin" + to_string(i), "Plugins"));
|
list.push_back(mgr.getString("Plugin" + to_string(i), "Plugins"));
|
||||||
}
|
}
|
||||||
catch (...) {} // Manager::getString throws runtime_error exception if setting is not exist
|
catch (...)
|
||||||
|
{} // Manager::getString throws runtime_error exception if setting is not exist
|
||||||
|
|
||||||
networking.getState().loadMods(plugin_home, &list);
|
networking.getState().loadMods(plugin_home, &list);
|
||||||
}
|
}
|
||||||
|
@ -282,12 +297,6 @@ int main(int argc, char *argv[])
|
||||||
code = networking.mainLoop();
|
code = networking.mainLoop();
|
||||||
|
|
||||||
networking.getMasterClient()->Stop();
|
networking.getMasterClient()->Stop();
|
||||||
}
|
|
||||||
/*catch (std::exception &e)
|
|
||||||
{
|
|
||||||
LOG_MESSAGE_SIMPLE(Log::LOG_ERROR, e.what());
|
|
||||||
throw; //fall through
|
|
||||||
}*/
|
|
||||||
|
|
||||||
RakNet::RakPeerInterface::DestroyInstance(peer);
|
RakNet::RakPeerInterface::DestroyInstance(peer);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue