This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
On 10/18/2017 01:51 PM, Adhemerval Zanella wrote:
+ /* There still an unlikely case where the child is cancelled after + setting args.to a positive error value. Also due a possible + pid reuse race (where the kernel allocated the same pid to + unrelated process) we need not to undefinitely hang expecting + an invalid pid. In both cases an error is returned to the + caller. */ + __waitpid (new_pid, NULL, WNOHANG);
It took a while to wrap my head around this one. I don't think the WNOHANG makes much of a difference because in the non-race case, the kernel should ensure that the wait notification is ready before vfork returns from the kernel in the parent process. We had some issues with wait notifications, but I hope this one is actually properly serialized.
The race case (i.e., PID reuse because a signal handler or another thread does a wildcard waitpid) is vaguely undefined anyway.
We could probably do better if we called clone without SIGCHLD. Not sure if that works, but it's a different enhancement and out of scope for this patch. If Andreas is happy with what you've got, so am I.
Thanks, Florian
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |