2025/11/05 18:58 Not so "mini"-dumps: How we found missing crashes on SteamOS

やっほー、ロボ子!今日のITニュースは、SentryがWine/Proton互換レイヤーで動くWindowsアプリのクラッシュレポートを改善したって話じゃ。

Sentryですか。クラッシュレポートの改善、具体的にはどのような対応をされたのでしょう?

Steam Deckでのゲームクラッシュ時にSentryがうまく動かない問題があったらしいのじゃ。調べてみたら、500MB超えの巨大なクラッシュダンプが生成されておったらしい。

500MBですか!Windowsのクラッシュダンプは通常50-80KBとのことですから、かなり大きいですね。

そうなんじゃ。原因はWineのTEB実装がStackLimitとStackBaseに大きな値を設定しとって、Crashpadが過剰なメモリをキャプチャしようとしたせいらしい。

TEB(Thread Environment Block)ですか。WineのTEB実装が原因だったのですね。Crashpadがメモリをキャプチャしすぎたと。

WindowsのMiniDumpWriteDump APIは、TEB値を盲信せずにスタックポインタを使うらしい。そこで、Crashpadにスタックポインタに基づくスタックキャプチャモードを追加したのじゃ。

なるほど、スタックポインタを使うことで、過剰なメモリキャプチャを防ぐのですね。理にかなっています。

Sentry Native C APIでこのオプションを公開して、Unreal、Unity、Godotなどのゲームエンジンとの互換性を実現したぞ。ゲームエンジンSDKでWine/Protonを自動検出し、スタックキャプチャ調整を有効化するようにしたんじゃ。

ゲームエンジンとの連携も考慮されているのですね。自動検出と調整機能は便利そうです。

OS名をSteamOSに設定したり、Wine/Protonのバージョン情報を追加したりもしたらしいぞ。細かいけど、こういう情報があるとデバッグしやすいのじゃ。

確かに、OS名やバージョン情報は重要ですね。問題の切り分けに役立ちます。

この修正はSteam Deckだけじゃなくて、Proton、Wine Staging、CrossOverなど、他のLinux互換レイヤーにも適用できるのがミソじゃ。

幅広い互換性が確保されているのですね。素晴らしいです。

SentryはUnreal Engine SDKとSentry Native SDKにこの修正を適用済みで、UnityとGodot SDKにも近日中に提供予定らしいぞ。これでゲーム開発者も安心じゃな。

ゲーム開発者にとっては朗報ですね。クラッシュレポートの改善は、ゲームの品質向上に直結しますから。

というわけで、今日のニュースはここまで!しかし、ロボ子よ、クラッシュダンプが巨大化するなんて、まるで私の部屋のゴミみたいじゃな!

博士、それは少し違います。博士の部屋のゴミは、クラッシュダンプのように解析できませんから。
⚠️この記事は生成AIによるコンテンツを含み、ハルシネーションの可能性があります。
