我有一台 Windows 7 64 位计算机,大约每月死机一次。最近五个小型转储都显示“由地址引起”ntoskrnl.exe+4b314c,我试图找出谁拥有(或触发失败调用)该地址的代码。
这是!analyze -v
最近的小型转储的输出:
Microsoft (R) Windows Debugger Version 6.3.9600.17029 AMD64
Copyright (c) Microsoft Corporation. All rights reserved.
Loading Dump File [C:\Windows\Minidump\102116-50450-01.dmp]
Mini Kernel Dump File: Only registers and stack trace are available
************* Symbol Path validation summary **************
Response Time (ms) Location
Deferred SRV*C:\SymCache*http://msdl.microsoft.com/download/symbols
Symbol search path is: SRV*C:\SymCache*http://msdl.microsoft.com/download/symbols
Executable search path is:
Windows 7 Kernel Version 7601 (Service Pack 1) MP (12 procs) Free x64
Product: WinNt, suite: TerminalServer SingleUserTS
Built by: 7601.19160.amd64fre.win7sp1_gdr.160211-0600
Machine Name:
Kernel base = 0xfffff800`04201000 PsLoadedModuleList = 0xfffff800`04448730
Debug session time: Fri Oct 21 16:47:24.260 2016 (UTC - 7:00)
System Uptime: 0 days 0:00:25.275
Loading Kernel Symbols
.
Press ctrl-c (cdb, kd, ntsd) or ctrl-break (windbg) to abort symbol loads that take too long.
Run !sym noisy before .reload to track down problems loading symbols.
..............................................................
..........
Loading User Symbols
Mini Kernel Dump does not contain unloaded driver list
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
Use !analyze -v to get detailed debugging information.
BugCheck 124, {0, fffffa802d3f77c8, 0, 0}
Probably caused by : GenuineIntel
Followup: MachineOwner
---------
7: kd> !analyze -v
*******************************************************************************
* *
* Bugcheck Analysis *
* *
*******************************************************************************
WHEA_UNCORRECTABLE_ERROR (124)
A fatal hardware error has occurred. Parameter 1 identifies the type of error
source that reported the error. Parameter 2 holds the address of the
WHEA_ERROR_RECORD structure that describes the error conditon.
Arguments:
Arg1: 0000000000000000, Machine Check Exception
Arg2: fffffa802d3f77c8, Address of the WHEA_ERROR_RECORD structure.
Arg3: 0000000000000000, High order 32-bits of the MCi_STATUS value.
Arg4: 0000000000000000, Low order 32-bits of the MCi_STATUS value.
Debugging Details:
------------------
BUGCHECK_STR: 0x124_GenuineIntel
CUSTOMER_CRASH_COUNT: 1
DEFAULT_BUCKET_ID: WIN7_DRIVER_FAULT
PROCESS_NAME: System
CURRENT_IRQL: 0
ANALYSIS_VERSION: 6.3.9600.17029 (debuggers(dbg).140219-1702) amd64fre
STACK_TEXT:
fffff880`03d1d6f0 fffff800`044c5cb9 : fffffa80`2d3f77a0 fffffa80`24f7eb50 00000000`00000029 00000000`00000000 : nt!WheapCreateLiveTriageDump+0x6c
fffff880`03d1dc10 fffff800`043a4c07 : fffffa80`2d3f77a0 fffff800`0441f2d8 fffffa80`24f7eb50 00000000`00000000 : nt!WheapCreateTriageDumpFromPreviousSession+0x49
fffff880`03d1dc40 fffff800`0430bc55 : fffff800`04481ba0 00000000`00000001 fffffa80`2d456090 fffffa80`24f7eb50 : nt!WheapProcessWorkQueueItem+0x57
fffff880`03d1dc80 fffff800`0427e065 : fffff880`01776e00 fffff800`0430bc30 fffffa80`24f7eb00 00000000`00000000 : nt!WheapWorkQueueWorkerRoutine+0x25
fffff880`03d1dcb0 fffff800`0450fc6a : 00000000`00000000 fffffa80`24f7eb50 00000000`00000080 fffffa80`24eda870 : nt!ExpWorkerThread+0x111
fffff880`03d1dd40 fffff800`04266086 : fffff880`03b31180 fffffa80`24f7eb50 fffff880`03b3c1c0 00000000`00000000 : nt!PspSystemThreadStartup+0x5a
fffff880`03d1dd80 00000000`00000000 : fffff880`03d1e000 fffff880`03d18000 fffff880`03d1d9e0 00000000`00000000 : nt!KxStartSystemThread+0x16
STACK_COMMAND: kb
FOLLOWUP_NAME: MachineOwner
MODULE_NAME: GenuineIntel
IMAGE_NAME: GenuineIntel
DEBUG_FLR_IMAGE_TIMESTAMP: 0
IMAGE_VERSION:
FAILURE_BUCKET_ID: X64_0x124_GenuineIntel_PROCESSOR_MAE_PRV
BUCKET_ID: X64_0x124_GenuineIntel_PROCESSOR_MAE_PRV
ANALYSIS_SOURCE: KM
FAILURE_ID_HASH_STRING: km:x64_0x124_genuineintel_processor_mae_prv
FAILURE_ID_HASH: {435e2195-e498-1e77-0526-f8d7450275e5}
Followup: MachineOwner
下面是输出!errrec fffffa802d3f77c8
7: kd> !errrec fffffa802d3f77c8
===============================================================================
Common Platform Error Record @ fffffa802d3f77c8
-------------------------------------------------------------------------------
Record Id : 01d22bf56b81ac86
Severity : Fatal (1)
Length : 864
Creator : Microsoft
Notify Type : Machine Check Exception
Timestamp : 10/21/2016 23:47:24 (UTC)
Flags : 0x00000002 PreviousError
===============================================================================
Section 0 : Processor Generic
-------------------------------------------------------------------------------
Descriptor @ fffffa802d3f7848
Section @ fffffa802d3f7920
Offset : 344
Length : 192
Flags : 0x00000001 Primary
Severity : Fatal
Proc. Type : x86/x64
Instr. Set : x64
Error Type : Micro-Architectural Error
Flags : 0x00
CPU Version : 0x00000000000206c0
Processor ID : 0x0000000000000000
===============================================================================
Section 1 : x86/x64 Processor Specific
-------------------------------------------------------------------------------
Descriptor @ fffffa802d3f7890
Section @ fffffa802d3f79e0
Offset : 536
Length : 64
Flags : 0x00000000
Severity : Fatal
Local APIC Id : 0x0000000000000000
CPU Id : c0 06 02 00 00 08 20 00 - ff e3 9e 02 ff fb eb bf
00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00
00 00 00 00 00 00 00 00 - 00 00 00 00 00 00 00 00
===============================================================================
Section 2 : x86/x64 MCA
-------------------------------------------------------------------------------
Descriptor @ fffffa802d3f78d8
Section @ fffffa802d3f7a20
Offset : 600
Length : 264
Flags : 0x00000000
Severity : Fatal
Error : Unknown (Proc 0 Bank 2)
Status : 0xb200000000010005
这是一台几年前制造的白盒机(随着时间的推移,部件不断升级以保持最新状态)。我会定期确保它仍然能通过我能进行的所有压力测试(Prime95、Memtest86 等)。我尝试了一些简短的重新测试,没有失败,并将在夜间重新运行完整的周期。
我认为冻结最初是在我一两年前安装了几个软件(可能包括驱动程序)后开始的,但当时没有时间调查或排除故障。我不记得是哪个软件或具体什么时候(老实说,这可能无关紧要,或者是另一组已经解决的 BSOD)。我确实在前一段时间仔细检查并剔除了软件/驱动程序,特别是任何可能看起来可疑或出现在其他较旧的 BSOD 中的软件/驱动程序(例如 cbfs5.sys 之类的东西)。
我已应用了最新的 BIOS 更新和最新的驱动程序,它们对我来说运行正常。(有些硬件很旧,在极少数情况下,我发现最新的驱动程序会导致其他问题)。大多数 Windows 更新都已安装(最近几个月可能有一些更新尚未应用 - 由于这是一个相当关键的工作站,我对更新采取非常受控的方法,事先创建完整的备份映像,并在每个更新周期后进行一组回归测试。因此我更新的速度很慢,但通常这台机器比我维护的其他设置为自动更新的机器更稳定、更可预测。这是我暂时推迟使用 Win 10 的原因之一)。
温度看上去都很合理。
我的系统是配置写入内核内存转储,但由于未知的原因,在发生此问题时没有写入(它今天早些时候发生,但我在该路径上的 MEMORY.DMP 的修改日期是近一个月前)。
主板是华硕 P6T6 WS Revolution(X58 芯片组),CPU 是 2.4GHz Hex Core Intel Xeon E5645。我安装了 48 GB 的 ECC RAM。
我没有大量分析内存转储的经验,如能得到任何帮助/建议我将不胜感激。
答案1
正如错误记录中所暗示的那样,故障来自处理器的机器检查架构。
MSDN 的一些背景知识调试博客:解释 MCA 故障的 WHEA 错误。
你可以在英特尔第 15 章中找到有关 MCA 的所有细节软件开发人员手册,第 3B 卷。
转储中的有用信息是错误记录的最后一行,它是关联的 IA32_MCi_STATUS 型号特定寄存器的值。这在英特尔手册的第 15.3.2.2 节中有记录。您的值0xb200000000010005
分解如下:
- 位 63:寄存器有效
- 位 61:错误未纠正
- 位 60:错误启用
- 位 57:处理器上下文损坏
- 位 31-16:特定于型号的错误代码 1
(该代码似乎没有针对您的处理器公开记录) - 位 15–0:MCA 错误代码 5
(根据第 15.9.1 节中的表 15-8,其含义为内部奇偶校验错误)
我不知道所有这些是否都表明您的 CPU、主板或其他硬件可能有故障。不过,这似乎不太可能是软件问题,因为软件不应该能够导致这样的内部硬件错误。
您可能想尝试将转储设置从“小内存转储”更改为“内核内存转储”,然后等待故障再次发生;也许较大的转储文件中的额外信息会为您提供一些有关崩溃时发生的情况的额外线索。