New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Illegal moves 2 #8
Comments
When I paste the commands shown in the debug log, the issue doesn't reproduce, so I'm not immediately sure what's causing the issue. Which exact binary are you using? |
Ignore that, I'm now able to reproduce. I understand the problem and will work on getting a fix. |
The 64-bit (POPCNT) one, CRC-32: 5E1414A5. I just retested with Hash sizes 256, 128 and the default 32. Same illegal move a1a1 in every case. edit: Ah, I've been ninja'd. ;) Standing by for the fix. |
I rolled out something I believe should fix the issue. I'm not 100% confident in the robustness of the patch, so I'll look into it more when I get some time. If this doesn't fix it, I know how to do so. |
Need a Makefile for Windows, something that would work with MSYS2 and Cygwin. Tried making my own and got tons of errors. |
I was planning on adding a Makefile at some point, but for me copying and pasting the compilation works fine. |
The new exec (CRC-32 388D09A3) doesn't fix it. Besides the usual 40/4 and 512 hash I tried 40/20 and 32 hash, same result (a1a1). |
Ditto for apollopocnt.exe CRC-32 165E3B63. |
Interesting. I'll take a look at it in the morning. Thank you very much for being patient with me and for reporting this bug. |
No problemo. An interesting find: if you start the game from the position where it wants to play a1a1, it chooses to play the queen back to d1 and the game goes on:
Debug log:
On another positive note, I don't see any more crashes under Cute Chess. It does crash under Fritz 16 GUI, will make a separate issue for that. |
The heart of the issue is that apollo checks if the current position is a repetition, and if so, it returns to cut down on the search time. The problem is apollo previously checked if there was a transposition table entry for the current position, and if so it returned. When outputting the best move, however, apollo uses a triangular pv array. The array was never filled in that case. I just threw together a fix to fill the pv array in this case, however I'd like to look more deeply at this issue and related ideas to make sure I didn't miss anything when I get more time. Could you confirm that the new patch(binarys under release 1.2.1 also updated) fixes this issue? |
Great, now it's fixed. There only remains a slight issue of nodes, NPS and time all displayed as zeroes for every iteration of the very last move (4.Qd1). |
Another example found, possibly unrelated to those reported previously. It took 80 games to surface.
It would also appear that v1.21 is considerably stronger than v1.1. That's probably not a bug. |
Still looking at this, not easily reproduced by me. Just settings up the last position and running a search didn't output that move for me, so my best guess is it's an issue with the transposition table. |
Another example, this one at LTC and involving an e.p capture:
Out of 672 games 27 ended in abnormal terminations:
Clearly there's some debugging still to be done. :> |
Curiously, all five disconnects occurred when 160 moves have been completed for both sides, with Apollo playing black. Another game ended after 159 moves in a stalled connection. Apparently Apollo cannot last longer than four 40-move playing sessions. |
And now for something different -- Apollo achieves a completely winning position (mate in 6) and its eval goes completely haywire. 30 moves later the game ends in an illegal move.
|
TheBlackPlague/StockNemo#10 - I am developing my own chess engine, StockNemo. Is the lack of ELO on Apollo's part because of that? StockNemo shouldn't be 2K ELO right now (AB-Search, MVVLVA/Promotion Move Ordering, Mate Distance Pruning, Draw Pruning, Transposition Table, Material + PSQT Evaluation, QSearch, Null Move Pruning) ... what are your thoughts? |
This is a continuation of #7 .
The good news: the Hash option now works as expected.
The bad news: illegal moves are still there.
Debug log:
The text was updated successfully, but these errors were encountered: