mirror of
https://github.com/mirror/make.git
synced 2025-03-14 03:40:32 +08: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
@ -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;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user