- Firefoxのクラッシュレポートを分析した結果、ビットフリップによるハードウェアエラーがクラッシュ全体のかなりの部分を占めていることが分かった
- 直近1週間で約47万件のクラッシュレポートのうち2万5千件が、ビットフリップの可能性がある事例として検出された
- ソフトウェアバグではなく、ハードウェア欠陥が最大10〜15%のクラッシュ原因であることが確認された
- クラッシュ後に実行されるメモリテストツールは3秒以内に最大1GiBだけを検査するが、実際の欠陥を多数発見している
- こうした問題はPC、スマートフォン、ルーター、プリンターなどあらゆる機器に影響し、コンシューマー向けハードウェアの信頼性の限界を示している
Firefoxクラッシュとビットフリップ検出
- Firefoxのクラッシュレポートからビットフリップ(bit-flip)現象を検出する方法が設計され、その後、実ユーザーの端末でクラッシュ後に自動実行されるメモリテストツールが配布された
- このツールはブラウザーのクラッシュ直後にユーザー端末で実行され、メモリエラーを検査する
- 収集されたデータの分析結果から、ビットフリップ検出ヒューリスティックが有効であることが確認され、多くのクラッシュが不良メモリや不安定なハードウェアで発生していることが分かった
統計的結果
- 直近1週間で約47万件のクラッシュレポートが受理され、これは全クラッシュの一部(オプトイン方式)のみを含む
- このうち約**2万5千件(約5%)**がビットフリップの可能性があるクラッシュとして検出された
- 実際の比率は保守的な推定値であり、実際には2倍以上である可能性がある
- Firefox全体のクラッシュのうち最大10%がハードウェア欠陥であり、メモリ不足などのリソース枯渇によるクラッシュを除くと**約15%**に達する
- 不良ハードウェアを抱えるユーザーほど、より頻繁にクラッシュを経験するため、数値がやや歪められている可能性がある
メモリテスト結果
- クラッシュ後に実行されたメモリテストツールは、最大1GiBのメモリを3秒以内で検査するが、実際のハードウェア欠陥を多数検出している
- ビットフリップが推定された2件のクラッシュのうち1件で、実際の欠陥が確認された
- テストは限定的な範囲であるにもかかわらず、実際のエラー率が高いことを示している
ハードウェア全体への影響
- こうした問題はコンピューターやスマートフォンだけでなく、ルーター、プリンターなどあらゆる電子機器に影響する
- ARMベースのMacBookのようにCPUパッケージにRAMがはんだ付けされた機器でも、多数のクラッシュが報告されている
- こうした機器のRAM交換は、専門機材と熟練技術者なしには不可能である
コミュニティでの議論と追加情報
- 一部のユーザーは不良RAMの事例やmemtest86のテスト経験を共有し、メーカーの品質管理の不備を指摘している
- ECC RAMの必要性をめぐる議論が続いており、SECDED ECCだけでもコンシューマー機器の寿命を大きく延ばせるという意見が示された
- サーバー環境におけるメモリエラー研究は存在するが、コンシューマー機器の環境とは条件が異なるため直接比較は難しいと言及されている
- データ分析の結果、機器の老朽化とメモリエラー発生率の間に強い相関関係が確認された
- ビットフリップは単なるクラッシュだけでなく、ファイルシステム破損などの永続的なデータ損失につながる可能性があり、それを防ぐためにチェックサムベースのファイルシステムの重要性が強調された
結論
- Firefoxクラッシュのかなりの割合がソフトウェア欠陥ではなくハードウェア問題に起因していることが明確に示された
- コンシューマー向け機器でメモリエラー検出とECC適用の必要性が改めて浮き彫りになった
- ハードウェア信頼性の確保がソフトウェア安定性の向上と直結することを示す事例である
1件のコメント
Hacker Newsの意見
以前HNで話したことがあるが、ArenaNet時代の同僚だったMike O’Brien(battle.netの創始者)が、2004年ごろにGuild Wars向けのビットフリップ検出システムを作っていた
毎フレーム(約60FPS)ごとにランダムなメモリを割り当てて数学演算を走らせ、その結果を基準値テーブルと比較していたが、およそ1000台に1台は失敗していた
原因の大半はオーバークロックされたCPU、誤ったメモリ待機状態、電力不足、冷却不良などで、ゲームが屋外地形を多くレンダリングするためコンピューターが過熱しがちだった
後になって、Dellの低価格部品の品質問題やRowHammer攻撃も原因になりうることが分かった
私はテスト失敗時にブラウザーを開いて「コンピューターファンを掃除しろ」というページを表示するコードを書いた
こういう場合の大半はランダムなビットフリップか不良ハードウェアのせいだと考えていた
少し高いが、こうした問題をほぼすべて解決してくれる。一部のコンシューマー向けマザーボードはすでにECCをサポートしている
月額課金がなかったので親も喜んでいたし、8スキルビルドシステムは本当に天才的だった
3作目が出るなら、ビルド表現の自由度をもっと高めてほしい
オーバークロックテスト中にECCのおかげで微細なエラーを検出でき、それ以来ECCなしのオーバークロックは絶対に信用しなくなった
DDR5は特に安定性の確保が難しく熱に敏感なので、ECCなしでのオーバークロックは不可能だと思う
ECCメモリは1GBを超えた時点で標準になるべきだった
今では役に立たないRGB LEDメモリは安いのに、ECCは高いのが不満だ
AMDはまだコンシューマー向けCPUでECCを「部分対応」しているが、Intelはワークステーション級でしか認めていない
ただし、ECCなしのDDR4より信頼性が高いかははっきりしない
可能ならECC搭載ノートPCを使いたい
それでもサーバー環境のように安定した電源と温度条件では99%のエラーを防ぐ
Goチームがテレメトリベースのクラッシュレポートシステムを導入した
runtime.SetCrashOutputでgoroutineクラッシュスタックを収集し、数百件のバグを捕まえたただ、一部のレポートはメモリ破損やCPU誤動作のように説明のつかないものだった
ノートPCユーザーの大半はECCなしのメモリを使っているため、ハードウェア欠陥の可能性が高いと判断した
私もJuliaLangブログのビットフリップ事例を共有したい
「Firefoxクラッシュの10%がハードウェア欠陥による」という主張は少し大胆すぎるように見える
Chromium系ブラウザーではそんなに頻繁にクラッシュしない
Chromeのほうが安定しているのは、残り90%のソフトウェアバグ処理能力が優れているからかもしれない
むしろFirefoxのクラッシュの大半がソフトウェアの問題だという意味かもしれない
「原因がビットフリップだと確信している」という文を見たが、どう検出したのか説明が足りない
Mozillaソースコードのmemory_test.rsもそうした役割のようだ
新しいPCを買ってRAMを5800MHzにオーバークロックしたら、Fedoraが妙にフリーズし、アプリも起動しなくなった
memtestを回すと2分で真っ赤なエラーが大量に出て、速度を5200に下げたら安定した
こんな話をHNのトップページで見るとは、タイミングが絶妙だ
Firefoxのクラッシュ率が思ったより高いことに驚いた
私は何年も終了時クラッシュが続いていて、そのたびにレポートを送っている
拡張機能はすべてWebExtensionなのに、原因はさまざまに見える
Firefoxは複数ウィンドウとタブの処理はうまいが、安定性は改善の余地がある
終了処理では多くのメモリを解放するので、ビットフリップが表面化しやすい
原因を確かめるにはメモリテストをしてみるとよい
about:crashesのレポートリンクを共有してほしいという依頼があった実際にこうしたデータを収集している人がいるのはうれしい
不良メモリ問題はコンピューティングで最も過小評価されている問題の一つだと思う
短い技術ホワイトペーパー形式のまとめがあるとよい