Recently got this in my Event Log:
A fatal hardware error has occurred.
Reported by component: Processor Core
Error Source: Machine Check Exception
Error Type: Bus/Interconnect Error
Processor ID: 1
The question is, How can one design a logging subsystem that can log these kinds of errors?
Event if it's enough to issue one DMA request to write to HDD, no paging, no interrupts, it's still at lot of work to do on a presumably failed hardware.
Reminds me of an old joke "CPU not found, starting software emulation", too.
P.S. I believe this does not belong to superuser or serverfault, because I'm interested in software part of the problem, not diagnosing my computer :)
As far as I know, that particular error is flagged internally in the CPU. The particular flag is MCE_FLAG, and the CPU can be polled for its content of this flag using CPUID. Not much of an assembly programmer, but I think the Intel architecture books (free on Intel's site) should have something more. See the CPUID function.