On 04/19, Christian Brauner wrote:
Just for the exit notification purposes, the states are: if process has exit_state == 0, block. if process is zombie/dead but not reaped, then return POLLIN if process is reaped, then return POLLIN | POLLHUP
Oleg was explicitly against EXIT_ZOMBIE/DEAD thing, no? He said so in a prior mail. Has this been addressed?
Yes, please don't use EXIT_XXX codes, nobody should ever use them except the core kernel exit/wait paths. For example, EXIT_DEAD means that the task auto- reaps or its parent had to temporary drop tasklist.
Just check ->exit_state != 0 && thread_group_empty(). Note that we need thread_group_empty() only for the case when the task is traced, in this case we have an extra notification for debugger which can confuse pidfd_poll().
And of course, everything will differ if/when we will need to monitor the sub-threads.
And btw I don't think it needs tasklist_lock, but lets discuss this when we have a new version based on pidfd.
Oleg.