AW: Mess Emulator für diverse Schachcomputer ist fertig!
Und nun zu Hartmut und seinen Problemen mit CB-Emu beim Aufruf mancher Engines zusammen mit WinBoard:
Das ist natürlich ein relativ komplizierter Vorgang, bei dem insgesamt 5 Programme beteiligt sind, und zwar folgende in genau dieser Reihenfolge:
CB-Emu -> WinBoard -> Mess -> Chessplugin -> Engine
CB-Emu startet WinBoard mit der dafür üblichen Windows-API-Prozedur 'CreateProcess' (und mit den für WinBoard nötigen Parametern /cp /fd /fcp sowie dem Enginenamen), und zieht sich nach diesem Aufruf komplett in den Hintergrund zurück, hat also auf alles was danach passiert keinen Einfluß mehr ist ist dafür auch nicht mehr verantwortlich - CB-Emu erwacht erst dann wieder zum Leben, wenn dieser Prozess (WinBoard+Engine) vollständig beendet ist!
Und dieser 'CreateProcess'-Aufruf geschieht für alle 29 Engines, die man in CB-Emu zusammen mit WinBoard aufrufen kann (oder muß), völlig identisch, d.h. es gibt da absolut keinen Unterschied zwischen den Engines, der ein Funktionieren bei manchen und einen WinBoard-Absturz bei anderen erklären würde.
Nachdem Du ja schreibst, daß sowohl WinBoard als auch die Engine gestartet werden, kann es also auch gar nicht an CB-Emu liegen (das ja in dieser Phase bereits 'schläft') - außerdem stürzt ja WinBoard ab und nicht CB-Emu (und auch nicht die Engine).
Nun, weiter geht's mit den nächsten Schritten:
das gestartete WinBoard ruft nun seinerseits das Programm 'mess.exe' auf (ebenfalls mit dem Enginenamen als Parameter), und Mess startet dann eben die Engine, und zwar mit zwischengeschaltetem ChessPlugin (weil die Engine ja das WB-Protokoll nicht kennt).
Soweit zu den technischen Details, nun zu Deinem 'Absturz'-Problem:
Inzwischen bin ich mir ziemlich sicher, daß es sich dabei um das gleiche Problem handelt, das auch mir am Anfang dieser WinBoard-Emulationen häufiger passiert ist, und das mit Sicherheit ein Problem von WinBoard selbst ist:
Viele dieser Engines haben ja eine sehr (manchmal sogar extrem) lange Initialisierungsphase, die durch die Leveleinstellung des ChessPlugins nochmals verlängert wird, und während dieser Initialisierung reagiert eben WinBoard machmal ziemlich 'sauer' (d.h. mit Absturz), wenn man dabei in WinBoard schon irgendwelche Aktionen ausführt (sprich: einen Zug macht oder irgendein Menü aufruft, z.B. um den Level zu ändern).
Ich vermute mal, daß WinBoard da einfach noch auf eine Reaktion der gestarteten WB-Engine (bzw. Mess) wartet, und deshalb auf Benutzeraktionen (noch) nicht richtig reagiert - diese Rückmeldung von Mess kommt aber erst nach vollständiger Initialierung der eigentlichen Schachengine, und das dauert eben bei diesen MAME-Emulationen wesentlich länger als bei 'normalen' WB-Engines jenseits der MAME- oder CB-Emu-Welt.
Das Ganze nun auf einen einfachen Nenner gebracht:
Beim Aufruf einer solchen Engine zusammen mit der WinBoard-GUI aus CB-Emu heraus sollte man tunlichst mit irgendwelchen Aktionen in WinBoard warten, bis die Startphase der Engine völlig abgeschlossen ist, also vorher keine Züge ausführen oder iregendwelche Einstellungen ändern.
Übrigens gilt das genauso, wenn man die Engine nicht innerhalb von CB-Emu startet, sondern direkt mit WinBoard selber (aus der Startliste) - auch dort treten diese WinBoard-Abstürze sporadisch auf, wenn man sich daran nicht hält.
Sollte allerdings so ein WinBoard-Absturz auch dann vorkommen, wenn Du wirklich NUR die Engine in CB-Emu startest, und sonst absolut nichts machst (also einfach nur wartest), dann weiß ich auch nicht mehr weiter - dann kann es sich eigentlich nur um ein Problem Deines speziellen Computers (oder Windows) mit WinBoard handeln, denn sonst hat ja scheinbar niemand hier dieses Problem.
Grüße,
Franz
|