From: Marco Costalba Date: Wed, 14 Sep 2011 05:16:46 +0000 (+0100) Subject: Don't lock before check for termination X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=be9aba2fa0b9c9fa1d55a3c9bc87def967fa5911;hp=35018fa3076a01a62bd4433771c5832d0ddc52e8 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 --- 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)) {