Coiled 1.0 makes illegal moves

Discussion of anything and everything relating to chess playing software and machines.

Moderator: Ras

User avatar
pohl4711
Posts: 2848
Joined: Sat Sep 03, 2011 7:25 am
Location: Berlin, Germany
Full name: Stefan Pohl

Coiled 1.0 makes illegal moves

Post by pohl4711 »

Coiled 1.0 is buggy and loses games in my ratinglist-testrun by making illegal moves, when around 195 moves are played... So, I stopped that testrun. I need a bugfix. I use cutechess-cli for testing.

Example:

[pgn]
[Event "CPU-engine testing"]
[Site "?"]
[Date "2021.10.12"]
[Round "10"]
[White "Chiron 5 x64"]
[Black "Coiled 1.0 x64"]
[Result "1-0"]
[ECO "D36"]
[GameDuration "00:11:54"]
[GameEndTime "2021-10-12T09:00:56.098 Mitteleuropäische Sommerzeit"]
[GameStartTime "2021-10-12T08:49:01.997 Mitteleuropäische Sommerzeit"]
[Opening "QGD"]
[PlyCount "389"]
[Termination "illegal move"]
[TimeControl "180+1"]
[Variation "Exchange, positional line, 6.Qc2"]

1. d4 {book} d5 {book} 2. c4 {book} e6 {book} 3. Nc3 {book} Nf6 {book}
4. cxd5 {book} exd5 {book} 5. Bg5 {book} c6 {book} 6. Qc2 {book} Be7 {book}
7. e3 {book} Nbd7 {book} 8. Bd3 {book} O-O {book} 9. Nge2 {book} Re8 {book}
10. O-O-O {book} b5 {book} 11. Kb1 {-0.07/19 8.8s} a5 {+1.17/17 2.9s}
12. Rhg1 {0.00/20 5.3s} h6 {+1.78/19 2.9s} 13. Bf4 {+0.11/22 3.8s}
Nf8 {+0.91/17 2.9s} 14. f3 {0.00/18 5.0s} Ne6 {+1.34/18 3.0s}
15. Be5 {-0.16/19 9.3s} Nd7 {+2.21/17 3.0s} 16. Bg3 {-0.09/18 4.2s}
Nb6 {+2.73/19 3.0s} 17. Nf4 {-0.15/20 11s} a4 {+4.02/18 3.0s}
18. Nxe6 {+0.30/21 3.2s} Bxe6 {+0.34/21 3.0s} 19. Nxb5 {+0.30/22 3.6s}
cxb5 {+0.88/23 3.0s} 20. Bc7 {0.00/22 5.4s} Qd7 {+1.22/21 3.0s}
21. Bxb6 {0.00/24 3.8s} Rec8 {+1.65/22 3.1s} 22. Bc5 {0.00/21 4.2s}
b4 {+1.86/21 3.1s} 23. Rc1 {-0.10/20 4.6s} b3 {+3.04/19 3.1s}
24. Qd2 {-0.01/21 13s} a3 {+3.60/21 3.1s} 25. axb3 {0.00/20 4.0s}
Rcb8 {+2.16/22 3.1s} 26. Bc2 {0.00/23 3.5s} Bxc5 {+1.56/23 3.2s}
27. dxc5 {-0.43/23 14s} d4 {+2.81/21 3.2s} 28. Qxd4 {0.00/22 3.4s}
Qa7 {+1.70/22 3.2s} 29. c6 {0.00/22 4.5s} axb2 {+2.14/22 3.2s}
30. Qxb2 {0.00/27 3.5s} g6 {+2.28/22 3.2s} 31. Rcd1 {-0.30/22 11s}
Rb6 {+1.69/21 3.3s} 32. Rd4 {-0.51/22 7.0s} Ra6 {+2.08/20 3.3s}
33. Kc1 {-0.25/23 5.2s} Rxc6 {+2.03/20 3.3s} 34. Rgd1 {-0.30/23 4.9s}
Qc7 {+2.73/22 3.4s} 35. R1d2 {0.00/21 2.3s} Rca6 {+3.14/22 3.4s}
36. Kb1 {0.00/23 2.3s} Kh7 {+2.25/23 3.4s} 37. Be4 {0.00/23 2.2s}
R8a7 {+3.58/23 3.5s} 38. Rd8 {-0.26/23 5.3s} Ra1+ {+3.83/25 3.5s}
39. Qxa1 {-0.26/4 0.001s} Rxa1+ {+3.83/25 3.5s} 40. Kxa1 {-0.16/21 1.0s}
Qc3+ {+2.62/24 3.6s} 41. Kb1 {-0.31/24 3.2s} Qxb3+ {+3.68/26 3.6s}
42. Kc1 {-0.31/24 2.4s} Qc3+ {+3.86/24 3.7s} 43. Kb1 {-0.31/23 2.3s} Qxe3 {3.7s}
44. h3 {-0.21/22 2.5s} Bc4 {+4.09/21 3.8s} 45. R8d4 {-0.09/21 5.3s}
Kg7 {+3.94/20 3.8s} 46. Bd5 {-0.20/21 2.9s} Bf1 {+3.78/22 3.9s}
47. f4 {-0.37/21 4.2s} h5 {+4.11/24 3.9s} 48. Kb2 {-0.16/20 2.2s}
h4 {+4.51/23 4.0s} 49. Bb3 {-0.02/21 2.1s} Bb5 {+3.39/25 4.1s}
50. Bd5 {-0.28/22 1.9s} Ba6 {/26 4.2s} 51. Bxf7 {+0.18/22 2.6s}
Bc8 {+0.34/25 4.3s} 52. Bb3 {+0.18/23 1.8s} Qe7 {+0.28/26 4.4s}
53. Rd6 {+0.18/21 4.0s} Qb7 {+0.44/26 4.5s} 54. Ka3 {+0.05/20 3.6s}
Qa8+ {+0.36/29 4.6s} 55. Kb4 {0.00/21 2.9s} Qe4+ {+0.63/25 4.7s}
56. R6d4 {0.00/21 1.5s} Qe7+ {+1.20/22 4.9s} 57. Kc4 {0.00/22 1.5s}
Be6+ {+2.34/23 5.1s} 58. Kc3 {-0.10/24 1.6s} Qa3 {+2.82/26 5.4s}
59. Rb2 {-0.02/20 6.9s} Kh6 {+2.86/23 5.6s} 60. Ra4 {0.00/21 1.2s}
Qc5+ {+2.27/26 6.0s} 61. Bc4 {0.00/21 1.2s} Bd7 {+2.25/23 6.5s}
62. Ra6 {0.00/22 1.2s} Bc8 {+2.14/29 7.2s} 63. Ra4 {0.00/22 1.2s}
Qc6 {+3.00/25 8.4s} 64. Rab4 {0.00/21 1.2s} Bf5 {+2.01/28 11s}
65. Re2 {0.00/19 1.2s} Qc5 {+2.00/27 10s} 66. Ra4 {0.00/22 1.2s}
Qg1 {+2.17/19 1.0s} 67. Ra8 {0.00/23 1.2s} Qc1+ {+2.61/19 1.00s}
68. Kb3 {0.00/24 1.1s} Qd1+ {+2.42/22 0.99s} 69. Kc3 {0.00/29 1.3s}
Qc1+ {+2.57/20 0.99s} 70. Kb3 {0.00/34 1.4s} Qxf4 {+2.07/20 1.00s}
71. Rae8 {0.00/22 1.1s} Qg3+ {+3.29/20 1.00s} 72. Kb4 {0.00/23 1.1s}
Qd6+ {+3.21/23 0.99s} 73. Kc3 {0.00/22 1.1s} Qa3+ {+3.18/20 1.00s}
74. Kd4 {0.00/24 1.1s} Qa1+ {+3.21/20 1.0s} 75. Kc5 {0.00/22 1.1s}
Qa5+ {+3.17/21 0.98s} 76. Kd4 {0.00/24 1.1s} Qa7+ {+3.22/21 0.99s}
77. Kc3 {0.00/26 1.1s} Qa3+ {+3.22/23 0.99s} 78. Kd4 {0.00/45 1.3s}
Qa1+ {+3.09/20 0.99s} 79. Kc5 {0.00/44 1.1s} Qa4 {+2.96/20 0.98s}
80. Rh8+ {0.00/21 1.1s} Kg7 {+3.13/19 0.99s} 81. Rhe8 {0.00/22 1.1s}
Qa7+ {+2.97/21 0.99s} 82. Kb4 {0.00/24 1.1s} Qd4 {+2.77/22 1.00s}
83. R8e7+ {0.00/23 1.1s} Kh6 {+2.95/21 0.99s} 84. Kb3 {0.00/26 1.1s}
Qd1+ {+2.84/21 0.99s} 85. Ka3 {0.00/23 1.1s} Qb1 {+2.95/20 1.00s}
86. R7e5 {0.00/20 1.1s} Qb7 {+3.04/22 0.99s} 87. Bb5 {0.00/23 1.1s}
Qb6 {+2.85/20 0.99s} 88. Bc4 {0.00/24 1.1s} Qb1 {+2.97/21 1.0s}
89. R5e3 {0.00/25 1.1s} Qb8 {+2.70/20 0.99s} 90. Re5 {0.00/24 1.1s}
Bc2 {+2.78/21 0.99s} 91. Re8 {0.00/23 1.1s} Qb1 {+2.71/19 0.99s}
92. Rh8+ {0.00/20 1.0s} Kg5 {+2.74/21 0.99s} 93. Rhe8 {0.00/22 1.1s}
Qa1+ {+2.77/21 0.99s} 94. Kb4 {0.00/23 1.0s} Qa4+ {+2.73/22 1.00s}
95. Kc3 {0.00/23 1.0s} Bf5 {+2.64/21 1.00s} 96. R8e3 {0.00/24 1.0s}
Qa3+ {+2.65/19 0.99s} 97. Kd4 {0.00/26 1.0s} Qa1+ {0.99s} 98. Kc5 {0.00/24 1.0s}
Qa5+ {+2.68/20 1.0s} 99. Bb5 {0.00/24 1.0s} Bd7 {+2.91/18 0.99s}
100. Re5+ {0.00/21 1.0s} Bf5 {+2.77/20 1.0s} 101. Rd5 {0.00/21 1.0s}
Kh6 {+2.81/17 1.0s} 102. Re8 {0.00/20 1.0s} Qa7+ {+2.28/18 0.99s}
103. Kb4 {0.00/21 1.2s} Qg1 {+1.93/18 1.00s} 104. Bc6 {0.00/22 1.0s}
Qb6+ {+2.03/17 0.99s} 105. Bb5 {0.00/24 1.0s} Be6 {+2.30/20 1.0s}
106. Rd2 {0.00/21 1.0s} Qe3 {+1.04/18 0.99s} 107. Red8 {0.00/21 1.1s}
Bf5 {+1.07/18 0.99s} 108. Ka5 {0.00/19 1.6s} Qa7+ {+2.14/17 1.00s}
109. Kb4 {-0.07/20 0.99s} Qe7+ {+1.81/18 0.99s} 110. Ka4 {-0.13/20 1.1s}
Bc2+ {+2.11/19 0.99s} 111. Ka5 {-0.17/20 0.99s} Be4 {+2.20/18 0.99s}
112. R2d4 {-0.17/20 0.99s} Qc5 {+0.74/16 0.99s} 113. R8d6 {-0.17/19 1.0s}
Kh5 {+1.17/18 0.99s} 114. Rd7 {0.00/20 0.99s} Bc6 {+1.69/19 1.00s}
115. Rh7+ {0.00/20 0.99s} Kg5 {+0.70/20 0.99s} 116. Rb4 {0.00/21 0.99s}
Bd5 {+1.07/19 1.00s} 117. Rbxh4 {0.00/20 1.1s} Qc3+ {+1.02/18 0.99s}
118. Kb6 {0.00/21 0.99s} Qf6+ {+1.07/18 1.00s} 119. Ka5 {0.00/22 0.99s}
Qd8+ {0.99s} 120. Kb4 {0.00/21 0.98s} Be6 {+1.33/18 1.00s}
121. Kc5 {-0.11/18 1.6s} Qf8+ {+1.54/18 1.00s} 122. Kc6 {-0.16/20 2.4s}
Qf2 {+0.95/18 0.99s} 123. Kd6 {0.00/21 1.0s} Kf6 {+1.45/17 0.99s}
124. Bc6 {0.00/20 0.91s} Bg8 {+1.71/16 0.99s} 125. Rh8 {0.00/22 0.92s}
Qg3+ {+0.78/17 1.0s} 126. Kc5 {0.00/22 0.91s} Qe3+ {+0.76/18 0.99s}
127. Kb5 {0.00/24 0.92s} Qd3+ {+0.59/18 1.00s} 128. Ka5 {0.00/23 0.92s}
Bc4 {+0.78/18 1.00s} 129. R4h7 {0.00/19 0.95s} Qd6 {+0.66/16 1.0s}
130. Kb6 {0.00/21 0.93s} Bd5 {+0.83/16 0.99s} 131. Rc7 {0.00/20 0.93s}
Qb4+ {+1.26/17 0.99s} 132. Ka6 {0.00/21 0.93s} Qc5 {+0.90/17 0.98s}
133. Rhc8 {+0.10/17 0.93s} Be6 {+0.93/18 0.99s} 134. Rd8 {+0.75/19 1.6s}
Kg5 {+0.46/15 0.99s} 135. Kb7 {+0.75/17 2.8s} Qb4+ {+0.19/18 0.99s}
136. Ka7 {+0.21/18 0.85s} Qa5+ {+0.01/19 1.00s} 137. Kb8 {+0.12/18 0.86s}
Qa1 {-0.01/20 1.0s} 138. Ra7 {+0.58/17 2.3s} Qf6 {+0.17/17 0.99s}
139. Re8 {+0.30/19 1.8s} Bxh3 {+0.23/16 0.99s} 140. Rc7 {0.00/20 0.81s}
Bf5 {+1.31/18 0.99s} 141. Kb7 {0.00/23 0.93s} Qb2+ {+1.21/19 1.0s}
142. Ka7 {0.00/23 0.81s} Qb4 {+0.75/17 0.99s} 143. Rd8 {0.00/23 0.80s}
Kh6 {+0.52/19 1.00s} 144. Bb7 {0.00/19 0.80s} Qa3+ {+0.73/21 0.99s}
145. Kb8 {0.00/25 0.81s} Qb2 {+0.57/20 0.99s} 146. Re7 {0.00/22 0.82s}
Qf6 {+0.80/20 0.99s} 147. Ree8 {0.00/21 0.96s} Qb6 {+1.80/23 0.99s}
148. Rd5 {0.00/22 0.83s} Be6 {1.0s} 149. Rd3 {0.00/24 0.84s}
Bc4 {+0.33/18 1.00s} 150. Rd7 {0.00/20 0.91s} Qb5 {1.0s}
151. Rh8+ {0.00/20 1.4s} Kg5 {+0.29/20 0.99s} 152. Rd6 {0.00/23 0.83s}
Qe5 {1.00s} 153. Rd8 {0.00/25 0.47s} Kh6 {+0.17/17 0.99s}
154. Kc7 {0.00/23 0.85s} Be6 {+0.33/19 0.99s} 155. Kb6 {+0.49/20 0.86s}
Qb2+ {+0.18/20 1.00s} 156. Ka7 {+0.31/18 0.87s} Qc3 {+0.09/21 1.0s}
157. Rd1 {+0.22/21 1.5s} Qc7 {+0.09/20 0.99s} 158. Ka8 {+0.22/21 0.99s}
Bc4 {+0.10/21 0.98s} 159. R8d6 {+0.29/21 0.85s} Qa5+ {+0.09/18 1.00s}
160. Kb8 {+0.29/22 0.30s} Qe5 {+0.04/21 0.99s} 161. Rd4 {+0.29/21 0.88s}
Be6 {+0.09/19 0.99s} 162. Bc6 {+0.22/22 0.89s} Bf5 {+0.10/21 1.0s}
163. Kb7 {+0.32/21 2.2s} Qe3 {+0.10/22 1.0s} 164. Kc7 {+0.15/21 1.5s}
Qa3 {+0.10/20 0.99s} 165. Rh4+ {+0.24/19 1.2s} Kg7 {+0.10/22 1.0s}
166. Ra4 {+0.24/19 0.82s} Qe3 {+0.09/20 1.00s} 167. Rdd4 {+0.14/20 1.4s}
Qe5+ {+0.09/17 0.99s} 168. Kb6 {+0.14/19 0.81s} Qb8+ {+0.24/18 1.00s}
169. Bb7 {+0.14/20 0.82s} Qg3 {+0.21/20 1.0s} 170. Rac4 {+0.14/20 0.83s}
Qe5 {+0.16/20 0.99s} 171. Rb4 {+0.14/19 2.0s} Qe3 {+0.16/19 0.99s}
172. Bc6 {+0.14/21 1.3s} Kh6 {+0.20/20 1.00s} 173. Bd5 {0.00/21 0.85s}
Bd3 {+0.24/19 0.99s} 174. Bf3 {0.00/21 1.2s} Bf1 {+0.29/16 0.99s}
175. Kc6 {0.00/20 0.78s} Qe6+ {+0.32/19 1.00s} 176. Kb7 {0.00/22 0.79s}
Qf7+ {+0.33/18 1.0s} 177. Kb6 {0.00/23 0.80s} Qf8 {+0.32/18 0.99s}
178. Bc6 {0.00/21 1.2s} Qf2 {+0.48/18 1.00s} 179. g4 {0.00/19 0.80s}
Be2 {+0.58/19 1.2s} 180. Kb7 {0.00/22 0.80s} Qf6 {+0.66/19 0.99s}
181. Ra4 {0.00/21 0.81s} Qe5 {+0.77/18 0.99s} 182. Re4 {0.00/21 0.82s}
Qb2+ {+0.28/17 0.99s} 183. Kc8 {0.00/22 0.82s} Bf3 {+0.81/17 1.00s}
184. Rec4 {0.00/23 0.83s} Bd1 {+0.47/20 0.99s} 185. Rab4 {0.00/20 0.85s}
Qg7 {+0.81/19 0.98s} 186. Rf4 {0.00/18 0.84s} Be2 {1.00s}
187. Ra4 {0.00/21 0.94s} Qe7 {+0.93/19 0.99s} 188. Rad4 {0.00/21 0.85s}
Ba6+ {+0.88/19 0.99s} 189. Kb8 {0.00/22 0.86s} Qe5+ {+0.87/22 0.99s}
190. Ka7 {0.00/23 0.86s} Bd3 {+0.99/21 0.99s} 191. Rb4 {0.00/22 0.87s}
Qc7+ {+1.02/19 1.0s} 192. Bb7 {0.00/28 0.37s} Qa5+ {+0.85/21 0.99s}
193. Kb8 {0.00/31 0.48s} Qe5+ {+1.02/20 0.99s} 194. Kc8 {0.00/25 0.92s}
Qc5+ {+1.42/20 0.99s}
195. Kb8 {0.00/32 0.92s, Black makes an illegal move: b1a1} 1-0
[/pgn]
User avatar
Brunetti
Posts: 424
Joined: Tue Dec 08, 2009 1:37 pm
Location: Milan, Italy
Full name: Alex Brunetti

