* child_info.h (child_info_fork::fork_retry): Declare new function.
* dcrt0.cc (child_info_fork::fork_retry): Define new function. * fork.cc (frok::parent): Move retry decision into child_info_fork::fork_retry and honor what it tells us to do. * sigproc.cc (sig_send): Unhold signals on __SIGEXIT.
This commit is contained in:
@ -326,12 +326,9 @@ frok::parent (void *stack_here)
|
||||
/* Wait for subproc to initialize itself. */
|
||||
if (!ch.sync (pi.dwProcessId, pi.hProcess, FORK_WAIT_TIMEOUT))
|
||||
{
|
||||
DWORD exit_code;
|
||||
if (GetExitCodeProcess (pi.hProcess, &exit_code) && exit_code == EXITCODE_RETRY)
|
||||
{
|
||||
ch.retry--;
|
||||
continue;
|
||||
}
|
||||
DWORD exit_code = ch.fork_retry (pi.hProcess);
|
||||
if (!exit_code)
|
||||
continue;
|
||||
this_errno = EAGAIN;
|
||||
/* Not thread safe, but do we care? */
|
||||
static char buf[sizeof("died waiting for longjmp before "
|
||||
|
Reference in New Issue
Block a user