bug-make
[Top][All Lists]
Advanced

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

Re: GNU make 3.80 rc1


From: Paul D. Smith
Subject: Re: GNU make 3.80 rc1
Date: Sat, 27 Jul 2002 02:21:02 -0400

%% "Michael Sterrett -Mr. Bones.-" <address@hidden> writes:

  msb> Attached are two patches against make-3.80rc1 that I *must* apply to
  msb> GNU make to get it work properly on PTX boxes.

  msb> The first adds a new function, atomic_stat() which checks for and
  msb> loops on EINTR.  The second adds EINTR handling to readdir() in dir.c.

  msb> Both of these situations drove me nearly crazy when we starting
  msb> really using GNU make here since it would work fine with one
  msb> process, but die in various amusing ways with -j (since we get
  msb> SIGCHLD).

  msb> Please, please...could you add these patches or functionally
  msb> equivalent code (if you don't like the patches themselves) to
  msb> 3.80?

I'm not willing to change any code until I understand the problem.

This version of GNU make is very careful to avoid this problem, and it
does so _NOT_ by trying to introduce atomic versions of every
interruptible system call which, if you try to do at all you will
quickly realize is a Herculean feat.  Your patch may fix the most common
places the problem appears but it will _not_ fix the entire problem,
everywhere.

Instead, GNU make simply marks these signals as restartable at all time,
_except_ in the very specific, localized area where the job server
functionality requires that they interrupt the system call.  This way
if you're invoking stat() and a SIGCHLD comes in, stat() will _NOT_
return with EINTR, so you don't have to check for it.  Ditto for the
other interruptible system calls (of which there are _lots_).

The GNU make configure script is careful to not allow jobserver
capabilities unless the operating system appears to support this
capability (restartable system calls).


So, if you are still seeing these types of failures with the rc1 release
of GNU make (and not just _assuming_ you'll get them because you didn't
see the "atomicized" stat(), etc. ;)) we appear to have one of these
situations:

 a) There's a bug in the GNU make code that manages restartable system
    calls, so there's still a hole where they can get through where
    they're not wanted.

 b) There's a bug in PTX where it appears to, but doesn't, handle
    restartable system calls according to the accepted standards.

 c) There's a problem with the configure script so that it is concluding
    PTX does support jobserver capabilities, when it really doesn't.

I don't have, or have access to, a PTX system so until I get some better
information on what's actually going wrong I don't want to start
changing code.

Please investigate and let me know which of the above situations you
think is the accurate one (or maybe I missed some?)... Thx!

-- 
-------------------------------------------------------------------------------
 Paul D. Smith <address@hidden>          Find some GNU make tips at:
 http://www.gnu.org                      http://www.paulandlesley.org/gmake/
 "Please remain calm...I may be mad, but I am a professional." --Mad Scientist



reply via email to

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