Re: Coiled 1.0 makes illegal moves

Post by Brunetti »

pohl4711 wrote: Tue Oct 12, 2021 9:46 am Coiled 1.0 is buggy and loses games in my ratinglist-testrun by making illegal moves
How often? I have 4 illegal moves out of ~900 games.

Alex
User avatar
pohl4711
Posts: 2848
Joined: Sat Sep 03, 2011 7:25 am
Location: Berlin, Germany
Full name: Stefan Pohl

Re: Coiled 1.0 makes illegal moves

Post by pohl4711 »

Brunetti wrote: Tue Oct 12, 2021 10:08 am
pohl4711 wrote: Tue Oct 12, 2021 9:46 am Coiled 1.0 is buggy and loses games in my ratinglist-testrun by making illegal moves
How often? I have 4 illegal moves out of ~900 games.

Alex
I had 6 in around 300 games
amanjpro
Posts: 883
Joined: Sat Mar 13, 2021 1:47 am
Full name: Amanj Sherwany

Re: Coiled 1.0 makes illegal moves

Post by amanjpro »

pohl4711 wrote: Tue Oct 12, 2021 11:24 am
Brunetti wrote: Tue Oct 12, 2021 10:08 am
pohl4711 wrote: Tue Oct 12, 2021 9:46 am Coiled 1.0 is buggy and loses games in my ratinglist-testrun by making illegal moves
How often? I have 4 illegal moves out of ~900 games.

