Author: Tord Romstad
Date: 06:49:58 10/25/03
I use the gcc (version 3.2) included with the Cygwin tools to compile the Windows version of my engine. The last month or so, the Windows version has had a mysterious problem: When compiled with the -fbranch-prediction flag, it consistently crashed at move 109 or 110 when running in UCI mode. The problem never occured in Winboard mode, it never occured in either UCI or Winboard mode in Linux or MacOS X, and it disappeared when I compiled without -fbranch-prediction (but this makes the engine much slower). After spending a few hours debugging, I found that the crash occurs in the following innocent-looking function: void uci_wait_for_command() { char command[10000]; fgets(command, 10000, stdin); uci_handle_command(command); } It is the call to fgets which causes the crash. The reason why the problem occures at move 109 or 110 is probably because the string sent by the GUI with the "position" command gets very long (though nowhere near 10000 characters) after so many moves. Increasing the size of the command[] array did not have any effect. However, when I changed the command[] array to a global variable, the crashes suddenly disappeared. Is this likely to be a bug in gcc, or could it be caused by a bug somewhere else in my source code? Tord
This page took 0.01 seconds to execute
Last modified: Thu, 15 Apr 21 08:11:13 -0700
Current Computer Chess Club Forums at Talkchess. This site by Sean Mintz.