Fix crash when a GC client disconnects

The client thread can't just delete its own thread object from
connections, it has to detach it.
This commit is contained in:
Eelco Dolstra 2021-10-15 16:12:21 +02:00
parent 4d014221d4
commit e0936ae38f

View file

@ -536,7 +536,10 @@ void LocalStore::collectGarbage(const GCOptions & options, GCResults & results)
auto fdClient_ = fdClient.get(); auto fdClient_ = fdClient.get();
std::thread clientThread([&, fdClient = std::move(fdClient)]() { std::thread clientThread([&, fdClient = std::move(fdClient)]() {
Finally cleanup([&]() { 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) { while (true) {