https://gcc.gnu.org/bugzilla/show_bug.cgi?id=113957

--- Comment #1 from Iain Sandoe <iains at gcc dot gnu.org> ---
the problem is that liberty is using the value set by posix_spawnp for pid.
but:

(darwin):
     The argument pid is a pointer to a pid_t variable to receive the pid of
the spawned process; if this is NULL, then the pid of the spawned process is
not returned.  If this pointer is non-NULL, then on
     successful completion, the variable will be modified to contain the pid of
the spawned process.  The value is undefined in the case of a failure.

(linux):
Upon successful completion, posix_spawn() and posix_spawnp() place the PID of
the child process in pid, and return 0.  If there is an error during the fork()
step, then no child is created, the contents of *pid are
       unspecified, and these functions return an error number as described
below.

So .. I think the fix will be to set pid = -1 in the error paths .. will try
that.

Reply via email to