From be9aba2fa0b9c9fa1d55a3c9bc87def967fa5911 Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Wed, 14 Sep 2011 06:16:46 +0100 Subject: [PATCH] Don't lock before check for termination Restore old locking scheme changed with commit 1e92df6b20aa2240. This seems to prevent a very rare crash that occurs once every 5-10K games. With this patch we have no crashes after 33K games. Signed-off-by: Marco Costalba --- src/search.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/src/search.cpp b/src/search.cpp index 0f2373cd..44084753 100644 --- a/src/search.cpp +++ b/src/search.cpp @@ -2158,17 +2158,16 @@ void Thread::idle_loop(SplitPoint* sp) { { assert((!sp && threadID) || Threads.use_sleeping_threads()); - // Grab the lock to avoid races with Thread::wake_up() - lock_grab(&sleepLock); - // Slave thread should exit as soon as do_terminate flag raises if (do_terminate) { assert(!sp); - lock_release(&sleepLock); return; } + // Grab the lock to avoid races with Thread::wake_up() + lock_grab(&sleepLock); + // If we are master and all slaves have finished don't go to sleep if (sp && all_slaves_finished(sp)) { -- 2.39.2