Another observation that seems to point at SIGCHLD handling being the issue
is the failure seen in building texinfo under fink make on 10.11....

make[5]: *** read jobs pipe: No such file or directory.  Stop.
make[5]: *** Waiting for unfinished jobs....

during the InfoTest. Note that in the make 4.1 sources this error is
emitted in the code...

#ifndef WINDOWS32
        /* If the error _wasn't_ expected (EINTR or EBADF), punt.
Otherwise,
           go back and reap_children(), and try again.  */
        errno = saved_errno;
        if (errno != EINTR && errno != EBADF)
          pfatal_with_name (_("read jobs pipe"));
        if (errno == EBADF)
          DB (DB_JOBS, ("Read returned EBADF.\n"));
#endif

in job.c. According to
http://cboard.cprogramming.com/c-programming/124120-errno-%3D%3D-eintr-means-what-thank-u.html,
EINTR means "This call did not succeed because it was interrupted. However,
if you try again, it will probably work."  Also, note the comment....

        /* Read a token.  As long as there's no token available we'll block.
           We enable interruptible system calls before the read(2) so that
if
           we get a SIGCHLD while we're waiting, we'll return with EINTR and
           we can process the death(s) and return tokens to the free pool.

in job.c which suggests that the emission of EINTR is tied to SIGCHLD
handling. So it would appear that the SIGCHLD handling is broken when make
4.x runs under fink's usage of perl and causes the EINTR's to not be
emitted.
------------------------------------------------------------------------------
_______________________________________________
Fink-devel mailing list
Fink-devel@lists.sourceforge.net
List archive:
http://news.gmane.org/gmane.os.apple.fink.devel
Subscription management:
https://lists.sourceforge.net/lists/listinfo/fink-devel

Reply via email to