summaryrefslogtreecommitdiff
path: root/src/search.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/search.c')
-rwxr-xr-xsrc/search.c32
1 files changed, 21 insertions, 11 deletions
diff --git a/src/search.c b/src/search.c
index 31220e1..807f69d 100755
--- a/src/search.c
+++ b/src/search.c
@@ -486,7 +486,21 @@ Search(IN SEARCHER_THREAD_CONTEXT *ctx,
ctx->sSearchFlags.fAvoidNullmove = TRUE;
RescoreMovesViaSearch(ctx, uDepth, iAlpha, iBeta);
ctx->sSearchFlags.fAvoidNullmove = FALSE;
- ASSERT(TRUE == pi->fMovesRescoredByIID);
+ // NOT always TRUE here -- pre-existing bug, found
+ // via debug_smoke_test.sh (a deeper/larger-than-
+ // usual sample finally hit the rare path).
+ // RescoreMovesViaSearch's own fail-high branch
+ // (searchsup.c) deliberately leaves this FALSE by
+ // design -- a fail-high only proves uBest is good
+ // enough, not honest eval-axis scores for every
+ // move, so claiming fMovesRescoredByIID would be a
+ // lie. This assert demanded the opposite of that
+ // documented contract; DO_IID is unconditionally
+ // compiled in (chess.h) so this could fire on any
+ // DEBUG build given an unlucky enough rescore --
+ // ASSERT is a no-op in release, so this never
+ // crashed in production, but it made the DEBUG/
+ // TEST harness itself unreliable at random.
}
}
#endif
@@ -727,15 +741,12 @@ Search(IN SEARCHER_THREAD_CONTEXT *ctx,
iCheckSee,
&iExtend);
- // Cap how many extension plies this line may spend in total
- // (root to here) so that a chain of checks/threats/etc. can't
- // stall uDepth's descent indefinitely and burn the entire
- // MAX_PLY_PER_SEARCH ply budget on one forcing sequence.
- if (iExtend > 0)
- {
- iExtend = MIN(iExtend,
- MAX(MAX_EXTEND_PER_LINE - pf->iCumulativeExtend, 0));
- }
+ // Note: MAX_EXTEND_PER_LINE (a flat, non-depth-relative cap on
+ // total extension spent per line) used to be applied here.
+ // Removed -- g_uExtensionReduction[] (consumed inside
+ // ComputeMoveExtension, scaled off g_uIterateDepth) is the
+ // sole extension-runaway guard now; see root.c's construction
+ // of that table.
// Decide how much (if any) to reduce this move's depth --
// graded LMR.
@@ -799,7 +810,6 @@ Search(IN SEARCHER_THREAD_CONTEXT *ctx,
ULONG uFHAttempts = 0;
ULONG uFHPct = GetMoveFailHighPercentage(mv, &uFHAttempts);
fThisMoveEFPPruned =
- (mv.cFrom != FindEnprisePiece(ctx, pos->uToMove)) &&
((uFHAttempts < EFP_FH_MIN_SAMPLES) ||
(uFHPct <= EFP_FH_PRUNE_THRESHOLD)) &&
(!IS_SAME_MOVE(mv, ctx->mvKiller[ctx->uPly-1][0])) &&