Developing my interface I'm trying to understand UCI protocol. As far as I know, it seems that it is somehow "stateless", because you have to always pass to the engine all the moves, with the "position" command. That sounds very strange, for those coming from xBoard/WinBoard protocol... but it works now. What I'm not sure to handle correctly is the timing part of the "go" command. For sample, if I wish a game of 30 seconds I pass this command to the engine:
I don't know if this is related to your problem or just a simple typo, but in the text you wrote 30 seconds and in the go command 300 seconds, since time is there measured in milliseconds.
It was a typo, the interface sends the time in thousands of seconds. The software involves different threads, pipes mutex and so on... so the error could be almost everywhere.
stegemma wrote:The software involves different threads, pipes mutex and so on... so the error could be almost everywhere.
I would still expect the problem to be closely related to your UCI implementation of time control, assuming you already had a working WB interface.
EDIT: I would start by testing with very small TC values to find out whether your engine will really think "infinitely long". Next might be to check how you determine a timeout, and how the data needed for this calculation make their way from the UCI interface to your search. I would also print all time control parameters, including both the original input parameters as well as values derived from it, immediately before starting the search. Usually this should already be sufficient to spot the error.
stegemma wrote:The software involves different threads, pipes mutex and so on... so the error could be almost everywhere.
I would still expect the problem to be closely related to your UCI implementation of time control, assuming you already had a working WB interface.
EDIT: I would start by testing with very small TC values to find out whether your engine will really think "infinitely long". Next might be to check how you determine a timeout, and how the data needed for this calculation make their way from the UCI interface to your search. I would also print all time control parameters, including both the original input parameters as well as values derived from it, immediately before starting the search. Usually this should already be sufficient to spot the error.
Thanks for the hint! it was a very stupid error, some "cut&paste-magic-mistake":