mirror of
https://git.savannah.gnu.org/git/make.git
synced 2025-01-12 16:45:35 +00:00
[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
This commit is contained in:
parent
0c326a66c9
commit
d79fe162c0
1 changed files with 5 additions and 0 deletions
|
@ -145,6 +145,11 @@ jobserver_parse_auth (const char *auth)
|
||||||
/* When using pselect() we want the read to be non-blocking. */
|
/* When using pselect() we want the read to be non-blocking. */
|
||||||
set_blocking (job_fds[0], 0);
|
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;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue