Disable inheritance of jobserver FDs for recursive make. BZ #1827850
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 commit is contained in:
parent
efd32f8da0
commit
c55f31d05d
36
make-4.3-cloexec.patch
Normal file
36
make-4.3-cloexec.patch
Normal file
@ -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;
|
||||
}
|
||||
|
10
make.spec
10
make.spec
@ -3,7 +3,7 @@ Summary: A GNU tool which simplifies the build process for users
|
||||
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 @@ Patch1: make-4.0-noclock_gettime.patch
|
||||
# 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 @@ echo ============END TESTING===========
|
||||
%{_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
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user