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
Cutechess falsely adjudicates a game via an Illegal move (FRC) #616
Comments
|
3rd case, this time not relating to FRC explicitly: https://lichess.org/Dvplq83n#56 Re1+ delivers checkmate. Ethereal should not be asked to respond to a mating move -- that behavior us is undefined. Cutechess fails to adjudicate this game after Re1+. Does cutechess think Ethereal can CASTLE OUT OF check? |
|
Thank you for reporting these problems. I can confirm all three cases. These are good examples. It is strange that this has not been discovered before. Cutechess does not correctly handle Rook (or Queen) attacks on the King that are blocked by another attacking piece (Knight in example 1 and Bishop in example 2). Cutechess should allow castling in these cases. Indeed, cutechess does not always prevent a player from castling out of check. It assumes it is fine for the King to hide behind the Rook after castling (example 3). In fact it is checkmate. I will push a patch soon. This patch will need a lot of testing in order to avoid a regression. |
|
I am unable to (trivially) build QT applications on Linux. If you could provide me with an updated binary after the patch, I still have another 1.5million FRC games to play out for what I need. I know you are referring to speed in regards to regression of course, but I can do what I can to assist. |
|
Thank you, much appreciated! |
Forbid castling when in check. Allow castling if a rook attack is intercepted by another attacking piece with different movement when castling target equals source. Resolves cutechess#616
|
@AndyGrant This has been built under Ubuntu 18.04.5 using the older Qt 5.9.5. I do not think this is a problem. I hope this helps. |
|
Thanks -- more games running now. I'll grep for illegal moves every so often, but I figure you resolved the issue completely just via the test positions. You are welcome to close this issue whenever you see fit. |
|
I cannot close the issue, because I am no maintainer. Please leave this issue open. It will be closed automatically if the patch or an improved version of it gets accepted by the maintainers. |
Forbid castling when in check. Allow castling if a rook attack is intercepted by another attacking piece with different movement when castling target equals source. Resolves cutechess#616
|
Is this issue specific to FRC or is this also affecting non-variant (standard) chess? I tried to understand the patch but wasn't sure. |
@AndyGrant great catch :) I use a lxc/lxd container on Ubuntu 20.04, see the last script. |
|
AFAICS the reported problems cannot occur in standard chess as played from a standard starting position. The problems shown are connected with Rook style attacks on a King staying in place or moving towards the attacking Rook when castling. This can happen in FRC but not in FIDE chess. Other chess variants are affected, too. I found that a problem in Grid Chess has been resolved by the patch. The patch will however affect standard chess if buggy. It is in the execution path for all Western chess variants. |
Forbid castling when in check. Allow castling if a rook attack is intercepted by another attacking piece with different movement when castling target equals source. Resolves cutechess#616
|
I tried fen: Q3B1kr/p5p1/1p3p1p/2p2P2/2br1N1P/8/P5P1/7K b k - 1 34 in the GUI and black is not allowed to castle strangely enough. Not discovered before now. @vondele it seems to be related to FRC solely. |
|
@Nordlandia : This is @AndyGrant's second example. It cannot occur in standard chess. I have included this example into the patch as a test case for FRC, see version |
|
I've played about 2 million FRC games with your new binary, and have not run into any issues (as expected!). Thanks for the fix, and quickly. It would have taken me far too long to figure out where the relevant code was. |
Forbid castling when in check. Allow castling if a rook attack is intercepted by another attacking piece with different movement when castling target equals source. Resolves cutechess#616
Forbid castling when in check. Allow castling if a rook attack is intercepted by another attacking piece with different movement when castling target equals source. Resolves cutechess#616
Forbid castling when in check. Allow castling if a rook attack is intercepted by another attacking piece with different movement when castling target equals source. Resolves cutechess#616
Forbid castling when in check. Allow castling if a rook attack is intercepted by another attacking piece with different movement when castling target equals source. Resolves cutechess#616
Forbid castling when in check. Allow castling if a rook attack is intercepted by another attacking piece with different movement when castling target equals source. Resolves cutechess#616
Forbid castling when in check. Allow castling if a rook attack is intercepted by another attacking piece with different movement when castling target equals source. Resolves cutechess#616
Forbid castling when in check. Allow castling if a rook attack is intercepted by another attacking piece with different movement when castling target equals source. Resolves #616
I'm using the official release provided here. I am seeing one illegal move in about every 80,000 games played. although sometimes it occurs much more frequently. Note that in both these examples we have black castling when there are discovered checks on the back rank. The following is the cutechess command passed:
Here is an example of the game which was falsely flagged. https://lichess.org/B9XZx7TH
Here is a second example: https://lichess.org/cxkWGzmC#12
The text was updated successfully, but these errors were encountered: