From 44c78fdb7ad4c82656f25e4da11f3f9d56a4c6aa Mon Sep 17 00:00:00 2001 From: Marco Costalba Date: Thu, 10 Nov 2011 09:20:41 +0100 Subject: [PATCH 1/1] Fix regression: engine hangs while pondering After a "stop" due to a ponder miss Xboard sends immediately the new position to search, without waiting for engine to effectively stop the search. It is not clear if this is a GUI bug (as I suspect) or allowed behaviour, but because it won't be fixed anyway workaround this issue making listener thread to switch to in-sync mode as soon as a "stop" command is received. Thanks to Mike Whiteley for reporting this. No functional change. Signed-off-by: Marco Costalba --- src/thread.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/thread.cpp b/src/thread.cpp index ca9fe14d..4a37d393 100644 --- a/src/thread.cpp +++ b/src/thread.cpp @@ -433,8 +433,10 @@ void Thread::listener_loop() { if (is_searching) { // Command "quit" is the last one received by the GUI, so park the - // thread waiting for exiting. - if (cmd == "quit") + // thread waiting for exiting. Also, after a "stop", for instance on a + // ponder miss, GUI can immediately send the new position to search, + // so return to in-sync mode to avoid discarding good data. + if (cmd == "quit" || cmd == "stop") is_searching = false; do_uci_async_cmd(cmd); -- 2.39.2