NEE's Blog

Firefox 揭示:高达 10% 的崩溃竟是内存硬件问题

March 06, 2026

本文翻译自 Firefox 工程师 Gabriele Svelto 的 Mastodon 帖子,原载于 Hacker News。

背景:一个被忽视的问题

几年前,Firefox 团队设计了一套在崩溃报告中检测 bit-flip(位翻转) 的方法。去年,他们更进一步,部署了一个真正的内存测试器——在浏览器崩溃后,自动在用户机器上运行内存检测。

最近,Firefox 工程师 Gabriele Svelto 查看了这些测试产生的数据,结果令人震惊:他们的检测启发式算法是可靠的,大量崩溃确实来自内存故障或不稳定的硬件。

数据揭示的真相

让我们看看具体数字:

  • 一周内收到约 47 万份崩溃报告(这是 opt-in 系统,实际数字要大得多)
  • 其中约 2.5 万份被检测为可能存在 bit-flip
  • 这意味着每 20 次崩溃中就有 1 次可能是由坏内存或不稳定内存引起的

而且,由于这是保守估计,实际数字可能至少是两倍

换句话说:

高达 10% 的 Firefox 崩溃不是软件 Bug,而是由硬件缺陷引起的!

如果排除资源耗尽类崩溃(如 OOM),这个数字甚至上升到 15%

内存测试器的验证

为了验证这个估计,Firefox 团队查看了运行内存测试器的用户数据:

每 2 次被怀疑由 bit-flip 引起的崩溃中,内存测试器就发现 1 次真正的硬件问题。

需要注意的是,这个测试器并不是对整个机器 RAM 进行全面测试:

  • 只检查最多 1 GiB 内存
  • 运行时间不超过 3 秒

即使如此受限,它仍然发现了大量真实问题!

这不仅仅是电脑的问题

这个问题影响所有设备

  • 电脑
  • 手机
  • 路由器
  • 打印机
  • 你能想到的任何电子设备

即使是那些 RAM 焊接在 CPU 封装上的 ARM MacBook,Firefox 也收到了大量来自这些设备的崩溃报告。想更换这种 RAM?没有专业设备和熟练技师,基本不可能。

行业为何忽视这个问题?

硬件厂商和大型软件厂商多年来一直在回避这个问题,声称软件 Bug 更常见

但 Firefox 的测试数据表明:硬件问题已经频繁到经常淹没软件问题的程度。

这是一个系统性失败。用户机器上安装了大量 RAM,但很少有用户会用 Memtest86 这样的工具进行长时间测试。偶尔崩溃?很多人已经习以为常。

为什么 ECC 内存不是标配?

ECC(Error-Correcting Code)内存 可以检测和纠正单比特错误,能显著延长消费电子产品的寿命。但:

  1. 用户不愿意支付约 12% 的溢价
  2. 主板需要额外逻辑支持
  3. 行业缺乏推动力

讽刺的是,Windows 自带的内存测试工具被批评为”笑话”——它经常漏掉 Memtest86 能轻易发现的问题。

物理地址与崩溃频率

用户机器上坏比特的位置很重要:

  • 如果坏比特在较低的物理地址范围,用户会遇到更多问题
  • 即使是轻负载的机器,这些区域也更可能被使用
  • 一个坏比特需要命中重要数据(如指针或指令)才会导致崩溃

有用户分享了一个有趣的经历:他的笔记本在物理地址范围末尾有一个坏比特,只有在构建 Firefox OS(当时需要同时编译 Firefox 和大量 Android 基础系统)时才会触发。正常使用根本不会用到那个地址。

机器年龄与故障相关性

Firefox 的数据显示:

机器年龄与观察到的故障数量之间存在极强的相关性。

RAM 会随着时间老化,使用越多越容易出问题。这也是为什么服务器虽然有 ECC 内存,但其运行环境(温度控制、电源稳定、较低时钟频率)与消费设备完全不同,不能直接比较故障率。

文件系统的隐患

最糟糕的情况是什么?

当要写入磁盘的数据恰好包含 bit-flip 时,错误会永久保存到硬盘上。

这也是为什么优秀的文件系统应该对数据和元数据都实现 checksum(校验和),以便在造成永久损坏之前尽早检测到这些问题。

对开发者的启示

  1. 不要假设所有崩溃都是软件 Bug - 特别是无法复现的崩溃
  2. 内存测试是重要的 - 新机器应该跑 Memtest86,老机器也应该定期检查
  3. ECC 内存值得考虑 - 对于重要工作,额外的成本可能物有所值
  4. 代码体积影响崩溃率 - 理论上,更小的二进制文件会有更低的物理错误概率

结语

Firefox 团队的这项研究揭示了一个被行业长期忽视的问题。10-15% 的崩溃来自硬件故障,这个数字远超之前的任何估计。

下次遇到神秘崩溃时,在疯狂调试代码之前,也许该先跑一下内存测试。


关键要点:

  • Firefox 数据显示 1/20 的崩溃可能由内存问题引起
  • 实际比例可能高达 10-15%
  • 问题影响所有设备,包括无法更换 RAM 的现代笔记本
  • 行业长期低估了硬件故障的频率
  • ECC 内存应该成为消费电子的标配
comments powered by Disqus