ChessGUI tablebase path bug

Discussion of chess software programming and technical issues.

Moderator: Ras

User avatar
chrjly2
Posts: 21
Joined: Sat Aug 31, 2024 7:15 pm
Full name: Christophe Jolly

ChessGUI tablebase path bug

Post by chrjly2 »

I have tested the ChessGUI version "17 september 2015" with my engine using the winboard protocol.
This application sends a wrong tablebase path to the winboard engine. It sends the path "E:\Sources\TB% instead of E:\Sources\TB
So my engine doesn't load the tb files (Nalimov tablebases).
I have made a patch in my engine to ignore any special characters at the beginning and the end of the path.
All the engines using the Winboard protocol are concerned about this. The engines using the UCI protocol have not this problem (the tablebase path is correct).

Christophe Jolly (author of Knightx)
User avatar
Graham Banks
Posts: 44891
Joined: Sun Feb 26, 2006 10:52 am
Location: Auckland, NZ

Re: ChessGUI tablebase path bug

Post by Graham Banks »

Image

I don't use the Robbobases.

An easy way for Winboard engines to have the correct path to the tablebases is either through having an ini or rc file that allows the user to enter the tbs path, or by accepting command line parameters such as FrankWalter (given below).

Image
gbanksnz at gmail.com
User avatar
chrjly2
Posts: 21
Joined: Sat Aug 31, 2024 7:15 pm
Full name: Christophe Jolly

Re: ChessGUI tablebase path bug

Post by chrjly2 »

In my engine, the path specified by the GUI has precedence over the path specified in the configuration file. So I made a workaround in my code to fix the problem. And the user doesn't have to change the configuration file, if he is aware of the problem.
User avatar
MartinBryant
Posts: 87
Joined: Thu Nov 21, 2013 12:37 am
Location: Manchester, UK
Full name: Martin Bryant

Re: ChessGUI tablebase path bug

Post by MartinBryant »

chrjly2 wrote: Sun Jul 27, 2025 7:39 pm I have tested the ChessGUI version "17 september 2015" with my engine using the winboard protocol.
This application sends a wrong tablebase path to the winboard engine. It sends the path "E:\Sources\TB% instead of E:\Sources\TB
So my engine doesn't load the tb files (Nalimov tablebases).
I have made a patch in my engine to ignore any special characters at the beginning and the end of the path.
All the engines using the Winboard protocol are concerned about this. The engines using the UCI protocol have not this problem (the tablebase path is correct).

Christophe Jolly (author of Knightx)
Hi Christophe.
You state that UCI engines don't have this problem but have you seen any evidence (e.g. log files) that ChessGUI actually sends the 'SyzygyPath' option to UCI engines? (Specifically SyzygyPath, not NalimovPath).

I have looked at Colossus' log files and ChessGUI debug info and it never seems to send the required command
e.g. 'setoption name SyzygyPath value c:\syzygy'

My Colossus log files show it receiving everything EXCEPT the SyzygyPath option

>>uci
id name Colossus 2025b
id author Martin Bryant
option name Hash type spin default 64 min 0 max 16384
option name Threads type spin default 1 min 1 max 64
option name ClearHash type button
option name Ponder type check default false
option name SyzygyPath type string
option name SyzygyProbe7PieceInTree type check default false
option name UCI_Chess960 type check default false
option name MateAllChecks type check default false
option name MateAllThreateningMateInOne type check default false
option name MateMaximumDefenderKingMoves type spin default 8 min 0 max 8
option name MateMaximumDefenderMoves type spin default 218 min 0 max 218
option name MateMaximumDefenderMovablePieces type spin default 16 min 0 max 16
option name MateFixedPieces type string
uciok
>>setoption name Hash value 456
info string Transposition table memory set to 456MB
>>setoption name Threads value 1
info string Threads set to 1
>>setoption name Ponder value false
info string Ponder set to false
>>setoption name SyzygyProbe7PieceInTree value false
info string Ponder set to false
>>setoption name MateAllChecks value false
info string MateAllChecks set to false
>>setoption name MateAllThreateningMateInOne value false
info string MateAllThreateningMateInOne set to false
>>setoption name MateMaximumDefenderKingMoves value 4
info string MateMaximumDefenderKingMoves set to 4
>>setoption name MateMaximumDefenderMoves value 218
info string MateMaximumDefenderMoves set to 218
>>setoption name MateMaximumDefenderMovablePieces value 16
info string MateMaximumDefenderMovablePieces set to 16
>>isready
readyok
>>ucinewgame
>>isready
readyok
>>position startpos
>>go wtime 600000 btime 600000
etc.....



And the ChessGUI debug windows shows...

