]> git.eshelyaron.com Git - emacs.git/commitdiff
Work around macOS bug in create_process, too
authorPaul Eggert <eggert@cs.ucla.edu>
Sun, 21 May 2017 09:00:02 +0000 (02:00 -0700)
committerPaul Eggert <eggert@cs.ucla.edu>
Sun, 21 May 2017 09:00:29 +0000 (02:00 -0700)
* src/process.c (create_process) [DARWIN_OS]:
Reset SIGCHLD after vfork here, too.

src/process.c

index c30173955d27266a50b892af162388b177fc0f48..2a1c2eecde3a4fc15fc93088a61b46ad40811e51 100644 (file)
@@ -2051,11 +2051,16 @@ create_process (Lisp_Object process, char **new_argv, Lisp_Object current_dir)
 
 #ifdef DARWIN_OS
   /* Darwin doesn't let us run setsid after a vfork, so use fork when
-     necessary. */
+     necessary.  Also, reset SIGCHLD handling after a vfork, as
+     apparently macOS can mistakenly deliver SIGCHLD to the child.  */
   if (pty_flag)
     pid = fork ();
   else
-    pid = vfork ();
+    {
+      pid = vfork ();
+      if (pid == 0)
+       signal (SIGCHLD, SIG_DFL);
+    }
 #else
   pid = vfork ();
 #endif