Cygwin: pinfo: stop remember doing reattach

During fork, the child process requires the process table to be
initialized for fixup_shms_after_fork, while still allowing subsequent
dlls.load_after_fork to fail silently (for when the "forkable" hardlinks
are not created yet).
pinfo::remember not performing reattach anymore requires explicit
pinfo::reattach now where appropriate.

Prepares to improve "Cygwin: fork: Remember child not before success."
commit f03ea8e1c5, which leads to fork
problems if cygserver is running:

https://cygwin.com/ml/cygwin-patches/2019-q2/msg00155.html
This commit is contained in:
Michael Haubenwallner
2019-07-31 12:35:31 +02:00
committed by Corinna Vinschen
parent 6661a67747
commit 23a779bf3d
3 changed files with 14 additions and 5 deletions

View File

@@ -779,7 +779,9 @@ child_info_spawn::worker (const char *prog_arg, const char *const *argv,
child->start_time = time (NULL); /* Register child's starting time. */
child->nice = myself->nice;
postfork (child);
if (!child.remember (mode == _P_DETACH))
if (mode == _P_DETACH
? !child.remember (true)
: !(child.remember (false) && child.reattach ()))
{
/* FIXME: Child in strange state now */
CloseHandle (pi.hProcess);