bug-make
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[bug #49014] Zombies in parallel builds with pselect code


From: Paul D. Smith
Subject: [bug #49014] Zombies in parallel builds with pselect code
Date: Tue, 13 Sep 2016 14:33:24 +0000 (UTC)
User-agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:48.0) Gecko/20100101 Firefox/48.0

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/




reply via email to

[Prev in Thread] Current Thread [Next in Thread]