From: Joost VandeVondele Date: Sat, 8 Dec 2018 22:03:42 +0000 (+0100) Subject: Start a TT resize only after search finished. X-Git-Url: https://git.sesse.net/?p=stockfish;a=commitdiff_plain;h=fda0161e3a5295a759f04a0e302567a773f82595;ds=sidebyside Start a TT resize only after search finished. As noticed in the forum, a crash in extract_ponder_from_tt could result if hash size is set before the ponder move is printed. While it is arguably a GUI issue (but it got me on the cli), it is easy to avoid this issue. Closes https://github.com/official-stockfish/Stockfish/pull/1856 No functional change. --- diff --git a/src/thread.cpp b/src/thread.cpp index e6912084..f88e359b 100644 --- a/src/thread.cpp +++ b/src/thread.cpp @@ -136,10 +136,10 @@ void ThreadPool::set(size_t requested) { while (size() < requested) push_back(new Thread(size())); clear(); - } - // Reallocate the hash with the new threadpool size - TT.resize(Options["Hash"]); + // Reallocate the hash with the new threadpool size + TT.resize(Options["Hash"]); + } } /// ThreadPool::clear() sets threadPool data to initial values. diff --git a/src/tt.cpp b/src/tt.cpp index 716d13e0..50e8a3bf 100644 --- a/src/tt.cpp +++ b/src/tt.cpp @@ -24,6 +24,7 @@ #include "bitboard.h" #include "misc.h" +#include "thread.h" #include "tt.h" #include "uci.h" @@ -58,6 +59,8 @@ void TTEntry::save(Key k, Value v, Bound b, Depth d, Move m, Value ev) { void TranspositionTable::resize(size_t mbSize) { + Threads.main()->wait_for_search_finished(); + clusterCount = mbSize * 1024 * 1024 / sizeof(Cluster); free(mem);