尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

WHEA_UNCORRECTABLE_ERROR 0x124蓝屏排查指南

WHEA_UNCORRECTABLE_ERROR 0x124蓝屏排查指南 机器正在跑渲染或者打游戏画面直接一黑转两秒之后重启屏幕上跳出大写的一行WHEA_UNCORRECTABLE_ERROR。很多人第一次见到这个蓝屏代码的反应是系统坏了然后开始重装系统、换驱动、跑sfc折腾一圈发现该蓝照蓝。这个判断方向从一开始就偏了。whea_uncorrectable_errorBlue Screen 代号 0x00000124它和绝大多数蓝屏代码不在一个层面上。普通蓝屏多数是驱动踩了非法内存、系统文件损坏、启动流程被打断这类软件问题而 WHEA 是 Windows 硬件错误架构Windows Hardware Error Architecture直接把 CPU、内存控制器、缓存、PCIe 链路上报的我算错了而且纠不回来翻译成了一次强制关机。换句话说系统在告诉你不是我不行是下面那层硬件给了我一个修不了的结果我只能停下来免得错数据继续往下传。这篇内容写给三类人正在被这个代码折磨、想自己动手排查的装机玩家需要判断是送修还是自己调的办公机维护人员以及手里有超频平台、想搞清楚什么参数会导致 WHEA的折腾党。全文围绕 whea_uncorrectable_error 展开把参数怎么读、嫌疑怎么排、测试怎么跑、结论怎么下讲清楚顺便把最近热度很高的 蓝屏代码 0xc000021a 和 蓝屏代码 UNEXPECTED_STORE_EXCEPTION 一并做个区分免得把三条完全不同的排查路线混成一条。看完你自己就能上手不需要先寄回售后赌一把。1. whea_uncorrectable_error 到底是什么为什么它和普通蓝屏不是一回事1.1 从一次真实报错说起硬件层先出错系统才蓝屏要理解这个代码得把顺序倒过来看。不是蓝屏导致硬件出错而是硬件在某个瞬间给出了一个无法纠正的计算结果系统监测到之后为了避免这个错误结果继续污染内存和磁盘数据主动触发了 BugCheck 0x124。所以你在事件查看器里往往会看到两条时间非常接近的记录一条是 WHEA-Logger 上报的硬件错误另一条才是 Kernel-Power 记录的非正常关机。前者是原因后者是结果。WHEA 这套机制并不是 Windows 独有的花活它依托的是 CPU 自带的机器检查架构Machine Check ArchitectureMCA。CPU 内部每个功能单元——取指单元、L1/L2/L3 缓存、数据 TLB、内存控制器、电源控制单元——都有自己的机器检查寄存器。当某个单元检测到数据校验失败会先尝试用 ECC 之类的机制纠正纠得回来叫 corrected error可纠正错误系统继续跑只写一条日志纠不回来就是 uncorrectable error触发蓝屏。这就是为什么有些人的机器日志里天天报可纠正错误但从不蓝屏而有些人一周蓝一次——不是前者的硬件更好而是错误落在不同的严重级别上。理解这一点很关键因为它直接决定了排查方向软件层面的修复手段对这个代码基本无效。重装系统不会让一个电压不足的 CPU 核心变得稳定换驱动也不会让一条本身有问题的内存条变好。1.2 corrected 和 uncorrectable两种日志两套处理策略实际排查中我习惯先看可纠正错误的密度再看不可纠正错误。可纠正错误是预警信号不可纠正错误是已经出事。HWiNFO64 的传感器列表里有一项 WHEA 错误计数打开着跑一局游戏或者跑一轮渲染如果这个数字在几分钟内从 0 涨到几十上百那基本可以确定平台存在稳定性问题哪怕它现在还没蓝。这个技巧我用了很多次比等它蓝屏再查效率高得多——你可以在可控的测试环境里复现而不是在客户现场或者交稿前十分钟炸掉。事件查看器里的 WHEA-Logger 事件 ID 也值得记一下它们对应不同的严重程度事件 ID含义处理优先级1一般硬件错误记录观察配合其他日志看趋势17已纠正的硬件错误记录密度密集出现说明平台不稳18不可纠正的机器检查错误就是这次蓝屏的元凶重点分析19已纠正的机器检查错误通常与超频、电压、温度相关47缓存层级错误常见于 AMD 平台配合 APIC ID 定位到具体核心这里要提醒一句事件 47 在锐龙平台上出现得特别频繁日志里会带一个 Processor APIC ID。如果你发现每次报的都是同一个 APIC ID那问题的落点就非常明确了——不是全局供电而是某个具体核心在特定负载下撑不住。这个判断比整机不稳要精确得多后面调整 Curve Optimizer 或者申请保修时都用得上。还有一个容易忽略的地方WHEA 报错并不总能在 C:\Windows\Minidump 里留下 dump 文件。如果系统设置的是自动内存转储而页面文件被关掉或者太小转储过程可能直接失败你只能看到一个蓝屏代码没有任何进一步线索。所以排查这类问题前先把转储设置改成小内存转储或者手动指定一个足够大的位置确保下一次复现时有东西可查。1.3 哪些硬件单元会触发这个代码影响面到底有多大从实际案例看触发 WHEA 的硬件来源大致分四类CPU 核心与缓存、内存与内存控制器、PCIe 链路、平台/供电相关。前三类占了绝大多数。这意味着它并不等于CPU 坏了——很多人一看蓝屏代码里有硬件字样就以为 CPU 报废了其实大量案例最后查明是内存 XMP 太激进、PCIe 延长线接触不良、或者主板供电在高负载下瞬态塌陷。影响面的另一个维度是场景。办公机偶发这个代码通常意味着硬件已经开始老化或者散热被堵死而超频平台出现这个代码八成是参数没调稳。两种情况处理思路完全不同前者要往回收降频、清灰、换硅脂、换电源后者要往外放降电压、降频率、放宽时序。这也是为什么我不建议一上来就照抄网上的万能修复命令——方向不对越修越乱。2. 读懂蓝屏参数0x124 后面那四个数字才是真正的线索2.1 参数1错误来源类型决定你往哪个方向查蓝屏画面第二行通常是一串括号里的十六进制数字格式是 0x124(参数1, 参数2, 参数3, 参数4)。第一个参数是错误来源类型它直接告诉你这次报错来自哪一类硬件。注意不同 Windows 版本和不同平台对这个映射的呈现略有差异下面这张表是社区里最常见的对应关系实际判断时建议结合 dump 里的 WHEA 记录一起看不要只凭一个数字下结论。参数1含义优先排查方向0x0MCA 机器检查异常CPU 核心/缓存/内存控制器需看参数2的 bank0x1内部定时器错误少见多与固件、微码版本相关0x3MCE 机器检查异常指向明确通常是 CPU 相关0x4PCIe 链路错误显卡、NVMe、转接卡、延长线、插槽0x5平台/其他错误主板、芯片组、供电、散热看到 0x4 的时候我会先去动硬件连接拆掉 PCIe 延长线、把显卡直插、把 M.2 转接卡换成直插、把 BIOS 里的 PCIe 速率从 4.0 手动降到 3.0 试试。这一步几乎是免费的而且命中率不低。看到 0x0 或 0x3 就复杂一些得接着看 bank 编号。2.2 参数2、3、4bank 编号与 MCA 状态值的读法参数2 在 MCA 类型错误里通常代表bank 编号也就是哪个功能单元的检查寄存器报了问题。Intel 平台上常见的 bank 分布大致是bank 0 对应取指单元bank 1 对应数据缓存bank 2 对应数据 TLBbank 3 对应中级缓存bank 4 对应电源控制单元再往后是各型号特有的单元。AMD 的映射体系不一样不能照搬所以这张表只能当 Intel 平台的参考bank功能单元常见诱因0指令取指单元微码、核心本体、极端电压1数据缓存 DCU超频过度、核心电压不足、缓存不稳2数据 TLB内存地址映射异常、内存不稳3中级缓存 MLC缓存电压、频率、温度4电源控制单元 PCU供电瞬态、功耗墙、VRM 散热5 及以上型号相关单元结合具体平台的文档判断参数3 和参数4 是两个 32 位值拼起来是 MCA 状态寄存器的高低位里面编码了错误类型、是否可纠正、由哪个单元上报等信息。这部分内容对普通玩家来说参考价值有限但如果你打算把 dump 发给售后或者发到社区求助把这两个值和 bank 编号一起贴出来能帮对方省掉至少一轮来回问答。我的经验是bank 落在缓存类和 PCU 类的比例最高。前者多半和超频参数、内存稳定性有关后者则经常在高负载、供电压力大的时候出现尤其是那些长时间跑渲染、跑 AI 推理、跑视频导出的机器。如果 bank 指向 PCU我会优先检查功耗墙设置、VRM 散热片温度、CPU 供电接口是否插紧、电源的 12V 输出是否够用。2.3 两条取证路线事件查看器和 dump 文件怎么配合看第一条路线最省事不用装任何东西。打开事件查看器进 Windows 日志、系统在右侧筛选当前日志里把来源设成 WHEA-Logger看最近几次报错的时间点、事件 ID 和详细信息。日志详情里一般会写明错误来源、组件、处理器编号对 AMD 平台还会给 APIC ID。这条路适合快速判断是不是硬件报错是不是每次都同一个核心。第二条路线更彻底需要 dump 文件。确认 C:\Windows\Minidump 下有对应时间的 .dmp 文件然后用 WinDbg 打开执行 !analyze -v 让它先把基本结论跑出来重点看 BUGCHECK_CODE 是不是 0x124、参数值是多少。接着如果 dump 里包含 WHEA 错误记录可以用 !errrec 加上记录地址把这一条错误记录的完整内容展开里面能读到错误来源、PCIe 设备标识、处理器编号等细节。命令行工具本身的安装和符号配置有一点点门槛第一次用会折腾十几分钟但一旦配好之后每次排查都很快。再补一条容易漏的Windows 在 C:\Windows\LiveKernelReports 里也会放一些活体内核报告某些还没到蓝屏程度但已经被系统注意到的硬件异常会落在这里。这个目录经常被忽略但在排查偶发性 WHEA 时很有用——它记录的是隐患不是事故。3. 按概率排查一份有顺序的硬件嫌疑名单3.1 第一嫌疑超频、电压和一键提速如果这台机器开过 XMP/EXPO、开过 PBO、动过倍频或者 Curve Optimizer那第一嫌疑永远是它。原因是这些一键操作本质上是把厂商留的安全余量吃掉了一部分而余量吃多吃少取决于你这颗 CPU、这对内存条、这块主板的具体体质。同样的参数在别人机器上稳如老狗在你机器上就可能报 WHEA这跟人品无关跟体质有关。具体怎么处理我按平台分开说。Intel 平台先做三件事进 BIOS 恢复默认或者只开 XMP 不开其他加速、把功耗墙和电流墙放回默认、把负载线校准LLC从最激进的那一档降下来。特别是 13/14 代 K 系列社区里有大量高电压高负载下的稳定性反馈厂商后来也通过微码和 BIOS 更新做了调整所以刷到最新 BIOS、启用 Intel 默认配置档是很实在的一步。AMD 平台的处理重点不同。锐龙平台的 WHEA 事件 47 经常和三个参数挂钩Curve Optimizer 的负向偏移、SoC 电压、FCLK 频率。我的做法是全核负向偏移先收回到 -10 以内SoC 电压给到 1.05 到 1.10 之间FCLK 先降到 1800 或 1600 跑一轮稳定性测试。如果日志里不再出现缓存层级错误再一项一项往上加每次只改一个参数改完测二十分钟。注意调参数的时候一次只改一项。同时改三个参数然后发现稳定了你永远不知道是哪一项起了作用下次遇到类似问题还是要从头试。3.2 第二嫌疑内存条与内存控制器内存是 WHEA 的第二大来源而且它经常伪装成 CPU 问题——因为内存控制器IMC是集成在 CPU 里的内存不稳的时候报出来的错误很可能指向缓存或者 TLB。所以当你看到 bank 1、bank 2 报错别急着骂 CPU先把内存排查干净。排查顺序我一般这么走先关掉 XMP/EXPO让内存跑在 JEDEC 默认频率观察是否还报错。如果默认频率下稳定那问题基本锁定在内存超频参数上接下来可以手动放宽主时序、把内存电压从 1.35V 提到 1.40V 到 1.45V 区间试、给内存控制器的相关电压Intel 平台的 VCCSA、VCCIOAMD 平台的 VSOC、VDDP适当加一点余量。如果默认频率下依然报错那就要怀疑单条体质或者插槽问题改成单条轮流测、换插槽测。还有一个容易被忽略的点四条满插比两条难稳得多。四根内存条同时上高频对内存控制器的压力是翻倍的。如果你上的是四条套条建议先把频率降到 5600 或 5200 附近稳定优先。我见过太多四条 6000 上不去还以为是 CPU 坏的案例最后只是频率放低了事。3.3 第三嫌疑供电、温度与 PCIe 链路供电问题的特点是只在负载高的时候出现。轻载什么都不报一跑渲染或者一开游戏几分钟内报错。判断方法很直接看报错的时间点是否总是集中在高负载阶段看 HWiNFO 里 CPU 封装功耗、VRM 温度、以及 12V 输入电压有没有明显波动。如果 VRM 温度常年贴着 90℃ 以上那基本可以认定散热拖了后腿——机箱风道堵了、供电散热片太小、或者 CPU 供电接口只插了一半。PCIe 链路问题的排查更偏物理层面。延长线、转接卡、竖装显卡套件都是高频故障点。我的经验是先做减法把所有转接的东西拆掉显卡直插主板第一条插槽NVMe 直插 M.2 口跑一轮看还报不报。如果不报了再一件件加回去加哪件报错就是哪件的问题。BIOS 里的 PCIe 速率手动降到 3.0 也是一个很有效的临时手段代价只是带宽小一点对大多数场景感知不明显。温度方面还有一个隐性杀手是内存和硬盘。内存条没有散热马甲、或者被塔式散热器挡住风道长时间高负载下温度上到 60℃ 以上报错概率明显上升。SSD 温度过高时虽然主要是掉速但如果它挂在 CPU 直连的 PCIe 通道上链路异常一样可能触发 WHEA。这些都属于顺手就能改善的项加个风扇、贴个散热片成本很低。3.4 第四嫌疑固件与驱动固件这条线在 WHEA 排查里的优先级不算最高但它是唯一能在硬件没问题但平台配合不好的情况下解决问题的路径。BIOS/UEFI 更新带来的微码更新、内存兼容性改进、电压策略调整经常能让原本不稳的配置变稳。芯片组驱动和存储驱动也值得更新一轮尤其是 NVMe 相关的驱动和固件某些型号的固态硬盘确实存在固件层面的链路异常问题厂商放出新固件就是为了修这个。不过这里要强调顺序先更新再测试不要更新完就当没事了。很多人刷完 BIOS 之后觉得官方都修了肯定好了结果一周后又蓝。正确的做法是更新之后照常跑一轮压力测试用数据确认问题真的消失了。3.5 低概率但要考虑CPU 本体老化与主板故障如果默认频率、单条内存、直插显卡、更新完固件、散热正常的前提下WHEA 依然稳定复现那就要认真怀疑 CPU 本体或者主板了。判断依据有几个一是报错是否总是同一个 APIC ID 或同一个 bank二是默认设置下低负载是否也会报三是换到另一块主板上是否复现。我处理过几例最后确认是 CPU 本体问题的机器共同特点是什么都不超、内存默认、散热良好但每跑十几分钟渲染必报一次缓存类错误而且错误集中在一个核心上。这种时候没什么可调的走保修或者更换。反过来如果换 CPU 之后问题照旧那就是主板供电或者插槽的问题。4. 实操流程从固化现场到复现验证的完整走法4.1 第一步把现场固定下来别让它悄悄溜走蓝屏之后的第一个动作不是重启是记录。手机拍下蓝屏画面尤其是括号里那四个参数这是最原始也最可靠的证据。然后进系统做三件事关闭自动重启系统属性、高级、启动和故障恢复里取消自动重新启动确认转储设置为小内存转储或者核心内存转储确认页面文件没有被人为关闭或者设得过小。这三件事做完下一次复现时你手里就有 dump 了。同时打开事件查看器把 WHEA-Logger 的历史记录导出保存或者直接截图。时间点的价值在于它能告诉你报错发生在什么操作之后——是刚开机、还是跑了半小时渲染、还是插拔了某个设备。这个时间关联往往比参数本身更有指向性。4.2 第二步回到默认 最小系统把变量降到最少这一步是整个流程的核心。进 BIOS 恢复默认设置只保留启动所需的基本配置关掉 XMP/EXPO、关掉所有超频选项、关掉 PBO 和任何自动加速。硬件上做减法只留一根内存条插主板推荐的第二槽、拆掉所有转接卡和延长线、拔掉不必要的外设、如果主板有集成显卡就先把独显拆掉。做成一个真正的最小系统。然后在最小系统下跑一段负载测试。如果稳定说明问题在某个被你摘掉的变量上接下来就是加回去一个一个试如果依然报错那嫌疑范围就缩小到 CPU、主板、内存、电源这四件核心件上了排查难度大幅下降。我自己的成功率统计里大约有一半的案例在做完最小系统这一步之后方向就明确了。4.3 第三步压力测试怎么跑看什么指标测试工具的选择和参数设置直接决定你能不能复现问题。跑得太轻没意义跑得太狠可能把本来没问题的硬件跑出问题所以强度要合适。下面这张表是我常用的组合工具测试目标建议参数判读标准TestMem5 anta777 配置内存与内存控制器至少 3 圈约 1.5 到 2 小时出现任何一处报错即判定不稳MemTest86内存底层完整跑满 4 轮出现红色错误行即判定Prime95 Small FFTsCPU 核心与缓存30 分钟以上温度控制在 90℃ 以内报错或线程掉出即判定Prime95 Large FFTs内存控制器与缓存1 小时以上同上y-cruncherCPU 极限负载VST 或 VT3跑 10 到 15 分钟一轮崩溃、报错、WHEA 计数上涨即判定OCCT 电源模式整机供电30 分钟同时拉 CPU 与显卡掉电重启即判定供电不足HWiNFO64 全程监控全局观测关注 WHEA 错误计数、封装功耗、VRM 温度计数持续上涨即判定平台不稳重点说 HWiNFO 那一行。它不一定能直接告诉你哪里坏了但它能在蓝屏之前给出预警。跑测试的时候把 WHEA 错误计数那一项勾上显示如果测试过程中这个数字一直在涨哪怕系统还没蓝你也已经知道这套配置不稳不用非得等到蓝屏。提示跑内存测试的时候关闭所有后台程序包括浏览器和下载工具。这些程序会占用内存带宽干扰测试结果也可能让测试跑不完。温度阈值的判定也要说清楚。CPU 核心温度长时间超过 95℃本身就会触发降频甚至不稳VRM 温度超过 100℃ 属于危险区内存条表面超过 60℃ 就要考虑加散热。这些数字不是绝对红线但超过之后报错概率会明显上升。4.4 第四步逐件替换把结论收敛成一句话排查到最后阶段靠的是替换法。手边有备用件的话顺序建议是先换电源试成本最低、拆装最快而且能排除一整类瞬态供电问题再换内存条再换 CPU最后才动主板。每换一件跑一轮同样的测试记录结果。我习惯用一张表把过程记下来这样即使中间隔了几天回头也能接上轮次改动内容测试项结果结论1全默认单条内存TM5 三圈无报错超频参数是诱因2恢复双条XMP 开启TM5 三圈20 分钟报错内存高频不稳3频率降至 5600TM5 三圈无报错频率过高已定位45600 长跑一周日常使用无报错问题解决这套流程走完你手里会有一个明确的结论而不是感觉好像好了。这个区别很重要因为偶发性故障最怕的就是看起来好了过两周又回来。5. 常见问题与排查技巧实录5.1 常见问题速查表现象可能原因处理动作只在玩游戏时报错高负载下供电或内存不稳关 XMP 测试检查 VRM 散热和电源每次报错都是同一个 APIC ID单个核心体质问题降低该核心的负向偏移或走保修开机几分钟就报错电压过低或固件配置错误恢复 BIOS 默认更新固件报错集中在 PCIe 类型参数转接卡、延长线、硬盘直插测试PCIe 降速到 3.0跑测试不报日常使用偶尔报轻负载下的电压瞬态问题关闭激进的省电设置适当提高待机电压重装系统后依旧报错硬件问题与系统无关按本文流程做硬件排查事件日志有大量事件 17/19 但不蓝屏平台已在临界点观察密度提前降频降压5.2 几个我踩过的坑写出来让你少走弯路第一个坑是迷信万能修复命令。网上常见的 sfc /scannow、DISM 修复、chkdsk、系统还原对 WHEA 这类硬件报错几乎没有效果。这些命令针对的是系统文件和磁盘结构层面的问题而 WHEA 的问题发生在更下面一层。我早期也走过这条弯路花两个晚上重装两次系统结果什么都没解决。后来才明白看到 WHEA 就应该直接跳到硬件排查。第二个坑是只看蓝屏代码不看参数。同样是 whea_uncorrectable_error参数1 是 0x4 和 0x0 的处理路径完全不同。前者先动硬件连接后者先动电压频率。如果只记住代码不记参数等于拿着一张没有地址的快递单找人。第三个坑是测试时间不够。内存不稳有个特点它可能跑十分钟不报跑四十分钟才报。所以 TestMem5 只跑一圈就宣布内存没问题是很危险的。我的做法是最少三圈或者连续跑两小时以上期间不做别的事。同理Prime95 跑五分钟没报错也不代表稳定至少半小时起步。第四个坑是把不蓝屏当成修好了。有些调整会让错误从不可纠正降级为可纠正系统不再蓝屏但日志里的错误计数还在涨。这种情况其实平台依然不稳只是被掩盖了。判断标准要盯 HWiNFO 的 WHEA 计数和事件日志而不只是盯有没有蓝屏。第五个坑是忽略环境因素。室温、机箱风道、灰尘堆积、硅脂老化这些看起来和代码无关的东西实际影响很大。夏天报错、冬天不报错的机器十有八九是散热问题。我遇到过一台机器什么都没改只是清了灰、换了硅脂、加了一个进风扇WHEA 就再没出现过。5.3 别搞混0xc000021a 与 UNEXPECTED_STORE_EXCEPTION 是另一条路子最近这两个 蓝屏代码 的搜索量很高经常和 WHEA 混在一起被讨论但它们的性质完全不同排查方向也完全不同这里必须说清楚。0xc000021a 全称是系统进程终止属于启动阶段的软件层故障。它的典型表现是开机就蓝、反复重启、进不去系统常见诱因是系统文件损坏、某个驱动在登录阶段崩溃、或者一次失败的更新把关键组件搞坏了。处理它的路线是软件修复进安全模式、卸载最近安装的驱动或更新、用系统还原点回滚、必要时修复安装。它和硬件关系不大你不需要去跑内存压力测试。UNEXPECTED_STORE_EXCEPTION代号 0x00000154问题出在系统的内存压缩存储机制上。它看起来也和内存有关但方向不一样它更多指向页文件配置异常、存储设备响应超时、或者压缩存储子系统自身出错。排查思路是检查页文件设置、更新存储驱动和硬盘固件、跑一遍磁盘健康检查同时也别排除内存不稳定这个可能——如果内存本身在出错压缩存储的数据自然也会坏。这三者的关系可以这么理解WHEA 是地基出了问题0xc000021a 是门锁坏了进不去UNEXPECTED_STORE_EXCEPTION 是仓库管理员把货记错了。看到代码先分类再谈排查比看到蓝屏就重装系统要高效得多。最后分享一个我自己的小习惯每次处理完一台 WHEA 机器我都会把当次的参数、改动、测试结果记在一个文本文件里攒多了之后你会发现规律——某些内存颗粒配某些频率特别容易出事某些主板的供电在特定负载下就是会塌。这份记录比任何攻略都好用因为它是你自己机器的脾气。
返回列表