mirror of
https://github.com/sockspls/badfish
synced 2025-04-30 16:53:09 +00:00
Fix a crash introduced few days ago
Crash is due to uninitialized ss->futilityMoveCount that when happens to be negative, yields to an out of range access in futility_margin(). Bug is subtle because it shows itself only in SMP case. Indeed in single thread mode we only use the Stack ss[MAX_PLY_PLUS_2]; Allocated at the begin of id_loop() and due to pure (bad) luck, it happens that for all the MAX_PLY_PLUS_2 elements, ss[i].futilityMoveCount >= 0 Note that the patch does not prevent futilityMoveCount to be overwritten after, for instance singular search or null verification, but to keep things readable and because the effect is almost unmeasurable, we here prefer a slightly incorrect but simpler patch. bench: 4311634
This commit is contained in:
parent
2ef53ee368
commit
e508494a99
1 changed files with 3 additions and 1 deletions
|
@ -523,6 +523,7 @@ namespace {
|
|||
bestValue = -VALUE_INFINITE;
|
||||
ss->currentMove = threatMove = (ss+1)->excludedMove = bestMove = MOVE_NONE;
|
||||
ss->ply = (ss-1)->ply + 1;
|
||||
ss->futilityMoveCount = 0;
|
||||
(ss+1)->skipNullMove = false; (ss+1)->reduction = DEPTH_ZERO;
|
||||
(ss+2)->killers[0] = (ss+2)->killers[1] = MOVE_NONE;
|
||||
|
||||
|
@ -806,7 +807,6 @@ split_point_start: // At split points actual search starts from here
|
|||
<< " currmovenumber " << moveCount + PVIdx << sync_endl;
|
||||
}
|
||||
|
||||
ss->futilityMoveCount = 0;
|
||||
ext = DEPTH_ZERO;
|
||||
captureOrPromotion = pos.is_capture_or_promotion(move);
|
||||
givesCheck = pos.move_gives_check(move, ci);
|
||||
|
@ -906,6 +906,8 @@ split_point_start: // At split points actual search starts from here
|
|||
// far in the move list we are to be more aggressive in the child node.
|
||||
ss->futilityMoveCount = moveCount;
|
||||
}
|
||||
else
|
||||
ss->futilityMoveCount = 0;
|
||||
|
||||
// Check for legality only before to do the move
|
||||
if (!RootNode && !SpNode && !pos.pl_move_is_legal(move, ci.pinned))
|
||||
|
|
Loading…
Add table
Reference in a new issue