Prevent Stockfish from exiting if DTZ table is not present
authorsyzygy <syzygy@server.fake>
Sat, 2 Sep 2017 02:14:02 +0000 (04:14 +0200)
committerMarco Costalba <mcostalba@gmail.com>
Sat, 2 Sep 2017 07:59:04 +0000 (09:59 +0200)
commit5ba43735221105108ea0a5d8204e9a2925b6aa7e
tree2db0c3d5e164c5d5c1d2bc39474d883b72331c63
parent3fd7e37868ce3a770ab5ca5ef686f75c8aa348f4
Prevent Stockfish from exiting if DTZ table is not present

During TB initialisation, Stockfish checks for the presence of WDL
tables but not for the presence of DTZ tables. When attempting to probe
a DTZ table, it is therefore possible that the table is not present.
In that case, Stockfish should neither exit nor report an error.

To verify the bug:
$ ./stockfish
setoption name SyzygyTable value <path_to_WDL_dir>
position fen 8/8/4r3/4k3/8/1K2P3/3P4/6R1 w - -
go infinite
Could not mmap() /opt/tb/regular/KRPPvKR.rtbz
$

(On my system, the WDL tables are in one directory and the DTZ tables
in another. If they are in the same directory, it will be difficult
to trigger the bug.)

The fix is trivial: check the file descriptor/handle after opening
the file.

No functional change.
src/syzygy/tbprobe.cpp