================ SendFirstCommands(Colossus 2025b), nProtocol = 1, EngineCodeHex = 00400020 ====
SendFirstCommands UCI
SendToEng1Time 0000000181748468 : Eng01 (Colossus 2025b) -> uci
.
Scheduling StartEngineTimerEvent() for Colossus 2025b at 0000000181748468.
Waiting for Colossus 2025b.
Eng01 (Colossus 2025b) <- info string *** Warning! Logging enabled!
Eng01 (Colossus 2025b) <- id name Colossus 2025b
nChessVariant(0) = 1, id name.
Cancelling StartEngineTimerEvent() for Colossus 2025b at 0000000181748734.
Eng01 (Colossus 2025b) <- id author Martin Bryant
Eng01 (Colossus 2025b) <- option name Hash type spin default 64 min 0 max 16384
Eng01 (Colossus 2025b) <- option name Threads type spin default 1 min 1 max 64
Eng01 (Colossus 2025b) <- option name ClearHash type button
Eng01 (Colossus 2025b) <- option name Ponder type check default false
Eng01 (Colossus 2025b) <- option name SyzygyPath type string
Eng01 (Colossus 2025b) <- option name SyzygyProbe7PieceInTree type check default false
Eng01 (Colossus 2025b) <- option name UCI_Chess960 type check default false
Eng01 (Colossus 2025b) <- option name MateAllChecks type check default false
Eng01 (Colossus 2025b) <- option name MateAllThreateningMateInOne type check default false
Eng01 (Colossus 2025b) <- option name MateMaximumDefenderKingMoves type spin default 8 min 0 max 8
Eng01 (Colossus 2025b) <- option name MateMaximumDefenderMoves type spin default 218 min 0 max 218
Eng01 (Colossus 2025b) <- option name MateMaximumDefenderMovablePieces type spin default 16 min 0 max 16
Eng01 (Colossus 2025b) <- option name MateFixedPieces type string
Eng01 (Colossus 2025b) <- uciok
nChessVariant(0) = 1, uciok.
SendToEng1Time 0000000181748968 : Eng01 (Colossus 2025b) -> setoption name Hash value 456
.
SendToEng1Time 0000000181748968 : Eng01 (Colossus 2025b) -> setoption name Threads value 1
.
SendToEng1Time 0000000181748968 : Eng01 (Colossus 2025b) -> setoption name Ponder value false
.
SendToEng1Time 0000000181748968 : Eng01 (Colossus 2025b) -> setoption name SyzygyProbe7PieceInTree value false
.
SendToEng1Time 0000000181748968 : Eng01 (Colossus 2025b) -> setoption name MateAllChecks value false
.
SendToEng1Time 0000000181748968 : Eng01 (Colossus 2025b) -> setoption name MateAllThreateningMateInOne value false
.
SendToEng1Time 0000000181748968 : Eng01 (Colossus 2025b) -> setoption name MateMaximumDefenderKingMoves value 4
.
SendToEng1Time 0000000181748984 : Eng01 (Colossus 2025b) -> setoption name MateMaximumDefenderMoves value 218
.
SendToEng1Time 0000000181748984 : Eng01 (Colossus 2025b) -> setoption name MateMaximumDefenderMovablePieces value 16
.
Total Physical Memory = 31701 MB.
Total Available Memory = 22295 MB.
Hash + TbCache to allocate for Colossus 2025b = 472 MB.
SendToEng1Time 0000000181748984 : Eng01 (Colossus 2025b) -> isready


Again, no sign of the SyzygyPath option being sent from ChessGUI to the UCI engine.
(And yes, I have set the 'Syzygy TB Path' in the GUI in the same place as Graham's screenshot.)

I'd be very interested to know if you have specifically got evidence to show it sending the SyzygyPath option?
User avatar
chrjly2
Posts: 21
Joined: Sat Aug 31, 2024 7:15 pm
Full name: Christophe Jolly

Re: ChessGUI tablebase path bug

Post by chrjly2 »

Hello Bryan,

I have only checked the UCI "NalimovPath" option but not the "SyzygyPath".
My engine sends to ChessGUI "option name NalimovPath type string default", when the UCI protocol is used.
Yours sends "option name SyzygyPath type string".
Maybe you are missing "default". Try it.

Christophe
User avatar
MartinBryant
Posts: 87
Joined: Thu Nov 21, 2013 12:37 am
Location: Manchester, UK
Full name: Martin Bryant

Re: ChessGUI tablebase path bug

Post by MartinBryant »

chrjly2 wrote: Mon Jul 28, 2025 8:58 pm Hello Bryan,

I have only checked the UCI "NalimovPath" option but not the "SyzygyPath".
My engine sends to ChessGUI "option name NalimovPath type string default", when the UCI protocol is used.
Yours sends "option name SyzygyPath type string".
Maybe you are missing "default". Try it.

Christophe
Thanks Christophe! That seems to be the magic juice! :)
I'll have to check it hasn't broken it in any of the other GUIs now.