Silly problem with Bihasa 2.1

Discussion of chess software programming and technical issues.

Moderator: Ras

User avatar
hgm
Posts: 28444
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Silly problem with Bihasa 2.1

Post by hgm »

I tried to run Bihasa 2.1, but WinBoard chokes on the message "white.dbk not found". Apparently it thinks the "not found" is coming from a remote shell, and it interprets it as if it applies to bihasa.exe itself. So it immediately exits, because it thinks the engine is invalid. :cry:

Even with the lines neatly commented out with '#', WinBoard triggers on this, because it has not seen the feature debug=1 yet, at this stage.
Ferdy
Posts: 4851
Joined: Sun Aug 10, 2008 3:15 pm
Location: Philippines

Re: Silly problem with Bihasa 2.1

Post by Ferdy »

hgm wrote:I tried to run Bihasa 2.1, but WinBoard chokes on the message "white.dbk not found". Apparently it thinks the "not found" is coming from a remote shell, and it interprets it as if it applies to bihasa.exe itself. So it immediately exits, because it thinks the engine is invalid. :cry:

Even with the lines neatly commented out with '#', WinBoard triggers on this, because it has not seen the feature debug=1 yet, at this stage.
Just revise the bihasa.ini file, change book ON to book OFF so that comment will not be shown.
User avatar
hgm
Posts: 28444
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Silly problem with Bihasa 2.1

Post by hgm »

OK, thx. Will do.
Sven
Posts: 4052
Joined: Thu May 15, 2008 9:57 pm
Location: Berlin, Germany
Full name: Sven Schüle

Re: Silly problem with Bihasa 2.1

Post by Sven »

hgm wrote:I tried to run Bihasa 2.1, but WinBoard chokes on the message "white.dbk not found". Apparently it thinks the "not found" is coming from a remote shell, and it interprets it as if it applies to bihasa.exe itself. So it immediately exits, because it thinks the engine is invalid. :cry:

Even with the lines neatly commented out with '#', WinBoard triggers on this, because it has not seen the feature debug=1 yet, at this stage.
backend.c:

Code: Select all

    /*
     * If chess program startup fails, exit with an error message.
     * Attempts to recover here are futile.
     */
    if ((StrStr(message, "unknown host") != NULL)
     || (StrStr(message, "No remote directory") != NULL)
     || (StrStr(message, "not found") != NULL)
     || (StrStr(message, "No such file") != NULL)
     || (StrStr(message, "can't alloc") != NULL)
     || (StrStr(message, "Permission denied") != NULL)) {
It should be documented that WB engines should never send any of these strings (with any additional characters left or right to it) to WinBoard :-) .

Apart from that, the code shown above actually belongs to the second-nicest pieces of code at most, taking into account the very coarse-grained heuristic applied there ... On the other hand, it is possible that WB needs that code to detect some error cases related to the "remote host" feature where real error codes are impossible to retrieve.

Sven
User avatar
hgm
Posts: 28444
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Silly problem with Bihasa 2.1

Post by hgm »

Sven Schüle wrote:It should be documented that WB engines should never send any of these strings (with any additional characters left or right to it) to WinBoard :-) .
Well, it is sort of implied by the protocol specs, which say what you can send. Sending anything other than that will have undefined effects, which can include instant extit. And I think the current spect do explicitly the 'not found' stuff.

The specs do allow sending of all lines starting with #, provided the engine has sent feature debug=1. But this will of course only take effect after the engine has done that. Even in WinBoard we cannot violate causality...

The best fix would be to ignore all lines starting with # before having received at least one feature command acknowledging the engine is now running and in XBoard mode. I don't know if this would break anything; I have no experience running engines on other hosts. There is the theoretical possibility the command interpreter on the host, or the client seeking connections would start their error messages with #, but that doesn't seem very likely.