Unlike XBoard, which forks first, the parent process WinBoard has direct
knowledge of a failure to execute the engine command, and used it to
trigger a fatal error. The code doing this has now been disabled. Only
in case of a first engine we switch back to -ncp mode in stead, but no
action is taken to 'bury' the deceased engine process. Like in XBoard,
errors in writing or reading the pipes will trigger this.
if (err != 0) {
snprintf(buf, MSG_SIZ, _("Startup failure on '%s'"), cps->program);
- DisplayFatalError(buf, err, 1);
- cps->pr = NoProc;
- cps->isr = NULL;
+ DisplayError(buf, err); // [HGM] bit of a rough kludge: ignore failure, (which XBoard would do anyway), and let I/O discover it
+ if(cps != &first) return;
+ appData.noChessProgram = TRUE;
+ ThawUI();
+ SetNCPMode();
+// DisplayFatalError(buf, err, 1);
+// cps->pr = NoProc;
+// cps->isr = NULL;
return;
}