Changeset: 2ffdb335da39 for MonetDB URL: https://dev.monetdb.org/hg/MonetDB?cmd=changeset;node=2ffdb335da39 Modified Files: tools/merovingian/daemon/handlers.c Branch: Jun2020 Log Message:
Log with which signal the server crashed. diffs (198 lines): diff --git a/tools/merovingian/daemon/handlers.c b/tools/merovingian/daemon/handlers.c --- a/tools/merovingian/daemon/handlers.c +++ b/tools/merovingian/daemon/handlers.c @@ -26,38 +26,136 @@ #endif -static const char *sigint = "SIGINT"; -static const char *sigterm = "SIGTERM"; -static const char *sigquit = "SIGQUIT"; -static const char *sighup = "SIGHUP"; -static const char *sigabrt = "SIGABRT"; -static const char *sigsegv = "SIGSEGV"; -static const char *sigbus = "SIGBUS"; -static const char *sigkill = "SIGKILL"; static const char * sigtostr(int sig) { switch (sig) { - case SIGINT: - return(sigint); - case SIGTERM: - return(sigterm); - case SIGQUIT: - return(sigquit); - case SIGHUP: - return(sighup); - case SIGABRT: - return(sigabrt); - case SIGSEGV: - return(sigsegv); +#ifdef SIGABRT + case SIGABRT: + return "SIGABRT"; /* Aborted */ +#endif +#ifdef SIGALRM + case SIGALRM: + return "SIGALRM"; /* Alarm clock */ +#endif #ifdef SIGBUS - case SIGBUS: - return(sigbus); + case SIGBUS: + return "SIGBUS"; /* Bus error */ +#endif +#ifdef SIGCHLD + case SIGCHLD: + return "SIGCHLD"; /* Child exited */ +#endif +#ifdef SIGCONT + case SIGCONT: + return "SIGCONT"; /* Continued */ +#endif +#ifdef SIGFPE + case SIGFPE: + return "SIGFPE"; /* Floating point exception */ +#endif +#ifdef SIGHUP + case SIGHUP: + return "SIGHUP"; /* Hangup */ +#endif +#ifdef SIGILL + case SIGILL: + return "SIGILL"; /* Illegal instruction */ +#endif +#ifdef SIGINT + case SIGINT: + return "SIGINT"; /* Interrupt */ +#endif +#ifdef SIGKILL + case SIGKILL: + return "SIGKILL"; /* Killed */ +#endif +#ifdef SIGPIPE + case SIGPIPE: + return "SIGPIPE"; /* Broken pipe */ +#endif +#ifdef SIGPOLL + case SIGPOLL: + return "SIGPOLL"; /* Pollable event */ +#endif +#ifdef SIGPROF + case SIGPROF: + return "SIGPROF"; /* Profiling timer expired */ +#endif +#ifdef SIGPWR + case SIGPWR: + return "SIGPWR"; /* Power fail */ +#endif +#ifdef SIGQUIT + case SIGQUIT: + return "SIGQUIT"; /* Quit */ +#endif +#ifdef SIGSEGV + case SIGSEGV: + return "SIGSEGV"; /* Segmentation fault */ +#endif +#ifdef SIGSTKFLT + case SIGSTKFLT: + return "SIGSTKFLT"; /* Stack fault */ #endif - case SIGKILL: - return(sigkill); - default: - return(NULL); +#ifdef SIGSTOP + case SIGSTOP: + return "SIGSTOP"; /* Stopped (signal) */ +#endif +#ifdef SIGSYS + case SIGSYS: + return "SIGSYS"; /* Bad system call */ +#endif +#ifdef SIGTERM + case SIGTERM: + return "SIGTERM"; /* Terminated */ +#endif +#ifdef SIGTRAP + case SIGTRAP: + return "SIGTRAP"; /* Trace/breakpoint trap */ +#endif +#ifdef SIGTSTP + case SIGTSTP: + return "SIGTSTP"; /* Stopped */ +#endif +#ifdef SIGTTIN + case SIGTTIN: + return "SIGTTIN"; /* Stopped (tty input) */ +#endif +#ifdef SIGTTOU + case SIGTTOU: + return "SIGTTOU"; /* Stopped (tty output) */ +#endif +#ifdef SIGURG + case SIGURG: + return "SIGURG"; /* Urgent I/O condition */ +#endif +#ifdef SIGUSR1 + case SIGUSR1: + return "SIGUSR1"; /* User defined signal 1 */ +#endif +#ifdef SIGUSR2 + case SIGUSR2: + return "SIGUSR2"; /* User defined signal 2 */ +#endif +#ifdef SIGVTALRM + case SIGVTALRM: + return "SIGVTALRM"; /* Virtual timer expired */ +#endif +#ifdef SIGWINCH + case SIGWINCH: + return "SIGWINCH"; /* Window changed */ +#endif +#ifdef SIGXCPU + case SIGXCPU: + return "SIGXCPU"; /* CPU time limit exceeded */ +#endif +#ifdef SIGXFSZ + case SIGXFSZ: + return "SIGXFSZ"; /* File size limit exceeded */ +#endif + default: + return NULL; } } @@ -198,20 +296,20 @@ childhandler(void) "exit status %d\n", p->dbname, (long long int)p->pid, WEXITSTATUS(wstatus)); } else if (WIFSIGNALED(wstatus)) { + const char *sigstr = sigtostr(WTERMSIG(wstatus)); + char signum[8]; + if (sigstr == NULL) { + snprintf(signum, 8, "%d", WTERMSIG(wstatus)); + sigstr = signum; + } if (WCOREDUMP(wstatus)) { Mfprintf(stdout, "database '%s' (%lld) has crashed " - "(dumped core)\n", p->dbname, - (long long int)p->pid); + "with signal %s (dumped core)\n", + p->dbname, (long long int)p->pid, sigstr); } else { - const char *sigstr = sigtostr(WTERMSIG(wstatus)); - char signum[8]; - if (sigstr == NULL) { - snprintf(signum, 8, "%d", WTERMSIG(wstatus)); - sigstr = signum; - } - Mfprintf(stdout, "database '%s' (%lld) was killed by signal " - "%s\n", p->dbname, - (long long int)p->pid, sigstr); + Mfprintf(stdout, "database '%s' (%lld) was killed " + "by signal %s\n", + p->dbname, (long long int)p->pid, sigstr); } } break; _______________________________________________ checkin-list mailing list checkin-list@monetdb.org https://www.monetdb.org/mailman/listinfo/checkin-list