Catsxpのウィンドウ間でタブを移動させた際に落ちることがあるのはDisplayFusionが原因だった

Windowschat_bubble0

CatsxpというChromiumベースのブラウザを使用しているのですが、Catsxpのウィンドウが複数ある時にウィンドウ間でタブを移動すると、Catsxpが低確率で落ちることがありました。低確率なのであまり気にしていませんでしたが、最近になってなんだか頻度が増えてきた気がしたので、何が問題なのか調べて必要ならフォーラムで相談しようと考えました。

環境は以下。

  • Windows 11 25H2 (26200.8246)
  • Catsxp 6.4.3 (Kernel: 147.0.7727.99)
  • DisplayFusion 12.0.2

Chromiumベースのブラウザは、Windowsではクラッシュレポートを "User Data/Crashpad/reports/” にminidumpの形式で生成します。ChatGPT(5.4 Thinking)に直近のダンプ3つを投げて解析してもらうことにしました。

以下はダンプを見たChatGPTの見解まとめ。

  • 3つともクラッシュ地点と落ちる原因は共通しており、nullの参照で落ちている。
  • 3つともスタック上の戻り先アドレス列がかなり似ていて、同じ呼び出し経路で落ちている可能性が高い。
  • Renderer ProcessやGPU ProcessではなくBrowser Processで発生しているため、タブが死ぬのではなくブラウザが落ちるのはダンプと実際の症状で整合性が取れている。
  • 落ちるのはChromium/Catsxpのnullチェック漏れか、外部要因によるnullの参照が原因である可能性が高い。
  • 外部要因としては、MicrosoftとCatsxpのモジュールを除けばDisplayFusionのフックのdllと、Google日本語入力のdllが注入されている。
  • DisplayFusionはウィンドウのタイトルバーなどに干渉する機能があり、今回の症状はウィンドウ間でのタブの移動がトリガーになっていそうなので、DisplayFusionが原因の可能性がある。

DisplayFusionはマルチモニター環境向けのユーティリティです。DisplayFusionの設定には「互換性」という項目があり、ここでは任意のアプリを指定してDisplayFusionとの互換性を調整することができます。この設定の中に「アプリのフックを無効化」というものがあり、ChatGPTからはこれを試してみることを提案されました。

実際に試したところ、落ちるのはおそらく解消したように見えます。タブの移動を繰り返しても落ちることはなく、数日程度様子を見ましたが落ちることはなかったので解消していると思いたい…。

なおProcess Explorerで確認した限りでは、「アプリのフックを無効化」を有効にすることでCatsxpにDisplayFusionの「AppHook64_3952EA5C-E3E4-49CE-BB56-490FFC71FA5B.dll」が注入されることはなくなりました。ただこれでDisplayFusionのどの機能に影響が出ているのかが私には分かりません。DisplayFusionのタイトルバーボタンの表示、中クリックによるウィンドウの移動、といった機能は生きているように見えるので…。それらはAppHook64ではなく別の経路で動作している機能なのでしょうね。

とりあえず、今のところは問題が解消したように見えるので記事にしました。再発したら追記するか記事を消すと思います。

藤乃音りょう