On 03/14, Josh Triplett wrote:
What I was proposing was that a task that isn't yet dead, but that is
going to be autoreaped, is not eligible for waiting either. All the
various wait* familiy of system calls should pretend it doesn't exist at
all, because returning an autoreaped task from a wait* call introduces a
race condition if the parent tries to *do* anything with the returned
PID. If you launch a process with CLONE_FD, you need to manage it
exclusively with that fd, not with the wait* family of system calls.
That also implies that the child-stop and child-continued mechanisms
(do_notify_parent_cldstop, WSTOPPED, WCONTINUED) should ignore the task
too. In the future there could be a flag to clone4 that lets you get
stop and continue notifications through the file descriptor.
So far I strongly disagree, and I think that "autoreap" feature should
not depend on CLONE_FD.
However, as I already said, perhaps something like W_IGNORE_AUTOREAP
for wait* makes sense.
Plus we should also discuss the reparenting. Ok, let me leave this
discussion until I read 0/4 at least.
Oleg.