> https://lichess.org/lwiPq9wB#48
When I go to that link it shows Black is winning with -1.9 eval at depth 32 with SF19 1MB NNUE! It looks like it got this evaluation from the cloud database.
Showing Black winning in that position is clearly a bug; at 20 ply Stockfish 19 sees a +0.3 edge for White (which is also wrong; it’s about +5 for White, i.e. clearly winning) and only a +0.6 edge at 24 ply.
To be fair, Topalov, right after this game (1999, so before modern computer analysis), analyzed the game for hours with his second and thought Black still had strong drawing chances after accepting the rook sacrifice.
Any usability of stockfish evaluation for human analysis is collateral.
Unfortunately there seem to be no serious fork of stockfish that would care about usability for human analysis.
I was recently doing some larger study and I stumbled upon a bug/feature of stockfish where it accepts small number of invalid cache reads for a lot of speed.
It would result in infrequent blunders which however affected my analysis, so I removed this optimization in my fork.
It might help young players learning without a coach, but my understanding is that most are just looking at engine evaluation anyway, as tactical speed is a typical advantage of the youth.
Also - it's not only my change is making stockfish not blunder. Any little change in the code or execution will butterly-effect into no blunder.
To reproduce a bunder you have to be very deterministic. You need to specify threads = 1, and fixed cache sizes.
One example move was 48. g4 from this game: https://lichess.org/osSoJGzO#95
https://lichess.org/analysis/1b3r2/8/4P3/2pP2k1/3nB2p/3P3P/5... (now finds 1...Rxf2 = immediately, the evaluation is closer to 0.0)
https://lichess.org/analysis/8/kp2q3/1Np5/pPPp1b2/P2Pp1p1/4P... (finds 1.Nc8+ = quicker (let it ponder four lines), the evaluation is closer to 0.0)
https://lichess.org/analysis/rk6/1p1b4/pBp5/PPPp4/3Pp3/4Pp1p... (The evaluation is closer to 0.0, though still far away)
https://lichess.org/analysis/7k/4p3/5p2/1p1p1p2/1PpP1PpB/1pP... (Evaluation is closer to 0.0)
position fen 1b3r2/8/4P3/2pP2k1/3nB2p/3P3P/5PP1/5KRR b - - 0 1
d
go depth 35
In Stockfish 18: Black is 3.9 pawns ahead, and it wants to play Bg3In Stockfish 19: Black is 1.2 pawns ahead, and it wants to play Rxf2!
So, yes, here Stockfish 18 can’t find Rxf2!, but Stockfish 19 does starting at depth 13.
Let’s take the very famous game Kasparov - Topalov, Wijk aan Zee 1999 and look at the position just after Topalov accepts Kasparov’s Rook Sacrifice:
https://samboy.github.io/blog/Kasparov.html#RookSacAccepted - https://lichess.org/lwiPq9wB#48 - White to move
FEN: b2r3r/k4p1p/p2q1np1/Np1P4/3p1Q2/P4PPB/1PP4P/1K2R3 w - - 0 25
Run the above position in Stockfish 18 with a depth of 25: [1] It shows that White is 3.53 pawns ahead—i.e. White is clearly winning.
Run the above position in Stockfish 19, however, and Stockfish 19 at depth 25 says that, while White is ahead, it’s only a 1.2 pawn edge—Black supposedly still has good drawing chances.
At a depth of 35 ply, Stockfish 19 sees that it’s a clear White victory (6.79 pawns ahead), but it takes far deeper search for Stockfish 19 to see the win compared to Stockfish 18.
[1] To run the position, I type the following commands:
I also see the issue on Lichess’s GUI by going to this URL:https://lichess.org/lwiPq9wB#48