Computer Chess Club Archives


Search

Terms

Messages

Subject: Is this a compiler bug?

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.