Recently, we had a convertation in WBEC forum about problems that some engines experience under Winboard, namely time looses at move 1 because the engine did not start corectly. I did some tests because my engine suffers from this problem also and after all my attemps led to nothing usefull I put some Log lines in WB source code (4.2.6) and found that there is a thread sychronization problem in Winboard and when this occures the engine's process cannot output to its stdout because winboard had called the NonOvlInputThread() _before_ the AddInputSource() creates the is->hThread thread. Here are my logs:
The error occured (leads to time loss at move 1)
- Code: Select all
recognized 'normal' (-1) as variant normal
WinBoard 4.2.6 + aice
Reset(1, 0) from gameMode 0
recognized 'normal' (-1) as variant normal
GameEnds(0, (null), 2)
StartChildProcess (dir="C:\devel\apps\aice") aice
MILIX: starting chess program: before addinputsource
MILIX: starting NonOvlReadFile
MILIX: in add input source: hThread is 00000074
547 >first : xboard
protover 2
10547 >first : new
random
Fatal Error: Error writing to first chess program:
The pipe is being closed.
Normal start
- Code: Select all
recognized 'normal' (-1) as variant normal
WinBoard 4.2.6 + aice
Reset(1, 0) from gameMode 0
recognized 'normal' (-1) as variant normal
GameEnds(0, (null), 2)
StartChildProcess (dir="C:\devel\apps\aice") aice
MILIX: starting chess program: before addinputsource
MILIX: in add input source: hThread is 0000008C
547 >first : xboard
protover 2
MILIX: starting NonOvlReadFile
MILIX: starting NonOvlReadFile, thread is not null
MILIX: NonOvlReadFile::ReadFile called ok
562
562 >first : accepted done