GWP-ASan と KFENCE は、それぞれユーザー空間とカーネルの確率論的メモリ検出ツールです。有効にすると、少数の割り当てが、割り当てられたメモリを囲む追加のメモリページによって保護されます。これにより、無視できるほどわずかなパフォーマンス オーバーヘッドでバッファ オーバーフローと解放後の使用を検出できます。保護された割り当てのサンプルレートが小さくても、大規模にデプロイすれば、メモリ安全性のバグを効果的に検出できます。導入以来、これらのツールは数多くのプラットフォームのバグの特定に役立っており、安定性とセキュリティを向上させる貴重なツールであることが証明されています。Google はベンダーに対し、これらのツールを有効にして、エンドユーザー デバイスで検出されたバグを注意深くモニタリングすることをおすすめします。
デベロッパーは、/data/tombstones
、logcat
をチェックするか、ベンダーの DropboxManager
パイプラインでエンドユーザーのバグをモニタリングして、クラッシュがないか確認してください。
詳細については、Android ネイティブ コードのデバッグに関するドキュメントをご覧ください。
ネイティブ Android プラットフォーム コードのデバッグユーザー空間のメモリ安全性のバグを検出する GWP-ASan
GWP-ASan は、ユーザー空間のヒープ割り当てのために Android 11 で導入されました。GWP-ASan はバグを検出すると Cause: [GWP-ASan]:
でクラッシュ レポートを記録し、プロセスを終了させます。バグレポートには割り当てと割り当て解除に関する補足情報が含まれており、根本原因を特定しやすくなっています。
GWP-ASan は起動時に、システム プロセスまたはアプリの 1% と、AndroidManifest.xml
ファイルで android:gwpAsanMode
が設定されているアプリに対して、ランダムに有効になります。
カーネルのメモリ安全性のバグを検出する KFENCE
Android 12 では、カーネルのヒープ割り当てに KFENCE が導入されました。KFENCE はバグを検出すると BUG: KFENCE,
で始まるクラッシュ レポートを記録し、ガードページを無効にして実行を継続します。これにより、ユーザー エクスペリエンスにほとんど影響を与えないカーネルのバグ検出メカニズムが実現します。
KFENCE の詳細については、https://www.kernel.org にあるドキュメントをご覧ください。