Alex
I had 6 in around 300 games
Your time control is longer, so it is more chance to hit 195 move mark perhaps
User avatar
Bmark
Posts: 28
Joined: Wed Aug 14, 2013 5:24 am
Location: Spain

Re: Coiled 1.0 makes illegal moves

Post by Bmark »

Hello pohl4711 and Brunetti.

Thanks for posting the bug, as I am doing well for repairing and improving Coiled.
The movement generation tests that are in https://github.com/Oscar-Gavira/Coiled/ ... test/perft surpasses them. Both in Standard and Chess960 state.
So I imagine it would be a flaw in the rules 50 moves, triple repetition with continuous check ...
Can you pass me these games privately to verify and debug the bug?

Greetings
User avatar
RubiChess
Posts: 652
Joined: Fri Mar 30, 2018 7:20 am
Full name: Andreas Matthies

Re: Coiled 1.0 makes illegal moves

Post by RubiChess »

If the bug is constantly triggered after ~190 moves, some move buffer is probably full.
When reading the moves list from UCI position command you should throw away all moves before last move that resets the halfmove counter as they are not relevant. So you have at most 99 plies to remember regardless how long the game goes.

Regards, Andreas
User avatar
Brunetti
Posts: 424
Joined: Tue Dec 08, 2009 1:37 pm
Location: Milan, Italy
Full name: Alex Brunetti

