From 459217b6d6935585d24593d04fceec2d166bf1b8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Adrien=20B=C3=A9raud?= <adrien.beraud@savoirfairelinux.com> Date: Wed, 17 Jul 2019 14:50:06 -0400 Subject: [PATCH] dhtnode: avoid deadlock in shutdown --- tools/dhtnode.cpp | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/tools/dhtnode.cpp b/tools/dhtnode.cpp index a29495fb..add30dc2 100644 --- a/tools/dhtnode.cpp +++ b/tools/dhtnode.cpp @@ -578,15 +578,19 @@ main(int argc, char **argv) std::mutex m; bool done {false}; - node->shutdown([&]() - { - done = true; + node->shutdown([&]() { + { + std::lock_guard<std::mutex> lk(m); + done = true; + } cv.notify_all(); }); // wait for shutdown - std::unique_lock<std::mutex> lk(m); - cv.wait(lk, [&](){ return done; }); + { + std::unique_lock<std::mutex> lk(m); + cv.wait(lk, [&](){ return done; }); + } node->join(); #ifdef WIN32_NATIVE -- GitLab