[Top][All Lists]

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

[bug #46261] missing usage of EINTRLOOP macro

From: Jack Howarth
Subject: [bug #46261] missing usage of EINTRLOOP macro
Date: Wed, 21 Oct 2015 02:02:49 +0000
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_1) AppleWebKit/601.2.7 (KHTML, like Gecko) Version/9.0.1 Safari/601.2.7


                 Summary: missing usage of EINTRLOOP macro
                 Project: make
            Submitted by: jwhowarth
            Submitted on: Wed 21 Oct 2015 02:02:48 AM GMT
                Severity: 3 - Normal
              Item Group: Bug
                  Status: None
                 Privacy: Public
             Assigned to: None
             Open/Closed: Open
         Discussion Lock: Any
       Component Version: 4.1
        Operating System: POSIX-Based
           Fixed Release: None
           Triage Status: None



The fink project has found that their package manager (which uses flock()
under perl) triggers a race condition in make 4.1 producing build failures of
the form...

make: INTERNAL: Exiting with 1 jobserver tokens available; should be 8!

on OS X 10.12. 

The following code in main.c is suspected...

3365       /* Close the write side, so the read() won't hang.  */
3366       close (job_fds[1]);
3368       while (read (job_fds[0], &token, 1) == 1)
3369         ++tcnt;
3370 #endif
3372       if (tcnt != master_job_slots)
3373         ONN (error, NILF,
3374              "INTERNAL: Exiting with %u jobserver tokens available;
should be %u!",
3375              tcnt, master_job_slots);
3377 #ifdef WINDOWS32
3378       free_jobserver_semaphore ();
3379 #else
3380       close (job_fds[0]);
3381 #endif

as the section...

while (read (job_fds[0], &token, 1) == 1)

seems to be missing the usage of the EINTRLOOP() macro and the reads could
fail with EINTR resulting in tcnt being left at 1 as observed when make 4.1 is
executed from perl with prior flock() usage in the perl scripts.
     Any idea how to adjust those two lines to properly use the  EINTRLOOP()


Reply to this item at:


  Message sent via/by Savannah

reply via email to

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