]> git.sur5r.net Git - i3/i3/commitdiff
Bugfix: Use _exit() instead of exit to avoid calling atexit functions (Thanks f8l)
authorMichael Stapelberg <michael@stapelberg.de>
Wed, 5 Sep 2012 15:09:23 +0000 (17:09 +0200)
committerMichael Stapelberg <michael@stapelberg.de>
Wed, 5 Sep 2012 15:09:23 +0000 (17:09 +0200)
Basically, this is the same fix as commit 914ca6cf :-/. Once again, we
called exit() instead of _exit(), but this time it lead to a kill(0,
SIGTERM), effectively killing all processes in the i3 process group,
including i3 itself. The cause for the kill(0) is that nagbar_pid is set
to 0 by fork(), signaling we’re in the child process. The cleanup
handler only checks for nagbar_pid being -1 as a special value, however.

src/util.c

index d337963eaa093b2c1bd8f7d29684640f4b099bb8..8273e0cf0150cda981d42af87b3f1171e336f10b 100644 (file)
@@ -91,7 +91,7 @@ void exec_i3_utility(char *name, char *argv[]) {
     char buffer[BUFSIZ];
     if (readlink("/proc/self/exe", buffer, BUFSIZ) == -1) {
         warn("could not read /proc/self/exe");
-        exit(1);
+        _exit(1);
     }
     dir = dirname(buffer);
     sasprintf(&migratepath, "%s/%s", dir, name);
@@ -100,7 +100,7 @@ void exec_i3_utility(char *name, char *argv[]) {
 #endif
 
     warn("Could not start %s", name);
-    exit(2);
+    _exit(2);
 }
 
 /*