mirror of
https://github.com/opelly27/Stockfish.git
synced 2026-05-20 10:57:43 +00:00
Ensure ttValue != VALUE_NONE in singular extension search
The assert: assert(ttValue != VALUE_NONE); Could fire for multiple reasons (although is very rare), for instance after an IID we can have ttMove != MOVE_NONE while ttValue is still set at VALUE_NONE. But not only this, actually SMP is a source of corrupted ttValue and anyhow we can detect the condition: ttMove != MOVE_NONE && ttValue == VALUE_NONE even north of IID. Reported by Ronald de Man. It is so rare that bench didn't change. bench: 7710548
This commit is contained in:
+1
-2
@@ -700,6 +700,7 @@ moves_loop: // When in check and at SpNode search starts from here
|
|||||||
&& depth >= 8 * ONE_PLY
|
&& depth >= 8 * ONE_PLY
|
||||||
&& abs(beta) < VALUE_KNOWN_WIN
|
&& abs(beta) < VALUE_KNOWN_WIN
|
||||||
&& ttMove != MOVE_NONE
|
&& ttMove != MOVE_NONE
|
||||||
|
&& ttValue != VALUE_NONE
|
||||||
&& !excludedMove // Recursive singular search is not allowed
|
&& !excludedMove // Recursive singular search is not allowed
|
||||||
&& (tte->bound() & BOUND_LOWER)
|
&& (tte->bound() & BOUND_LOWER)
|
||||||
&& tte->depth() >= depth - 3 * ONE_PLY;
|
&& tte->depth() >= depth - 3 * ONE_PLY;
|
||||||
@@ -766,8 +767,6 @@ moves_loop: // When in check and at SpNode search starts from here
|
|||||||
&& !ext
|
&& !ext
|
||||||
&& pos.legal(move, ci.pinned))
|
&& pos.legal(move, ci.pinned))
|
||||||
{
|
{
|
||||||
assert(ttValue != VALUE_NONE);
|
|
||||||
|
|
||||||
Value rBeta = ttValue - int(depth);
|
Value rBeta = ttValue - int(depth);
|
||||||
ss->excludedMove = move;
|
ss->excludedMove = move;
|
||||||
ss->skipNullMove = true;
|
ss->skipNullMove = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user