123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960 |
- http://lists.gnu.org/archive/html/bug-make/2005-07/msg00050.html
- http://lists.gnu.org/archive/html/bug-make/2005-08/msg00019.html
- http://bugs.gentoo.org/107613
- 2005-08-07 Paul D. Smith <psmith@gnu.org>
- Fix a bug reported by Michael Matz <matz@suse.de>: patch included.
- If make is running in parallel without -k and two jobs die in a
- row, but not too close to each other, then make will quit without
- waiting for the rest of the jobs to die.
- * main.c (die): Don't reset err before calling reap_children() the
- second time: we still want it to be in the error condition.
- * job.c (reap_children): Use a static variable, rather than err,
- to control whether or not the error message should be printed.
- Index: job.c
- ===================================================================
- RCS file: /cvsroot/make/make/job.c,v
- retrieving revision 1.166
- retrieving revision 1.167
- diff -u -p -r1.166 -r1.167
- --- job.c 26 Jun 2005 03:31:30 -0000 1.166
- +++ job.c 8 Aug 2005 05:08:00 -0000 1.167
- @@ -475,9 +479,14 @@ reap_children (int block, int err)
-
- if (err && block)
- {
- - /* We might block for a while, so let the user know why. */
- + static int printed = 0;
- +
- + /* We might block for a while, so let the user know why.
- + Only print this message once no matter how many jobs are left. */
- fflush (stdout);
- - error (NILF, _("*** Waiting for unfinished jobs...."));
- + if (!printed)
- + error (NILF, _("*** Waiting for unfinished jobs...."));
- + printed = 1;
- }
-
- /* We have one less dead child to reap. As noted in
- Index: main.c
- ===================================================================
- RCS file: /cvsroot/make/make/main.c,v
- retrieving revision 1.210
- retrieving revision 1.211
- diff -u -p -r1.210 -r1.211
- --- main.c 12 Jul 2005 04:35:13 -0000 1.210
- +++ main.c 8 Aug 2005 05:08:00 -0000 1.211
- @@ -2990,7 +2996,8 @@ die (int status)
- print_version ();
-
- /* Wait for children to die. */
- - for (err = (status != 0); job_slots_used > 0; err = 0)
- + err = (status != 0);
- + while (job_slots_used > 0)
- reap_children (1, err);
-
- /* Let the remote job module clean up its state. */
|