bug-make
[Top][All Lists]
Advanced

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

[bug #58232] FD_CLOEXEC not initialized on jobserver pipe for recursive


From: Kevin Buettner
Subject: [bug #58232] FD_CLOEXEC not initialized on jobserver pipe for recursive make invocations
Date: Thu, 23 Apr 2020 17:58:59 -0400 (EDT)
User-agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.113 Safari/537.36

URL:
  <https://savannah.gnu.org/bugs/?58232>

                 Summary: FD_CLOEXEC not initialized on jobserver pipe for
recursive make invocations
                 Project: make
            Submitted by: kevinbuettner
            Submitted on: Thu 23 Apr 2020 09:58:58 PM UTC
                Severity: 3 - Normal
              Item Group: Bug
                  Status: None
                 Privacy: Public
             Assigned to: None
             Open/Closed: Open
         Discussion Lock: Any
       Component Version: 4.3
        Operating System: POSIX-Based
           Fixed Release: None
           Triage Status: None

    _______________________________________________________

Details:

In make version 4.3, there are circumstances in which the jobserver pipe FDs
are not closed when invoking a job that's not a recursive make invocation. 
This happens when invoking make from the top-level make and then starting
another (non-make) job.

I have a test case which causes "make -j4" to hang on 4.3, but not on 4.2.1. 
Download the attachment make-cloexec-bug.tgz, and do the following:

[kevinb-fedora@rawhide-1 ~]$ tar xf make-cloexec-bug.tgz 
[kevinb-fedora@rawhide-1 ~]$ cd make-cloexec-bug
[kevinb-fedora@rawhide-1 make-cloexec-bug]$ make -j4
sleep 2; echo a
sleep 1; echo b
make -C looper
make[1]: Entering directory '/home/kevinb-fedora/make-cloexec-bug/looper'
gcc -o looper looper.c
./looper
In looper; do...
kill -KILL 2360472
...when done.
make[1]: Leaving directory '/home/kevinb-fedora/make-cloexec-bug/looper'
b
a
^C
[kevinb-fedora@rawhide-1 make-cloexec-bug]$ make --version
GNU Make 4.3
Built for x86_64-redhat-linux-gnu
Copyright (C) 1988-2020 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
[kevinb-fedora@rawhide-1 make-cloexec-bug]$ kill -KILL 2360472

Note that I needed to interrupt the "make -j4" invocation with Ctrl-C in order
to get back to the shell.

This problem occurs for me on current Fedora rawhide using
make-4.3-1.fc33.x86_64, but I have also reproduced it using make built from
git sources; "make --version" shows 4.3.90 for the git version.

---

Here's what a successful / non-buggy run looks like when using make 4.2.1 on
Fedora 31:

[kevinb-fedora@f31-1 ~]$ tar xf make-cloexec-bug.tgz
[kevinb-fedora@f31-1 ~]$ cd make-cloexec-bug
[kevinb-fedora@f31-1 make-cloexec-bug]$ make -j4
sleep 2; echo a
sleep 1; echo b
make -C looper
make[1]: Entering directory '/home/kevinb-fedora/make-cloexec-bug/looper'
gcc -o looper looper.c
./looper
In looper; do...
kill -KILL 814945
...when done.
make[1]: Leaving directory '/home/kevinb-fedora/make-cloexec-bug/looper'
b
a
[kevinb-fedora@f31-1 make-cloexec-bug]$ make --version
GNU Make 4.2.1
Built for x86_64-redhat-linux-gnu
Copyright (C) 1988-2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
[kevinb-fedora@f31-1 make-cloexec-bug]$ kill -KILL 814945

Note that I did NOT need to interrupt make with Ctrl-C in this run.

I have a patch for this bug.  I'll attach/upload it after the bug is
submitted.  (I want to be able to put the bug ID into the commit log.)



    _______________________________________________________

File Attachments:


-------------------------------------------------------
Date: Thu 23 Apr 2020 09:58:58 PM UTC  Name: make-cloexec-bug.tgz  Size: 559B 
 By: kevinbuettner

<http://savannah.gnu.org/bugs/download.php?file_id=48915>

    _______________________________________________________

Reply to this item at:

  <https://savannah.gnu.org/bugs/?58232>

_______________________________________________
  Message sent via Savannah
  https://savannah.gnu.org/




reply via email to

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