Thread (7 messages) 7 messages, 5 authors, 2015-03-23

Re: [PATCH v2 0/7] CLONE_FD: Task exit notification via file descriptor

From: <hidden>
Date: 2015-03-16 23:29:49
Also in: linux-fsdevel, lkml

On Mon, Mar 16, 2015 at 03:14:14PM -0700, Thiago Macieira wrote:
On Monday 16 March 2015 14:44:20 Kees Cook wrote:
quoted
quoted
              O_CLOEXEC
                     Set  the  close-on-exec  flag on the new file
descriptor. See the description of the O_CLOEXEC flag in open(2)  for
reasons why this may be useful.
This begs the question: what happens when all CLONE_FD fds for a
process are closed? Will the parent get SIGCHLD instead, will it
auto-reap, or will it be un-wait-able (I assume not this...)
Depends on CLONE_AUTOREAP. If it's on, then no one gets SIGCHLD, no one can 
wait() on it and the process autoreaps itself.
Minor nit: CLONE_AUTOREAP makes the process autoreap and nobody can wait
on it, but if you pass SIGCHLD or some other exit signal to clone then
you'll still get that signal.
If it's no active, then the old rules apply: parent gets SIGCHILD and can 
wait(). If the parent exited first, then the child gets reparented to init, 
which can do the wait().
Right.
A child without CLONE_AUTOREAP should be wait()able. If it gets wait()ed 
before the clonefd is read, the clonefd() will return a 0 read. If it gets 
read before wait, then wait() reaps another child or returns -ECHILD. That's 
no different than two threads doing simultaneous wait() on the same child.
Hrm?  That isn't the semantics we implemented; you'll *always* get an
exit notification via the clonefd if you have it open, with or without
autoreap and whether or not a wait has occurred yet.  And reading from
the clonefd does not serve as a wait; if you don't pass CLONE_AUTOREAP,
you'll still need to wait on the process.

- Josh Triplett
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help