aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libstore/build/substitution-goal.cc2
-rw-r--r--src/libstore/remote-store.cc1
-rw-r--r--src/libutil/thread-pool.cc2
3 files changed, 5 insertions, 0 deletions
diff --git a/src/libstore/build/substitution-goal.cc b/src/libstore/build/substitution-goal.cc
index 93867007d..e77772f96 100644
--- a/src/libstore/build/substitution-goal.cc
+++ b/src/libstore/build/substitution-goal.cc
@@ -217,6 +217,8 @@ void PathSubstitutionGoal::tryToRun()
thr = std::thread([this]() {
try {
+ ReceiveInterrupts receiveInterrupts;
+
/* Wake up the worker loop when we're done. */
Finally updateStats([this]() { outPipe.writeSide.close(); });
diff --git a/src/libstore/remote-store.cc b/src/libstore/remote-store.cc
index dda119809..2f4933577 100644
--- a/src/libstore/remote-store.cc
+++ b/src/libstore/remote-store.cc
@@ -1071,6 +1071,7 @@ void RemoteStore::ConnectionHandle::withFramedSink(std::function<void(Sink & sin
std::thread stderrThread([&]()
{
try {
+ ReceiveInterrupts receiveInterrupts;
processStderr(nullptr, nullptr, false);
} catch (...) {
ex = std::current_exception();
diff --git a/src/libutil/thread-pool.cc b/src/libutil/thread-pool.cc
index dc4067f1b..6513234ba 100644
--- a/src/libutil/thread-pool.cc
+++ b/src/libutil/thread-pool.cc
@@ -77,6 +77,8 @@ void ThreadPool::process()
void ThreadPool::doWork(bool mainThread)
{
+ ReceiveInterrupts receiveInterrupts;
+
if (!mainThread)
interruptCheck = [&]() { return (bool) quit; };