X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?p=elogind.git;a=blobdiff_plain;f=src%2Fcore%2Fmain.c;h=5cdd20aef8685fa863812cab1fc82f2455d6d8e0;hp=e2e1399564afc8c0c01769a82644c33399dfcdd8;hb=df6e44c4affced590b0d19c594d9301ffd436591;hpb=8b173b5e8ccbf946ee88af456792d8e720292d9b diff --git a/src/core/main.c b/src/core/main.c index e2e139956..5cdd20aef 100644 --- a/src/core/main.c +++ b/src/core/main.c @@ -224,12 +224,17 @@ noreturn static void crash(int sig) { } static void install_crash_handler(void) { - struct sigaction sa = { + static const struct sigaction sa = { .sa_handler = crash, - .sa_flags = SA_NODEFER, + .sa_flags = SA_NODEFER, /* So that we can raise the signal again from the signal handler */ }; + int r; - sigaction_many(&sa, SIGNALS_CRASH_HANDLER, -1); + /* We ignore the return value here, since, we don't mind if we + * cannot set up a crash handler */ + r = sigaction_many(&sa, SIGNALS_CRASH_HANDLER, -1); + if (r < 0) + log_debug_errno(r, "I had trouble setting up the crash handler, ignoring: %m"); } static int console_setup(void) { @@ -1824,6 +1829,7 @@ int main(int argc, char *argv[]) { finish: pager_close(); + arg_shutdown_watchdog = m->shutdown_watchdog; m = manager_free(m); for (j = 0; j < ELEMENTSOF(arg_default_rlimit); j++) {