Author: Sune Fischer
Date: 03:46:56 04/14/04
Go up one level in this thread
On April 14, 2004 at 05:43:24, Fabien Letouzey wrote: >On April 14, 2004 at 05:31:33, Sune Fischer wrote: > >>On April 13, 2004 at 07:08:19, Fabien Letouzey wrote: >> >>> >>>Hello, >>> >>>I have a request for all engine authors. Please let the engine quit >>>when end-of-file is read on input. This applies to xboard, UCI and >>>even console engines. >>> >>>I know the engine is supposed to receive "quit" first in both xboard >>>and UCI, but the interface (whether graphical or not) might crash or >>>get killed or whatever. If end-of-file is received, how are you going >>>to get new commands??? >>> >>>I guess most engines use fgets() to read input, just test the return >>>value for NULL. Technically is could be an error or end-of-file then, >>>you can use ferror() and feof() if you wish to distinguish. If you >>>use read() or the like then 0 means EOF was reached. > >>Testing for NULL doesn't seem to work, it still hangs when the GUI crashes. > >Do you feel like investigating? >That suggests that the pipe is not closed even after the creator died?! > >I think we could learn something from understanding this. >E.g. launching PolyGlot in a console, then killing it using the task manager. > >It should work IMO, but my Windows knowledge is rather limited. I'm testing it with Arena which crashes on me in multipv mode. My guess that there is a problem with printing to stdout after the pipe has been closed. I record all communication to a log file and what I see is that the search stops between iterations, frenzee hangs at 0 cpu load, Arena pops up an access violation box and stops responding so I have to kill it with the task manager. Occasionally I get a few hundred runtime error boxes which nearly crashes the entire system, luckily these close themselves after a few seconds. I suspect frenzee is trying to print information to Arena which no longer recieves input. Who is crashing who here I don't know, but it would be nice if frenzee exitted after I kill Arena with the task manager. I will try some more experiments to see if I can figure out what is going on. -S. >>Perhaps I'm doing it wrong, should it be if (stdin==NULL)? > >No, just fgets() return value as you did. > >Fabien.
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.