On Sat, Mar 14, 2015 at 09:30:29PM +0100, Oleg Nesterov wrote:
On 03/14, Josh Triplett wrote:
quoted
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.
After reading your other mail and thinking about this, I agree that the
two can be separated; see my othermail for the details.
Plus we should also discuss the reparenting. Ok, let me leave this
discussion until I read 0/4 at least.
I think you can safely wait for v2 of the last patch, though the first
four patches should be almost completely identical in v2.
- Josh Triplett