http://mikemstech.blogspot.com/2011/11/windows-crash-dump-analysis.html
0x0000009C MACHINE_CHECK_EXCEPTION is an error that primarily occurs on older versions of the Windows platform (Windows XP, Windows Server 2003, and before). This error has been replaced by 0x00000124 WHEA_UNCORRECTABLE_ERROR on newer versions of the Windows platform (Windows Vista, Windows Server 2008, Windows 7, Windows Server 2008 R2, and Windows 8), but still appears in a couple of rare cases (specifically when WHEA is not fully initialized or when a special processor issue on SMP systems occurs that is characterized by a failure with shared memory synchronization. Microsoft phrases this as "All processors that rendezvous have no errors in their registers").
This is typically considered a serious hardware error (typically with the motherboard or the processor) when it appears, but can also be found when the system's BIOS is out of date relative to the rest of the drivers that are running the system.
Debugging a dump with windbg/kd yields some interesting information,
kd> !analyze -v ******************************************************************************* * * * Bugcheck Analysis * * * ******************************************************************************* MACHINE_CHECK_EXCEPTION (9c) A fatal Machine Check Exception has occurred. KeBugCheckEx parameters; x86 Processors If the processor has ONLY MCE feature available (For example Intel Pentium), the parameters are: 1 - Low 32 bits of P5_MC_TYPE MSR 2 - Address of MCA_EXCEPTION structure 3 - High 32 bits of P5_MC_ADDR MSR 4 - Low 32 bits of P5_MC_ADDR MSR If the processor also has MCA feature available (For example Intel Pentium Pro), the parameters are: 1 - Bank number 2 - Address of MCA_EXCEPTION structure 3 - High 32 bits of MCi_STATUS MSR for the MCA bank that had the error 4 - Low 32 bits of MCi_STATUS MSR for the MCA bank that had the error IA64 Processors 1 - Bugcheck Type 1 - MCA_ASSERT 2 - MCA_GET_STATEINFO SAL returned an error for SAL_GET_STATEINFO while processing MCA. 3 - MCA_CLEAR_STATEINFO SAL returned an error for SAL_CLEAR_STATEINFO while processing MCA. 4 - MCA_FATAL FW reported a fatal MCA. 5 - MCA_NONFATAL SAL reported a recoverable MCA and we don't support currently support recovery or SAL generated an MCA and then couldn't produce an error record. 0xB - INIT_ASSERT 0xC - INIT_GET_STATEINFO SAL returned an error for SAL_GET_STATEINFO while processing
INIT event. 0xD - INIT_CLEAR_STATEINFO SAL returned an error for SAL_CLEAR_STATEINFO while processing
INIT event. 0xE - INIT_FATAL Not used. 2 - Address of log 3 - Size of log 4 - Error code in the case of x_GET_STATEINFO or x_CLEAR_STATEINFO AMD64 Processors 1 - Bank number 2 - Address of MCA_EXCEPTION structure 3 - High 32 bits of MCi_STATUS MSR for the MCA bank that had the error 4 - Low 32 bits of MCi_STATUS MSR for the MCA bank that had the error Arguments: Arg1: 00000000 Arg2: 8054e170 Arg3: b2000000 Arg4: 1040080f Debugging Details: ------------------ NOTE: This is a hardware error. This error was reported by the CPU via Interrupt 18. This analysis will provide more information about the specific error. Please contact the manufacturer for additional information about this error and troubleshooting assistance. This error is documented in the following publication: - IA-32 Intel(r) Architecture Software Developer's Manual Volume 3: System Programming Guide Bit Mask: MA Model Specific MCA O ID Other Information Error Code Error Code VV SDP ___________|____________ _______|_______ _______|______ AEUECRC| | | | LRCNVVC| | | | ^^^^^^^| | | | 6 5 4 3 2 1 3210987654321098765432109876543210987654321098765432109876543210 ---------------------------------------------------------------- 1011001000000000000000000000000000010000010000000000100000001111 VAL - MCi_STATUS register is valid Indicates that the information contained within the IA32_MCi_STATUS register is valid. When this flag is set, the processor follows the rules given for the OVER flag in the IA32_MCi_STATUS register when overwriting previously valid entries. The processor sets the VAL flag and software is responsible for clearing it. UC - Error Uncorrected Indicates that the processor did not or was not able to correct the error condition. When clear, this flag indicates that the processor was able to correct the error condition. EN - Error Enabled Indicates that the error was enabled by the associated EEj bit of the IA32_MCi_CTL register. PCC - Processor Context Corrupt Indicates that the state of the processor might have been corrupted by the error condition detected and that reliable restarting of the processor may not be possible. BUSCONNERR - Bus and Interconnect Error BUS{LL}_{PP}_{RRRR}_{II}_{T}_err These errors match the format 0000 1PPT RRRR IILL Concatenated Error Code: -------------------------- _VAL_UC_EN_PCC_BUSCONNERR_F This error code can be reported back to the manufacturer. They may be able to provide additional information based upon this error. All questions regarding STOP 0x9C should be directed to the hardware manufacturer. BUGCHECK_STR: 0x9C_GenuineIntel CUSTOMER_CRASH_COUNT: 1 DEFAULT_BUCKET_ID: DRIVER_FAULT LAST_CONTROL_TRANSFER: from 806f48db to 80533846 SYMBOL_ON_RAW_STACK: 1 STACK_ADDR_RAW_STACK_SYMBOL: ffffffff8054e1dc STACK_COMMAND: dds FFFFFFFF8054E1DC-0x20 ; kb STACK_TEXT: 8054e1bc 00000000 8054e1c0 00000000 8054e1c4 00000000 8054e1c8 00000000 8054e1cc 00000000 8054e1d0 ffdffc50 8054e1d4 00000000 8054e1d8 ba4e9162 intelppm+0x2162 8054e1dc 00000000 8054e1e0 80550f40 nt!KiDoubleFaultStack+0x2cc0 8054e1e4 00000000 8054e1e8 80550f38 nt!KiDoubleFaultStack+0x2cb8 8054e1ec 00000000 8054e1f0 00000046 8054e1f4 00000000 8054e1f8 806efe18 hal!HalpClockInterrupt+0xe4 8054e1fc 00000000 8054e200 00000000 8054e204 00000000 8054e208 00321213 8054e20c 00000000 8054e210 00000000 8054e214 00000000 8054e218 00000000 8054e21c 00000000 8054e220 00000000 8054e224 00000000 8054e228 00000000 8054e22c 00000000 8054e230 00000000 8054e234 00000000 8054e238 00000000 FOLLOWUP_IP: intelppm+2162 ba4e9162 ?? ??? SYMBOL_NAME: intelppm+2162 FOLLOWUP_NAME: MachineOwner MODULE_NAME: intelppm IMAGE_NAME: intelppm.sys DEBUG_FLR_IMAGE_TIMESTAMP: 48025183 FAILURE_BUCKET_ID: 0x9C_GenuineIntel_intelppm+2162 BUCKET_ID: 0x9C_GenuineIntel_intelppm+2162 Followup: MachineOwner --------- kd> lmvm intelppm start end module name ba4e7000 ba4efe00 intelppm T (no symbols) Loaded symbol image file: intelppm.sys Image path: \SystemRoot\system32\DRIVERS\intelppm.sys Image name: intelppm.sys Timestamp: Sun Apr 13 12:31:31 2008 (48025183) CheckSum: 0000C894 ImageSize: 00008E00 Translations: 0000.04b0 0000.04e4 0409.04b0 0409.04e4
From this particular dump, we can tell that there was an error involving the bus. Analyzing Machine Check Architecture Error Codes involves looking at Volume 3 of the Intel Architecture Software Developer's Manual (or examining the appropriate developer's guide for other vendors, such as the Bios/Kernel Developer's Guides for AMD processors). This is an Intel chip, and in this case, bits 19-24 (the bits that indicate the model specific error) are 001000. This indicates an error of type BQ_DCU_WB_TYPE. Further research indicates that this is a failure of the processor to write a line back to memory. Still we don't know whether the processor or motherboard failed, and to determine this would require running vendor supplied diagnostic tools for the system or examining repeated errors.
Some troubleshooting steps for this error might include:
- Verify that the CPU is specifically supported for the installed motherboard
- Verify that the BIOS is up to date for the system
- Disable any overclocking (or other abnormal timing/voltage modifications)
- Reseat the processor, memory, and all power connections to the motherboard and connected components
- Identify and resolve any cooling or power supply related issues (including abnormal voltage from a wall outlet)
- Engage vendor and replace motherboard/CPU
See Also
Windows Crash Dump Analysis
Stress Testing a CPU to Detect Hardware Failure
0x124 WHEA_UNCORRECTABLE_ERROR
No comments:
Post a Comment