chiark / gitweb /
main: expclitly ignore signal when executing crash shell
[elogind.git] / main.c
diff --git a/main.c b/main.c
index 6a3eee2eb0511b6a74c81870d3c184fb48d6c02b..622ba631519b90811d92e8aae79d9c15acf5514f 100644 (file)
--- a/main.c
+++ b/main.c
@@ -121,6 +121,8 @@ _noreturn static void crash(int sig) {
                 assert_se(sigaddset(&mask, sig) == 0);
                 assert_se(sigprocmask(SIG_SETMASK, &mask, NULL) == 0);
 
+                ignore_signal(sig);
+
                 execl("/bin/sh", "/bin/sh", NULL);
                 log_error("execl() failed: %s", strerror(errno));
         }
@@ -575,5 +577,8 @@ finish:
 
         dbus_shutdown();
 
+        if (getpid() == 1)
+                freeze();
+
         return retval;
 }