记录一次 PC 反复卡死诊断结项(2026-10-08)
记录一次 PC 反复卡死诊断结项(2026-10-08)
既然 HL_DRY_RUN=1,蓝屏就不是故障,是等 Verifier 点名的预期行为。
今天把这台从 6 月到 10 月反复硬锁死的交易机收了个尾:硬件根因已经修掉,软件根因还在监控,剩下就是让 Driver Verifier 布防,等它自己指名。整个过程踩了不少 Windows 运维的坑,值得原样记下来。
一、主机与运行环境
这台机器 PC-20260408JPNQ 是 7x24 交易栈宿主,跟 craw_app1_wz 同机。核心配置:Intel Core i5-14600KF(Raptor Lake Refresh,Family6 Model183),Maxsun MS-Terminator B760M D5 主板,单条 16GB Asgard DDR5 内存,1TB NVMe 系统盘加 8TB SATA 数据盘,RTX 2080 Ti,Windows 11 26H2 build 26300.9457。上面跑着 defi_dashboard(Streamlit+MySQL+多个 python/node)、YunpanHub、Hermes agent、ollama、Steam,还有 WSL2。
交易栈已经确认 HL_DRY_RUN=1,日志里能看到 [DRY_RUN] open ETH LONG ... (skip HL order, log only)。主网链路可用但不下真单,这就决定了后面所有“可接受的停机/蓝屏”决策——反正不涉及真实仓位,机器多蓝屏几次也能接受。
二、故障表现
反复整机硬锁死,无蓝屏,从 2026-06 到 2026-10 一共 8 次。我用 EventLog 6008 还原了真实起点,不是看最后一次重启时间,而是逐条对强制重启记录:
| 锁死开始 | 强制重启 | 时长 |
|---|---|---|
| 10-03 04:55 | 10-07 19:15 | 4 天 14 小时 |
| 09-11 19:14 | 09-13 20:28 | 约 2 天 |
| 07-08 19:36 | 07-09 20:21 | 约 1 天 |
| 09-06 09:32 | 09-06 16:07 | 约 6.5 小时 |
| 06-12 04:26 | 06-12 10:20 | 约 6 小时 |
| 06-12 10:20 / 06-13 01:17 / 09-14 00:12 | — | 24-36 分钟 |
其中 10-03 那次最长,锁死接近 4 天半才被强制重启。而且后来发现 EventLog 6008 报的“7:24:22”其实滞后约 32 分钟,不能拿它当死亡时刻,真正的最后磁盘写入在 07:56:10。
三、根因 1(已修复):Intel 13/14 代 V-Shift 未打补丁
这部分是硬件层面,证据链很硬。
决定性证据有三个:WHEA-Logger EventID 3 的时间戳与每次锁死秒级吻合,解开 CPER 原始二进制后看到 Severity=0x00000003=Fatal,SectionType 是处理器通用错误节,Creator 为固件 GUID;Kernel-Processor-Power ID 37 固件限频,60 天 124 条,只出现在逻辑处理器 15/19(E-core),报文里写着“自上次报告以来已处于该低性能状态 86399 秒”,就是连续 24 小时;微码还是 0x104,BIOS 版本 E1.5D(2024-08-13),早于 Intel 全部修复微码(0x129B 2024-08、0x12B 2024-09-24、0x12F 2025-06-24)。而且 14600KF 官方规格 DDR5-5600,实际内存跑 6400 XMP 超频。
修复动作:BIOS 升到 E2.6D(2026-03-11),微码从 0x104 升到 0x133。
结果:WHEA 归零,固件限频归零,CPU 频率从 3140 MHz 恢复到 3500 MHz 满额。唯一一次真蓝屏(06-13 BugcheckCode=26 / 0x1A MEMORY_MANAGEMENT)也消失了。这部分可以结案。
四、根因 2(性质不同,仍在监控):软件/驱动层挂死
10-08 07:56 又锁死 7 小时,但这次全程零硬件签名:WHEA=0、限频=0、CPU 满频、无磁盘/NTFS/显卡 TDR 错误,所以判定为软件/驱动级硬挂死,不是硬件。
死前机器并不空闲:交易栈满负荷,4 个 python + 5 个 node + mysqld + Steam 下载同时在跑。shadow_logs\sm_trader_mainnet.log 最后一次写入是 07:53:35,smart_money_oos.db 是 07:54:26,E:\yunpan_hub\server_stdout.log 是 07:56:10,然后机器就没了。
已排除的伪线索,这几个坑要避免重复劳动:
ConnectedStandbyInProgress=true不是唤醒路径证据。这个位是电源管理器残留状态位:SystemSleepTransitionsToOn=0,固件明确不支持 S0ix(powercfg /a报“系统固件不支持此待机状态”),Hypervisor 又额外屏蔽待机。181 天日志内 Kernel-Power 506/507=0、42=0、107=0、powercfg /lastwake=0。而且该位在 10-08 为 true,在 10-07 为 false,与是否真睡眠反相关——唯一真发生睡眠转换的 06-12 10:56,该位反而是 false。- RAM 降频不是决定性因素:XMP 已关,跑 4800 MT/s @1100mV,降频合理,但本次故障本来就没有硬件签名可修。
- GameViewer (UU远程) 的 Kernel-PnP 219 是无害噪声。
ROOT\DISPLAY\0000的ProblemCode=0、Status=Started,219 事件数与开机次数严格 1:1(10-07 9/9、09-13 5/5),是 IDD 虚拟显示设备的 UMDF 生命周期产物,不要卸载。
驱动栈隐患还没处理,等 Verifier 定位完成后再动:
360Sensor_DM64.sys—— 360 安全卫士已经卸载干净(0 注册表项/0 进程/无程序目录),但驱动仍 Running + Auto 开机加载,版本 2022/10/11,签名证书 2023-02-04 已过期。xlwfp.sys—— 迅雷目录C:\Program Files (x86)\Thunder Network已不存在,但 WFP 过滤驱动仍 Running+Auto;XLServicePlatform服务 StartMode=Auto 但每次开机 45 秒启动超时(7000/7009),Thunder 自启项指向已删除路径。- 网络隧道/过滤 6 层并存:Tailscale+wintun、Clash for Windows(7890)、XLWFP、vwififlt/vwifimp、NeSigVerify(网易,System 启动)、cpolar(4040/6060/9200)、UU远程。
- 非分页池 514 MB(健康值 100-250),6 次采样持平,属于非活跃泄漏,是驱动存量负担。
- 运行中驱动 199 个(健康 150-180),含 boot-start 的
ACE-BOOT.sys(WeGame 反作弊)。 - MSI Afterburner 4.6.7 Beta + RTSS 7.3.7 已安装但未运行。NVIDIA 驱动 10-07 刚升到 610.88,RTSS Beta + 新驱动是经典不兼容组合,这算埋雷。
五、当前状态:Verifier 已布防,等它指名
现在系统已经配好完整转储:
1 | CrashDumpEnabled=1 AutoReboot=1 AlwaysKeepMemoryDump=1 |
选中这 6 个驱动后,系统自动追加了 WDF verification 和 File system filter verification 规则类。
蓝屏是预期行为不是故障。 蓝屏后第一时间要抢在完整转储被覆写之前拷出来:
1 | Copy-Item C:\Windows\MEMORY.DMP E:\reroot\MEMORY.DMP -Force |
蓝屏码释义:0xC4 是 DRIVER_VERIFIER_DETECTED_VIOLATION,验证器直接点名,最理想;0xD1/0x7E 的参数2 是出错驱动指令地址;0x50 参数3 是出错驱动地址。内核转储不含可直接读的模块列表,精确定位要用 WinDbg !analyze -v。
工具脚本都在 E:\reroot\ 下:卡死诊断采集.ps1 导出 WHEA/6008/41/固件限频证据,分析转储.ps1 解析 minidump + 32/64 位内核转储,修复卡死-管理员运行.ps1 是 A 方案(清残留/页面文件),但定位完成前勿跑。Verifier 的布防脚本是 ~\.hermes\hermes-agent\apply_verifier.ps1,回滚是 verifier_off.cmd,页面文件 32GB 是 fix_pagefile.ps1。
回滚命令(管理员,安全模式或正常模式均可):& "C:\Users\Administrator\.hermes\hermes-agent\verifier_off.cmd"
如果连续 3 次开机即蓝屏,就进 WinRE -> 启动设置 -> 安全模式执行同命令。
六、复盘:工具/API 陷阱(复用价值高)
这次在 Windows 运维上踩了 5 次坑,全部同一个模式:凭印象写操作代码,没先验证。
.cmd里chcp 65001会破坏 cmd.exe 解析 —— 切代码页后文件指针与字符宽度失配,后续每行开头被吃掉('et'←reset、'EM'←REM)。中文注释 + chcp 混用必炸。对策:批处理改用.ps1;.cmd只留纯 ASCII 启动器。verifier /adddriver子命令不存在 —— 持久化形式只有verifier /standard /driver <镜像名>;/adddriver仅存在于/volatile。/driver要传镜像名(xlwfp.sys)不是路径。判别法:/volatile /adddriver报 "Access is denied" = 语法对;报 "unsupported parameter" = 语法错。verifier返回码 2 = 设置成功需重启,不是错误。返回 0 = 无需重启。Win32_PageFileSetting是设置意图,Win32_PageFileUsage.AllocatedBaseSize才是生效值。New-CimInstance -ClassName Win32_PageFileSetting -Property @{InitialSize=...}会报HRESULT 0x80041005(类型不匹配),需-ClientOnly+ 显式[uint32],或直接写注册表PagingFiles(MultiString 类型)。绝不可先 Remove 再 New —— 之前一个版本的脚本就是这么把页面文件配置清空的。Test-Path查注册表【值】必然返回 False(Registry provider 下查的是子项)。正确查法:(Get-Item $k).GetValueNames()/GetValueKind()/GetValue()。另外,**验证 Event 是否为本次开机产生必须带StartTime=LastBootUpTime**,-MaxEvents 1会返回历史旧记录造成假阴性。
七、安全侧附带发现(与卡死无关,建议后续处理)
排查过程中顺手发现几个裸露面:0.0.0.0:3306 的 mysqld 绑所有接口,而 start-defi-dashboard.bat 里 root 密码为空(password='');还有 0.0.0.0:80 httpd(WampServer)、0.0.0.0:3389 远程桌面、cpolar 内网穿透 3 端口。等于数据库对内网裸奔。
下一步
等 Verifier 触发蓝屏,拿到 MEMORY.DMP 后跑 分析转储.ps1。如果定位到具体驱动,再决定是清残留还是更新签名;定位完成前不碰 修复卡死-管理员运行.ps1,也不动那批驱动栈隐患。安全侧那几个端口和空密码,等这轮蓝屏定位结束后再单独处理。