diff options
author | Christopher Faylor <me@cgf.cx> | 2005-09-02 04:46:51 +0000 |
---|---|---|
committer | Christopher Faylor <me@cgf.cx> | 2005-09-02 04:46:51 +0000 |
commit | 7a1bf10a8433261a1dd4ae86b76750716d358569 (patch) | |
tree | b7afc8189706eba8c9e0ccca56ca61c7cda00013 /winsup/cygwin/fork.cc | |
parent | 062c2fa42f64aef80615e433af44028332b34ca8 (diff) | |
download | cygnal-7a1bf10a8433261a1dd4ae86b76750716d358569.tar.gz cygnal-7a1bf10a8433261a1dd4ae86b76750716d358569.tar.bz2 cygnal-7a1bf10a8433261a1dd4ae86b76750716d358569.zip |
bad_addresses
Diffstat (limited to 'winsup/cygwin/fork.cc')
-rw-r--r-- | winsup/cygwin/fork.cc | 13 |
1 files changed, 7 insertions, 6 deletions
diff --git a/winsup/cygwin/fork.cc b/winsup/cygwin/fork.cc index 785aabd4f..f16eabc32 100644 --- a/winsup/cygwin/fork.cc +++ b/winsup/cygwin/fork.cc @@ -283,8 +283,7 @@ fork_parent (HANDLE&, dll *&first_dll, bool& load_dlls, void *stack_here, child_ pthread::atforkprepare (); - int c_flags = GetPriorityClass (hMainProc) /*| - CREATE_NEW_PROCESS_GROUP*/; + int c_flags = GetPriorityClass (hMainProc); STARTUPINFO si = {0, NULL, NULL, NULL, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, NULL, NULL, NULL, NULL}; /* If we don't have a console, then don't create a console for the @@ -336,7 +335,7 @@ fork_parent (HANDLE&, dll *&first_dll, bool& load_dlls, void *stack_here, child_ /* Remove impersonation */ cygheap->user.deimpersonate (); - syscall_printf ("CreateProcess (%s, %s, 0, 0, 1, %x, 0, 0, %p, %p)", + syscall_printf ("CreateProcess (%s, %s, 0, 0, 1, %p, 0, 0, %p, %p)", myself->progname, myself->progname, c_flags, &si, &pi); bool locked = __malloc_lock (); rc = CreateProcess (myself->progname, /* image to run */ @@ -418,7 +417,8 @@ fork_parent (HANDLE&, dll *&first_dll, bool& load_dlls, void *stack_here, child_ /* Wait for subproc to initialize itself. */ if (!ch.sync (child->pid, pi.hProcess, FORK_WAIT_TIMEOUT)) { - system_printf ("child %d died waiting for longjmp before initialization", child_pid); + if (NOTSTATE (child, PID_EXITED)) + system_printf ("child %d died waiting for longjmp before initialization", child_pid); goto cleanup; } @@ -469,7 +469,8 @@ fork_parent (HANDLE&, dll *&first_dll, bool& load_dlls, void *stack_here, child_ goto cleanup; else if (!ch.sync (child->pid, pi.hProcess, FORK_WAIT_TIMEOUT)) { - system_printf ("child %d died waiting for dll loading", child_pid); + if (NOTSTATE (child, PID_EXITED)) + system_printf ("child %d died waiting for dll loading", child_pid); goto cleanup; } @@ -506,7 +507,7 @@ fork_parent (HANDLE&, dll *&first_dll, bool& load_dlls, void *stack_here, child_ __malloc_unlock (); /* Remember to de-allocate the fd table. */ - if (pi.hProcess) + if (pi.hProcess && !child.hProcess) ForceCloseHandle1 (pi.hProcess, childhProc); if (pi.hThread) ForceCloseHandle (pi.hThread); |