Commit 838d52a8be

Andrew Kelley <superjoe30@gmail.com>
2017-09-08 06:45:45
std.os.ChildProcess: don't expect all SIGCHLD to come from spawn
1 parent a81e516
Changed files (1)
std/os/child_process.zig
@@ -341,8 +341,11 @@ extern fn sigchld_handler(_: i32) {
         var status: i32 = undefined;
         const pid_result = posix.waitpid(-1, &status, posix.WNOHANG);
         const err = posix.getErrno(pid_result);
-        if (err == posix.ECHILD) {
-            return;
+        if (err > 0) {
+            if (err == posix.ECHILD) {
+                return;
+            }
+            unreachable;
         }
         handleTerm(i32(pid_result), status);
     }
@@ -352,12 +355,10 @@ fn handleTerm(pid: i32, status: i32) {
     var it = children_nodes.first;
     while (it) |node| : (it = node.next) {
         if (node.data.pid == pid) {
-            assert(node.data.term == null);
             node.data.handleWaitResult(status);
             return;
         }
     }
-    unreachable;
 }
 
 const sigchld_set = {