#2 Disable inheritance of jobserver FDs for recursive make. BZ #1827850
Merged 3 years ago by djdelorie. Opened 3 years ago by djdelorie.
rpms/ djdelorie/make master  into  master

@@ -0,0 +1,36 @@ 

+ From d79fe162c009788888faaf0317253b6f0cac7092 Mon Sep 17 00:00:00 2001

+ From: Kevin Buettner <kevinb@redhat.com>

+ Date: Thu, 23 Apr 2020 17:05:34 -0400

+ Subject: [SV 58232] Disable inheritance of jobserver FDs for recursive make

+ 

+ A parent make will invoke a sub-make with close-on-exec disabled for

+ the jobserver pipe FDs.  Force close-on-exec to be to be enabled in

+ the sub-make so the pipe is not always passed to child jobs.

+ 

+ I have a test case which, when invoked with a suitable -j switch,

+ will hang if the recipe inherits the jobserver pipe.  This test case

+ was inspired by a real world case in which testing GDB on Fedora

+ would hang due to some poorly written test GDB cases having been

+ passed the jobserver file descriptors.

+ 

+ * src/posixos.c (jobserver_parse_auth): Call fd_noinherit() for

+ jobserver pipe descriptors.

+ 

+ Copyright-paperwork-exempt: yes

+ 

+ diff --git a/src/posixos.c b/src/posixos.c

+ index 525f292c..eab175a4 100644

+ --- a/src/posixos.c

+ +++ b/src/posixos.c

+ @@ -145,6 +145,11 @@ jobserver_parse_auth (const char *auth)

+    /* When using pselect() we want the read to be non-blocking.  */

+    set_blocking (job_fds[0], 0);

+  

+ +  /* By default we don't send the job pipe FDs to our children.

+ +     See jobserver_pre_child() and jobserver_post_child().  */

+ +  fd_noinherit (job_fds[0]);

+ +  fd_noinherit (job_fds[1]);

+ +

+    return 1;

+  }

+  

file modified
+9 -1
@@ -3,7 +3,7 @@ 

  Name: make

  Epoch: 1

  Version: 4.3

- Release: 2%{?dist}

+ Release: 3%{?dist}

  License: GPLv3+

  URL: http://www.gnu.org/software/make/

  Source: ftp://ftp.gnu.org/gnu/make/make-%{version}.tar.gz
@@ -18,6 +18,11 @@ 

  # BZs #142691, #17374

  Patch2: make-4.3-j8k.patch

  

+ # https://bugzilla.redhat.com/show_bug.cgi?id=1827850

+ # https://savannah.gnu.org/bugs/?58232

+ # Remove on next make rebase

+ Patch3: make-4.3-cloexec.patch

+ 

  # autoreconf

  BuildRequires: autoconf, automake, gettext-devel

  BuildRequires: procps
@@ -75,6 +80,9 @@ 

  %{_includedir}/gnumake.h

  

  %changelog

+ * Wed Jul 29 2020 DJ Delorie <dj@redhat.com> - 1:4.3-3

+ - Disable inheritance of jobserver FDs for recursive make. BZ #1827850

+ 

  * Tue Jul 28 2020 Fedora Release Engineering <releng@fedoraproject.org> - 1:4.3-2

  - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild

  

Backport upstream git d79fe162c009788888faaf0317253b6f0cac7092
https://bugzilla.redhat.com/show_bug.cgi?id=1827850
https://savannah.gnu.org/bugs/?58232
Remove on next make rebase

This looks good to me and matches the upstream fix.

Reviewed-by: Carlos O'Donell carlos@redhat.com

Pull-Request has been merged by djdelorie

3 years ago