First, it seems there is no error checking. I downloaded the 3+4 egbbs, but not the 5's. If it does not find any files or only some, there is no way of knowing.
Second, the libraries seem to be thread-safe (with no option of turning it off), but not process-safe. I think it could be amended with some light hacking, but I don't know if I'll have the time to do it. I wonder if anyone has run into this problem, or anyone is interested in having someone (me?) fix it.
Third, when running some initial tests, there was a quick problem. I set my code to only probe with <= 4 pieces on the board, and I set up a position with 5 pieces:
Code: Select all
(zct)1. setboard kbb///////KN w - -
(zct)1. analyze
Depth Time Score PV (nodes)
1/ 1 0.000 +310.73 1. Ka2 (1)
[ 1/ 1] 0.000 +310.73 1. Ka2 (5)
2/ 3 0.001 -310.73 1. Ka2 Ka7 (26)
[ 2/ 3] 0.001 -310.73 1. Ka2 Ka7 (34)
3/ 6 0.003 -310.73 1. Ka2 Be6+ 2. Ka1 (140)
[ 3/ 6] 0.003 -310.73 1. Ka2 Be6+ 2. Ka1 (148)
4/ 6 0.004 -310.73 1. Ka2 Be6+ 2. Ka1 Be5+ 3. Nc3 (253)
[ 4/ 6] 0.004 -310.73 1. Ka2 Be6+ 2. Ka1 Be5+ 3. Nc3 (261)
5/ 7 0.005 +0.00 1. Ka2 (396)
[ 5/ 7] 0.005 +0.00 1. Ka2 (400)
6/ 7 0.006 +0.00 1. Ka2 (505)
[ 6/ 7] 0.006 +0.00 1. Ka2 (509)
7/ 7 0.010 +0.00 1. Ka2 (808)
[ 7/ 7] 0.011 +0.00 1. Ka2 (812)
8/10 0.032 -310.73 1. Ka2 Be5 2. Nc3 Be6+ 3. Ka1 (2267)
8/10 0.052 -310.72 1. Kb2 Be5+ (3221)
[ 8/10] 0.058 -310.72 1. Kb2 Be5+ (3567)
9/12 0.073 +0.00 1. Kb2 (6162)
[ 9/12] 0.073 +0.00 1. Kb2 (6166)
10/12 0.099 -310.73 1. Kb2 Be5+ 2. Nc3 Be6 3. Ka1 Bh2 4. Kb1 (8311)
[10/12] 0.135 -310.73 1. Kb2 Be5+ 2. Nc3 Be6 3. Ka1 Bh2 4. Kb1 (10848)
Code: Select all
[10/12] 0.193 -310.73 1. Kb2 Be5+ 2. Nc3 Be6 3. Ka1 Bh2 4. Kb1 (10848)
Program received signal EXC_BAD_ACCESS, Could not access memory.
Reason: KERN_INVALID_ADDRESS at address: 0x4496051b
0x01008ff4 in EGBB::decode (this=0x1280380, in_table=0x4496051b <Address 0x4496051b out of bounds>, out_table=0x12a3ee4 "", size=805960900) at egbbdll.cpp:512
512 HUFFMAN_DECODE(huffman,v);
(gdb) up
#1 0x01009eb0 in EGBB::get_score (this=0x12a3ee4, index=360463, psearcher=0x1291ff0) at egbbdll.cpp:582
582 block_size = decode(&table[psearcher->info.start_index],psearcher->info.block,block_size);
Current language: auto; currently c++
(gdb)
#2 0x0100ad14 in SEARCHER::get_score (this=0x1291ff0, alpha=-1, beta=1, side=0, w_king=0, b_king=40, piece1=10, square1=19399552, piece2=10, square2=58, piece3=0, square3=-1) at egbbdll.cpp:1406
1406 return pegbb->get_score(pos_index,this);
And finally, what license are the bitbases released under? I am planning to release my engine under a license similar to but a bit more restrictive than the GPL (I'll start a thread about it soon).