static void on_signal_terminate (int signum)
{
ERROR("Terminating signal %d received: %s", signum, strsignal(signum));
+ if (signum == SIGABRT)
+ dumpstack(3);
exit(1);
}
int sig_monitor_init()
{
- static int sigerr[] = { SIG_FOR_TIMER, SIGSEGV, SIGFPE, 0 };
- static int sigterm[] = { SIGINT, SIGABRT, 0 };
+ static int sigerr[] = { SIG_FOR_TIMER, SIGSEGV, SIGFPE, SIGILL, SIGBUS, 0 };
+ static int sigterm[] = { SIGINT, SIGABRT, SIGTERM, 0 };
return (install(on_signal_error, sigerr) & install(on_signal_terminate, sigterm)) - 1;
}