]> git.sesse.net Git - stockfish/blobdiff - src/search.cpp
Fix a race in idle_loop() exiting
[stockfish] / src / search.cpp
index f259c8fb5938822d9fe1093de1842a7cb7274e16..7ba64c44337dbe3de43276342f89670d03ed64ba 100644 (file)
@@ -3010,13 +3010,14 @@ namespace {
     // their idle loop. Also copy search stack tail for each slave thread.
     for (int i = 0; i < ActiveThreads; i++)
     {
+        if (splitPoint->slaves[i])
+            memcpy(splitPoint->sstack[i] + ply - 1, sstck + ply - 1, 3 * sizeof(SearchStack));
+
         if (i == master || splitPoint->slaves[i])
         {
-            Threads[i].workIsWaiting = true;
             Threads[i].stop = false;
+            Threads[i].workIsWaiting = true; // This makes the slave to exit from idle_loop()
         }
-        if (splitPoint->slaves[i])
-            memcpy(splitPoint->sstack[i] + ply - 1, sstck + ply - 1, 3 * sizeof(SearchStack));
     }
 
     // Everything is set up. The master thread enters the idle loop, from