aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorregnat <rg@regnat.ovh>2021-10-11 10:47:02 +0200
committerregnat <rg@regnat.ovh>2021-10-11 10:51:22 +0200
commit7466048d397ed33d4bc28b6910c834cf1a17b0cb (patch)
tree6131097a87ab62a9ea88b7d8f9574920970538bd /src
parent01e9f046a8f8fafb4d084153d4b30dd3a8d7aef5 (diff)
(partially) Revert "Don't copy in rethrow"
This reverts some parts of commit 8430a8f0866e4463a891ccce62779ea9ac0f3b38 which was trying to rethrow some exceptions while we weren’t in the context of a `catch` block, causing some weird “terminate called without an active exception” errors. Fix #5368
Diffstat (limited to 'src')
-rw-r--r--src/libexpr/primops.cc2
-rw-r--r--src/libstore/build/local-derivation-goal.cc2
2 files changed, 2 insertions, 2 deletions
diff --git a/src/libexpr/primops.cc b/src/libexpr/primops.cc
index f27331534..4e0eda7f3 100644
--- a/src/libexpr/primops.cc
+++ b/src/libexpr/primops.cc
@@ -575,7 +575,7 @@ static Bindings::iterator getAttr(
// Adding another trace for the function name to make it clear
// which call received wrong arguments.
e.addTrace(pos, hintfmt("while invoking '%s'", funcName));
- throw;
+ throw e;
}
}
diff --git a/src/libstore/build/local-derivation-goal.cc b/src/libstore/build/local-derivation-goal.cc
index 3fc156108..8d245f84a 100644
--- a/src/libstore/build/local-derivation-goal.cc
+++ b/src/libstore/build/local-derivation-goal.cc
@@ -948,7 +948,7 @@ void LocalDerivationGoal::startBuilder()
FdSource source(builderOut.readSide.get());
auto ex = readError(source);
ex.addTrace({}, "while setting up the build environment");
- throw;
+ throw ex;
}
debug("sandbox setup: " + msg);
msgs.push_back(std::move(msg));