diff options
author | Eelco Dolstra <edolstra@gmail.com> | 2017-01-19 16:58:39 +0100 |
---|---|---|
committer | Eelco Dolstra <edolstra@gmail.com> | 2017-01-19 17:16:14 +0100 |
commit | 21948deed99a3295e4d5666e027a6ca42dc00b40 (patch) | |
tree | 62579dc51fdee152a67486d428f39ecceb84f08e /src/libmain/shared.cc | |
parent | 63e10b4d28e64107e51207f292ab0093a95c1bc6 (diff) |
Kill builds when we get EOF on the log FD
This closes a long-time bug that allowed builds to hang Nix
indefinitely (regardless of timeouts) simply by doing
exec > /dev/null 2>&1; while true; do true; done
Now, on EOF, we just send SIGKILL to the child to make sure it's
really gone.
Diffstat (limited to 'src/libmain/shared.cc')
-rw-r--r-- | src/libmain/shared.cc | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/src/libmain/shared.cc b/src/libmain/shared.cc index 44579a236..12f083c7f 100644 --- a/src/libmain/shared.cc +++ b/src/libmain/shared.cc @@ -333,7 +333,7 @@ RunPager::~RunPager() if (pid != -1) { std::cout.flush(); close(STDOUT_FILENO); - pid.wait(true); + pid.wait(); } } catch (...) { ignoreException(); |