mirror of
https://github.com/mirror/make.git
synced 2024-12-29 06:20:17 +08:00
[SV 63111] Ensure output-sync is cleaned on re-exec and recursion
Now that output-sync is using a separate file as a mutex rather than stdout, ensure the new file descriptor is closed before re-exec and not inherited by children. * src/main.c (main): Call osync_clear() before re-exec. * src/posixos.c (osync_setup): Reset output-sync handle inheritance. (osync_parse_mutex): Ditto. Copyright-paperwork-exempt: yes
This commit is contained in:
parent
c2eddf9be2
commit
c801a7fb67
@ -2727,6 +2727,8 @@ main (int argc, char **argv, char **envp)
|
||||
fflush (stdout);
|
||||
fflush (stderr);
|
||||
|
||||
osync_clear();
|
||||
|
||||
/* The exec'd "child" will be another make, of course. */
|
||||
jobserver_pre_child(1);
|
||||
|
||||
|
@ -462,7 +462,7 @@ jobserver_acquire (int timeout)
|
||||
case EBADF:
|
||||
/* Someone closed the jobs pipe.
|
||||
That shouldn't happen but if it does we're done. */
|
||||
O (fatal, NILF, _("job server shut down"));
|
||||
O (fatal, NILF, _("job server shut down"));
|
||||
|
||||
default:
|
||||
pfatal_with_name (_("pselect jobs pipe"));
|
||||
@ -628,7 +628,10 @@ osync_setup ()
|
||||
{
|
||||
osync_handle = get_tmpfd (&osync_tmpfile);
|
||||
if (osync_handle >= 0)
|
||||
sync_parent = 1;
|
||||
{
|
||||
fd_noinherit (osync_handle);
|
||||
sync_parent = 1;
|
||||
}
|
||||
}
|
||||
|
||||
char *
|
||||
@ -662,6 +665,8 @@ osync_parse_mutex (const char *mutex)
|
||||
OSS (fatal, NILF, _("cannot open output sync mutex %s: %s"),
|
||||
osync_tmpfile, strerror (errno));
|
||||
|
||||
fd_noinherit (osync_handle);
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user