Module Name: src Committed By: rillig Date: Fri Mar 7 16:41:21 UTC 2025
Modified Files: src/usr.bin/make: job.c Log Message: make: prevent SIGPIPE for child processes in parallel mode Starting with job.c 1.198 from 2020-06-19, when one branch of a parallel build failed, make exited immediately without waiting until the child processes from the other branches had finished. As a consequence, the child processes faced a SIGPIPE when they tried to write to stdout. The call to Job_Wait is taken straight from Fatal, where it used to be called before the "die silently" execution path was introduced in 2020. To generate a diff of this commit: cvs rdiff -u -r1.487 -r1.488 src/usr.bin/make/job.c Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/usr.bin/make/job.c diff -u src/usr.bin/make/job.c:1.487 src/usr.bin/make/job.c:1.488 --- src/usr.bin/make/job.c:1.487 Fri Mar 7 06:50:34 2025 +++ src/usr.bin/make/job.c Fri Mar 7 16:41:21 2025 @@ -1,4 +1,4 @@ -/* $NetBSD: job.c,v 1.487 2025/03/07 06:50:34 rillig Exp $ */ +/* $NetBSD: job.c,v 1.488 2025/03/07 16:41:21 rillig Exp $ */ /* * Copyright (c) 1988, 1989, 1990 The Regents of the University of California. @@ -138,7 +138,7 @@ #include "trace.h" /* "@(#)job.c 8.2 (Berkeley) 3/19/94" */ -MAKE_RCSID("$NetBSD: job.c,v 1.487 2025/03/07 06:50:34 rillig Exp $"); +MAKE_RCSID("$NetBSD: job.c,v 1.488 2025/03/07 16:41:21 rillig Exp $"); /* * A shell defines how the commands are run. All commands for a target are @@ -2747,10 +2747,7 @@ Job_TokenWithdraw(void) errno == EAGAIN) continue; if (shouldDieQuietly(NULL, 1)) { - /* - * TODO: better clean up properly, to avoid killing - * child processes by SIGPIPE. - */ + Job_Wait(); exit(6); } Fatal("A failure has been detected "