Nyanyan/Egaroucid

Crash Bug with Egaroucid 7.1.0-7.2.0

Closed this issue · 14 comments

7.1.0や7.2.0でクラッシュバグが発生したとの報告を受けた

e6f6f5f4e3d6g4d3c3h3c4g3g5g6c7c6c5b6d7b5b4f3e7f7h5h4h2

のあとにd1をplayすると即座にクラッシュするらしい。

setting.json

{
  "ai_put_black": true,
  "ai_put_white": false,
  "auto_update_check": true,
  "book_acc_level": 0,
  "book_file": "path/to/book.egbk3",
  "book_learn_depth": 36,
  "book_learn_error_leaf": 2,
  "book_learn_error_per_move": 2,
  "book_learn_error_sum": 2,
  "change_book_by_right_click": false,
  "change_color_type": false,
  "generate_random_board_moves": 20,
  "hash_level": 25,
  "lang_name": "english",
  "level": 28,
  "n_disc_hint": 35,
  "n_threads": 4,
  "pause_when_pass": false,
  "show_book_accuracy": false,
  "show_graph": true,
  "show_graph_sum_of_loss": false,
  "show_graph_value": true,
  "show_last_move": true,
  "show_legal": true,
  "show_log": true,
  "show_next_move": true,
  "show_next_move_change_view": false,
  "show_opening_name": true,
  "show_opening_on_cell": false,
  "show_play_ordering": false,
  "show_principal_variation": true,
  "show_stable_discs": false,
  "umigame_value_depth": 60,
  "use_book": true,
  "use_book_learn_depth": true,
  "use_book_learn_error_leaf": true,
  "use_book_learn_error_per_move": true,
  "use_book_learn_error_sum": true,
  "use_disc_hint": true,
  "use_umigame_value": false
}

多分直ったと思うので良しとする

Egaroucid 7.3.0でbook生成をしていたらクラッシュバグが再現した

Book deviateでYBWCを使っているとき(ybwc_split_nwsのparallel_tasks.emplace_back)にアクセス違反が発生しているよう

book deviateのexpand leavesは基本的に1つの問題を1つのスレッドで解くようにしているが、今回のクラッシュは問題数が減ってきたときにマルチスレッドで問題を解くようにしている場合に起こるっぽい

tree_search_legalを呼ぶときのuse_legalがおかしい
image

適当に動かしていたら、上のuse_legalとは別件でmove_list_evaluate_nwsでアクセス違反が発生していることがわかった

Egaroucid for Consoleでもmove_list_evaluate_nwsでバグが発生した。

  • クラッシュする場所は結構まちまち
  • 全てアクセス違反でクラッシュする
  • 1スレッドで実行してもクラッシュしない

ということなので、複数スレッドで実行したときにスレッドプールで問題が発生している気がする

とりあえず7.0.0のスレッドプールに戻して様子を見る

7.0.0のスレッドプールでも同様のバグが発生した

7.0.0以前だと結構ずっとスレッドプールはいじっていないので、スレッドプールが根本原因ではなさそう

mid_nwsでのYBWCで長男を問答無用でvに代入しているのは良くない(そのタイミングで探索を強制終了するとバグる)ので、修正した。これは7.0.0から引き継がれているバグ

mid_nwsのYBWCでの長男の扱いを修正したところ、全くクラッシュしなくなったので、これだけが原因だったと見て良さそう