--- deliantra/server/common/utils.C 2008/08/30 05:19:03 1.79 +++ deliantra/server/common/utils.C 2008/09/11 12:43:17 1.82 @@ -451,7 +451,14 @@ { if (!fork ()) { - signal (SIGABRT, SIG_DFL); + signal (SIGINT , SIG_IGN); + signal (SIGTERM, SIG_IGN); + signal (SIGABRT, SIG_IGN); + + signal (SIGSEGV, SIG_DFL); + signal (SIGBUS , SIG_DFL); + signal (SIGILL , SIG_DFL); + signal (SIGTRAP, SIG_DFL); // try to put corefiles into a subdirectory, if existing, to allow // an administrator to reduce the I/O load. @@ -469,6 +476,14 @@ close (i); } + { + sigset_t empty; + sigemptyset (&empty); + sigprocmask (SIG_SETMASK, &empty, 0); + } + + // try to coredump with SIGTRAP + kill (getpid (), SIGTRAP); abort (); }