Hi Kir, On 07/08, Kir Kolyshkin wrote: > > [1]: https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/commit/?id=64bef697d33b The changelog says: pidfd: implement PIDFD_THREAD flag for pidfd_open() With this flag: - pidfd_open() doesn't require that the target task must be a thread-group leader - pidfd_poll() succeeds when the task exits and becomes a zombie (iow, passes exit_notify()), even if it is a leader and thread-group is not empty. This means that the behaviour of pidfd_poll(PIDFD_THREAD, pid-of-group-leader) is not well defined if it races with exec() from its sub-thread; pidfd_poll() can succeed or not depending on whether pidfd_task_exited() is called before or after exchange_tids(). > +The behavior depends on whether the file descriptor refers > +to a process (thread-group leader) or a thread (see > +.B PIDFD_THREAD > +above): > +.RS > +.IP \[bu] 3 > +For a thread-group leader, the polling task is woken if the > +thread-group is empty. In other words, if the thread-group > +leader task exits when there are still threads alive in its > +thread-group, the polling task will not be woken when the > +thread-group leader exits, but rather when the last thread in the > +thread-group exits. so this part is not accurate. See also 43f0df54c96fa5a ("pidfd_poll: report POLLHUP when pid_task() == NULL") which adds another feature. Oleg.