反則負け(floodgate)

15時の回の対Bonanza戦で、illegal moveで反則負けしてしまいました。。


何じゃそりゃ、とログを見てみると、最後の局面で△54歩をもう一度指そうとして異常になっていました。
どうもponderを使っている時のスレッド制御がまずいらしい…
ふだんローカルで対戦させるときはponder使わないので、事前に分かったことでよしとします。
でもこれは直るかなあ…最悪ponder使わないで出るか…

原因判明


一度定跡から外れた後、もう一度定跡に戻る場合に不具合が起きるようです。
詳しく説明すると、定跡から外れれば探索で指すので、エンジンからはbestmove ... ponder ...を返します。
将棋所はそれを受けてgo ponder ...を送って来ますが、そこで定跡に戻ったため、いきなりbestmoveを返してしまっていました。
go ponder ...を受けた場合は、stopまたはponderhitを受けるまではbestmoveを返してはいけないんですが、定跡で指す場合はそのチェックをしてなかったのが原因です。
いったん外れた定跡に戻る場合にだけ顕在化するので、今までは出なかったんですね。