Thanks. You know, I can't replicate the "problem". Which was a single position where a fixed depth search produced a different bestmove when hashing was turned on and off. Everything appears in order. I guess my testing methodology was not as rigorous as one would like.hgm wrote:If you get different result (move or score) with exct-depth hits, I would suspect a bug. I don't see how exact-depth TT hits could change a search result from doing the search.
Best way to test is probably to add a flag argument to Search to suppress TT writing, passed on to the daughters. In the root you start with TT writing allowed. As soon as you get a TT hit that would normally make you take a cutoff, you set that flag, and do the search anyway. So you in fact always do the complete search as if you had no TT at all, but you let the TT evolve as if you were doing hash cutoffs.
Then, if the search returns a bound that violated what was in the TT, there must be an error in that node, either during the current search, or the search that filled that entry.
You will note that the position above has several good moves by the bishop, whereby the bishop ends up being sacrificed for the advanced pawn, and White wins the pawn endgame. Perhaps the fact that thee are several best moves played a role, but like I said, my testing was not rigorous enough to prove the point.