diff --git a/engine/server/application/CentralServer/src/linux/main.cpp b/engine/server/application/CentralServer/src/linux/main.cpp index 01310248..191d1a41 100755 --- a/engine/server/application/CentralServer/src/linux/main.cpp +++ b/engine/server/application/CentralServer/src/linux/main.cpp @@ -12,10 +12,30 @@ #include "sharedRandom/SetupSharedRandom.h" #include "sharedThread/SetupSharedThread.h" +#ifdef ENABLE_PROFILING +extern "C" int __llvm_profile_write_file(void); +#endif + +inline void signalHandler(int s){ + printf("PlanetServer terminating, signal %d\n",s); + +#ifdef ENABLE_PROFILING + __llvm_profile_write_file(); +#endif + + exit(0); +} + // ====================================================================== int main(int argc, char ** argv) { + struct sigaction sigIntHandler; + sigIntHandler.sa_handler = signalHandler; + sigemptyset(&sigIntHandler.sa_mask); + sigIntHandler.sa_flags = 0; + sigaction(SIGINT, &sigIntHandler, NULL); + SetupSharedThread::install(); SetupSharedDebug::install(1024); @@ -52,6 +72,7 @@ int main(int argc, char ** argv) SetupSharedFoundation::remove(); #ifdef ENABLE_PROFILING + __llvm_profile_write_file(); exit(0); #endif diff --git a/engine/server/application/ChatServer/src/linux/main.cpp b/engine/server/application/ChatServer/src/linux/main.cpp index 09aa339e..59e8de14 100755 --- a/engine/server/application/ChatServer/src/linux/main.cpp +++ b/engine/server/application/ChatServer/src/linux/main.cpp @@ -12,10 +12,31 @@ #include "sharedRandom/SetupSharedRandom.h" #include "sharedThread/SetupSharedThread.h" +#ifdef ENABLE_PROFILING +extern "C" int __llvm_profile_write_file(void); +#endif + +inline void signalHandler(int s){ + printf("PlanetServer terminating, signal %d\n",s); + +#ifdef ENABLE_PROFILING + __llvm_profile_write_file(); +#endif + + exit(0); +} + // ====================================================================== int main(int argc, char ** argv) { + struct sigaction sigIntHandler; + sigIntHandler.sa_handler = signalHandler; + sigemptyset(&sigIntHandler.sa_mask); + sigIntHandler.sa_flags = 0; + sigaction(SIGINT, &sigIntHandler, NULL); + + SetupSharedThread::install(); SetupSharedDebug::install(1024); @@ -40,6 +61,7 @@ int main(int argc, char ** argv) SetupSharedFoundation::remove(); #ifdef ENABLE_PROFILING + __llvm_profile_write_file(); exit(0); #endif diff --git a/engine/server/application/CommoditiesServer/src/linux/main.cpp b/engine/server/application/CommoditiesServer/src/linux/main.cpp index ed2f1c1d..9becf1ab 100755 --- a/engine/server/application/CommoditiesServer/src/linux/main.cpp +++ b/engine/server/application/CommoditiesServer/src/linux/main.cpp @@ -96,9 +96,9 @@ int main(int argc, char ** argv) SetupSharedThread::remove(); #ifdef ENABLE_PROFILING - __llvm_profile_write_file(); + __llvm_profile_write_file(); + exit(0); #endif - return 0; } diff --git a/engine/server/application/LogServer/src/linux/main.cpp b/engine/server/application/LogServer/src/linux/main.cpp index 881b19aa..9e384084 100755 --- a/engine/server/application/LogServer/src/linux/main.cpp +++ b/engine/server/application/LogServer/src/linux/main.cpp @@ -71,9 +71,9 @@ int main(int argc, char **argv) SetupSharedThread::remove(); #ifdef ENABLE_PROFILING - __llvm_profile_write_file(); + __llvm_profile_write_file(); + exit(0); #endif - return 0; } diff --git a/engine/server/application/LoginServer/src/linux/main.cpp b/engine/server/application/LoginServer/src/linux/main.cpp index f9c64bc0..3cbc9951 100755 --- a/engine/server/application/LoginServer/src/linux/main.cpp +++ b/engine/server/application/LoginServer/src/linux/main.cpp @@ -66,8 +66,8 @@ int main(int argc, char **argv) { SetupSharedFoundation::remove(); #ifdef ENABLE_PROFILING - __llvm_profile_write_file(); + __llvm_profile_write_file(); + exit(0); #endif - return 0; } diff --git a/engine/server/application/PlanetServer/src/linux/main.cpp b/engine/server/application/PlanetServer/src/linux/main.cpp index 8ae07010..20dd2b65 100755 --- a/engine/server/application/PlanetServer/src/linux/main.cpp +++ b/engine/server/application/PlanetServer/src/linux/main.cpp @@ -89,8 +89,8 @@ int main(int argc, char ** argv) SetupSharedThread::remove(); #ifdef ENABLE_PROFILING - __llvm_profile_write_file(); + __llvm_profile_write_file(); + exit(0); #endif - return 0; } diff --git a/engine/server/application/TaskManager/src/linux/main.cpp b/engine/server/application/TaskManager/src/linux/main.cpp index 01eb40b7..21c69818 100755 --- a/engine/server/application/TaskManager/src/linux/main.cpp +++ b/engine/server/application/TaskManager/src/linux/main.cpp @@ -64,7 +64,8 @@ int main(int argc, char ** argv) SetupSharedFoundation::remove(); #ifdef ENABLE_PROFILING - __llvm_profile_write_file(); + __llvm_profile_write_file(); + exit(0); #endif return 0; diff --git a/game/server/application/SwgDatabaseServer/src/linux/main.cpp b/game/server/application/SwgDatabaseServer/src/linux/main.cpp index d821a03a..9b9682d3 100755 --- a/game/server/application/SwgDatabaseServer/src/linux/main.cpp +++ b/game/server/application/SwgDatabaseServer/src/linux/main.cpp @@ -95,7 +95,8 @@ int main(int argc, char ** argv) SetupSharedThread::remove(); #ifdef ENABLE_PROFILING - __llvm_profile_write_file(); + __llvm_profile_write_file(); + exit(0); #endif return 0; diff --git a/game/server/application/SwgGameServer/src/linux/main.cpp b/game/server/application/SwgGameServer/src/linux/main.cpp index 2cbf630c..9fd7df90 100755 --- a/game/server/application/SwgGameServer/src/linux/main.cpp +++ b/game/server/application/SwgGameServer/src/linux/main.cpp @@ -159,9 +159,9 @@ int main(int argc, char ** argv) SetupSharedThread::remove (); #ifdef ENABLE_PROFILING - __llvm_profile_write_file(); + __llvm_profile_write_file(); + exit(0); #endif - return 0; }