[C#] 謎のエラーに悩まされる(FatalExecutionEngineError)

普通に使っていると問題ないが、一日ずーっと負荷をかけ続けていると止まってしまうアプリがあった。なんでやねんと悩みつつエラーを確認。

FatalExecutionEngineError が検出されました。
Message: ランタイムの重大なエラーが発生しました。エラーのアドレスは……

なんですかこれ面妖な。

ネットで調べてみると、unsafeな書き方がいかんとか、妙な参照がいかんとか色々書いておる。
ふむ、よくわからないが手法に問題があるのか?
ぼちぼちやってみるか。

当該アプリには音声入出力を組み込んである。
入力は別に音声を解析しているのでなく「人の声っぽいのを拾ったら報告しろ」ってレベルの処理をつけてある。つまり対話を狙っているのでなく、なんでもいいから声をかけると、あらかじめ用意してある仕事の中から最適っぽいのを選んで実行するというものだ。元々はちゃんと認識力させようとしていたけど、認識率の低さから断念したんだよね。
で、どうもメッセージ内容的にそのあたり(音声認識まわり、あるいは音声合成時に使っているスレッド付近)で例外を発している模様。
だけど上記エラー名でcatchはできない。どう狙おうとしてもひっかからない。Exceptionでも素通り。
ふむ。
よくわからないが、いきなりこんな深刻なエラー出すもんか?もしかして、前兆があるのではないか?

さらに過去のエラーをまさぐってみると、あったあった。なんか初期アクセス例外がどうのとか色々言ってきてる。
やはり、どうもこの処理の使い方、もしくはアクセス方法がよくない気がする。ランタイム関係のエラーが時々出ているのが、いかにもそれっぽい。
しかし具体的にどうするのかな?
じっとコードを見ていたら。

  • 「あ、このusingいらないんじゃね?」
  • 「なんで入出力が構造体なんだよ。やめろよ、classでいいじゃねえかよ」

とりあえず、目立つとこからて直ししてみた。
おや、そしたら手前のランタイムエラーが出なくなったぞ?

ほうほう。
じゃあ、この条件で実験再開してみるかな?

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)