aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/libstore/gc.cc5
1 files changed, 4 insertions, 1 deletions
diff --git a/src/libstore/gc.cc b/src/libstore/gc.cc
index ed792a777..220441927 100644
--- a/src/libstore/gc.cc
+++ b/src/libstore/gc.cc
@@ -536,7 +536,10 @@ void LocalStore::collectGarbage(const GCOptions & options, GCResults & results)
auto fdClient_ = fdClient.get();
std::thread clientThread([&, fdClient = std::move(fdClient)]() {
Finally cleanup([&]() {
- connections.lock()->erase(fdClient.get());
+ auto conn(connections.lock());
+ auto i = conn->find(fdClient.get());
+ i->second.detach();
+ conn->erase(i);
});
while (true) {