X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=main.c;fp=main.c;h=6a3eee2eb0511b6a74c81870d3c184fb48d6c02b;hb=8c43883a682b2edd902b170ab2e0f3d50d7e92e0;hp=3e2bfe10ca94b5ed384a9e6ca205d848c5de8e08;hpb=243b1432c6c9e2b92e9fc948e119ebd6e5f4de2b;p=elogind.git diff --git a/main.c b/main.c index 3e2bfe10c..6a3eee2eb 100644 --- a/main.c +++ b/main.c @@ -110,9 +110,17 @@ _noreturn static void crash(int sig) { chvt(crash_chvt); if (crash_shell) { + sigset_t mask; + log_info("Executing crash shell in 10s..."); sleep(10); + /* Make sure the signal is not delivered inside the + * exec() */ + assert_se(sigemptyset(&mask) == 0); + assert_se(sigaddset(&mask, sig) == 0); + assert_se(sigprocmask(SIG_SETMASK, &mask, NULL) == 0); + execl("/bin/sh", "/bin/sh", NULL); log_error("execl() failed: %s", strerror(errno)); }