Re: Coiled 1.0 makes illegal moves

Post by Brunetti »

Bmark wrote: Tue Oct 12, 2021 2:30 pm Can you pass me these games privately to verify and debug the bug?
Sent via github since here it didn't worked.

Alex
User avatar
Bmark
Posts: 28
Joined: Wed Aug 14, 2013 5:24 am
Location: Spain

Re: Coiled 1.0 makes illegal moves

Post by Bmark »

Apparently it is a buffer failure. As RubiChess comments. Well, the Perft works.
See if I fix it soon.
I already see the attached file on github, thanks Brunetti
Odd Gunnar Malin
Posts: 310
Joined: Wed Mar 08, 2006 9:59 pm
Location: Norway, Vads?
Full name: Odd Gunnar Malin

Re: Coiled 1.0 makes illegal moves

Post by Odd Gunnar Malin »

RubiChess wrote: Tue Oct 12, 2021 2:39 pm If the bug is constantly triggered after ~190 moves, some move buffer is probably full.
When reading the moves list from UCI position command you should throw away all moves before last move that resets the halfmove counter as they are not relevant. So you have at most 99 plies to remember regardless how long the game goes.

Regards, Andreas
Where would i be best to do this. I was thinking that this i a job for the GUI, but maybe I'm wrong here. I'm working on a GUI and was thinking of shorten the list before sending it to the engine, would this be a problem for any engines?
User avatar
Bmark
Posts: 28
Joined: Wed Aug 14, 2013 5:24 am
Location: Spain

Re: Coiled 1.0 makes illegal moves

Post by Bmark »

Odd Gunnar Malin wrote: Tue Oct 12, 2021 4:17 pm
RubiChess wrote: Tue Oct 12, 2021 2:39 pm If the bug is constantly triggered after ~190 moves, some move buffer is probably full.
When reading the moves list from UCI position command you should throw away all moves before last move that resets the halfmove counter as they are not relevant. So you have at most 99 plies to remember regardless how long the game goes.

Regards, Andreas
Where would i be best to do this. I was thinking that this i a job for the GUI, but maybe I'm wrong here. I'm working on a GUI and was thinking of shorten the list before sending it to the engine, would this be a problem for any engines?
Hello Odd Gunnar Malin

I would say that it cannot be omitted, nor shortened.

position startpos moves ...
or
position fen (fen) moves ...

The chain of movements cannot be cut, since it is the one that guides to the given position. Either from a starting position or a fen position.
If it is omitted, you do not know where the pieces are located, since you are assuming that:
position startpos / fen is always the same.
and
moves always the same.

Greetings.