ランダムなタイミングでクラッシュする問題が起きて、これの解決に非常に苦労したので
どういう問題と解決法だったかを共有します。
現象
特定のボス戦のroomでゲームがクラッシュして落ちます。
エラーメッセージのポップアップも出ずフリーズもせずパッとゲームのプロセスが消えます。
完全にランダムな箇所・タイミングでクラッシュします
1回目のRunでクラッシュすることもあれば、150回目のRunでクラッシュすることもあります。
roomに入って一瞬でクラッシュすることもあればしばらくしてからクラッシュすることもあります。
Output windowには
Runner.exe exited with non-zero status (-1073741819)
と出力されます。
原因
ボス戦の1つ前のroomにあるオブジェクトで使っていたオーディオエフェクトの機能、audio_emitter関数が原因でした。
roomから出る際にこれを解放していないためにボス戦roomに入った後で不正な参照かなにかが行われてクラッシュするようです。
対処
audio_emitter_create()で作ったものを、Cleanupイベントでaudio_emitter_free()で削除します。
念の為これへの参照変数も-1で上書きします。
クラッシュするのがボス戦roomだったので、このroom内にあるものしか疑えず原因特定に時間がかかりました。
ボス戦という特殊なことをしているroomだったのでなおさら意識が囚われました。
ボス戦は一切関係なかったです。
おしまい
特定できてよかったです!
Xで嘆いてるのをみて心配になってました!
今これ系のバグは大変精神的にきつかったです!でもなんとかなってよかった~