Follow-up Comment #4, bug #49014 (project make): I took a look through the code. I could to do a more comprehensive review but at first glance it looks like everything is OK: if PSELECT is enabled then we block SIGCHLD right at the start of the make process and we never unblock it except as a parameter to pselect().
However, I think that pselect() in the *BSD systems is not POSIX-compliant: according to the FreeBSD 5.0 man pages: _The pselect() function is implemented in the C library as a wrapper around select()._ It is not possible to correctly implement pselect() in the C library using select(); it MUST have kernel system call support. Otherwise there is a very real race condition that cannot be closed. I'm not sure that there's any way to detect pselect() without kernel syscall support from autoconf, so the best I can do (assuming that my diagnosis is correct) would be to detect the target platform and disable pselect() support on BSD targets. If you elect to discuss this issue on any BSD mailing lists please CC me. Regarding the Linux issue with SIGSTOP and SIGCONT, I can't explain that. I hate to suggest a kernel bug because 99.9% of the time you end up with egg on your face, but I do wonder if there's an issue with SIGSTOP/SIGCONT and pselect() where it's losing a signal somewhere. Also I suppose Linux 3.2 is pretty old at this point; perhaps someone on the kernel lists might have a thought. _______________________________________________________ Reply to this item at: <http://savannah.gnu.org/bugs/?49014> _______________________________________________ Message sent via/by Savannah http://savannah.gnu.org/ _______________________________________________ Bug-make mailing list Bug-make@gnu.org https://lists.gnu.org/mailman/listinfo/bug-make