Messages in this thread | | | Date | Tue, 19 Apr 2011 21:41:02 +0400 | From | Stas Sergeev <> | Subject | Re: [path][rfc] add PR_DETACH prctl command [3/3] |
| |
19.04.2011 21:20, Oleg Nesterov wrote:
>>> do_signal_parent() must not return DEATH_REAP (this means that >>> leader->exit_signal becomes -1), but this can happen and this is bug. >>> >> Could you please clarify this a bit: according to the comments >> in signal.c: >> --- >> * We are exiting and our parent doesn't care. POSIX.1 >> * defines special semantics for setting SIGCHLD to SIG_IGN >> * or setting the SA_NOCLDWAIT flag: we should be reaped >> * automatically and not left for our parent's wait4 call. >> --- >> That's how I understand it: if DEATH_REAP is returned, the >> parent ignores SIGCHILD, and in this case I am not allowing >> it to read the detach code with wait(). What is the bug? > Indeed. But, once again, that is why do_notify_parent() expects the dead > tsk! Please note that if it returns DEATH_REAP it sets ->exit_signal = -1. > And this is _only_ allowed if the leader is already dead and we are going > to reap it. Ah, so, by saying "do_signal_parent() must not return DEATH_REAP (this means that leader->exit_signal becomes -1)", you actually meant "do_signal_parent(), when returning DEATH_REAP, must not set ->exit_signal = -1, because only do_notify_parent() can do that"? In other words, do_signal_parent() can return DEATH_REAP after all? If so - will fix, thanks.
| |