まともにクラッシュダンプを読んだらAbleton Liveのクラッシュを止めることができた

ずっとSoundtoysのプラグインが原因だと思っていたAbleton Liveのクラッシュが、ちゃんと追ってみると実はそうではなかったという話。

割と前からTwitterで騒いでいたようにずっと困っていたんだけど、今回M3や荷鞍のための制作に対してちゃんと支障をきたしていたので真面目に調べてみた。

まず、Soundtoysがわるいという先入観を捨て、クラッシュ時に生成されるメモリダンプを確認する。

こんなファイル↓

見つけたらこれをWinDbg Previewに突っ込む。

ここにdmpファイルを入れる

そしたら 0:000> の横にある空欄に !analyze -v を入れてEnterを叩く。

すると、以下のような結果が得られる

このうち注目すべきは赤線を引いた箇所で、ここを見るとどういった例外がどこで起きているのかが分かる。今回の場合は MeldaProductionAudioPluginKernelV1164 って書いてありますね…………………アクセス違反を起こしている……freeした後に触っちゃったのだろうか………………

もしかすると、Soundtoysのプラグインが大きく目立っていたのはプラグインホストであるAbleton Liveが落ちたからであって、Ableton Liveを落とすと同時に大きく目立っていたわけではなかったのかもしれない。ずっと疑っててごめん。

で、実際にAbleton Liveがクラッシュしないようにする必要があるわけだけれど、まず最初に問題となっているプラグインのアップデートを試してみる。こういった問題がアップデートによって解決されることはけっこうある。MeldaProductionAudioPluginKernelV1164 というのはMeldaProductionのバンドルに入っているプラグインから共通で参照されるdllらしい。ということでバンドル自体をアップデートしたら、無事クラッシュが再現しなくなった。ずっと起動し続けていても落ちなくなった。めでたし。

詳細な再現手順を作成することはできなかったので、なにかの相性問題なのか、またはプラグイン自体にそういったバグがあるのか、詳細はわからなかった。が、定期的な更新がある限り、古いプラグインを使い続けていること自体が何らかの原因になることは確かにあるので、いつか必ずやってくる嫌な事象に当たりたくなければアップデートし続ける必要があるのだと思う。

その上で、やはり推測ではなく計測が大事だということもよくわかった。特に思い込みは怖いので、一度冷静になる必要があるのだろう。