最近在我的事件日志中得到了这个:
A fatal hardware error has occurred.
Reported by component: Processor Core
Error Source: Machine Check Exception
Error Type: Bus/Interconnect Error
Processor ID: 1
问题是,如何设计可记录这类错误的日志记录子系统?
事件如果它足以发出一个写入HDD的DMA请求,没有分页,没有中断,那么在可能出现故障的硬件上还有很多工作要做。
让我想起一个老笑话“找不到CPU,启动软件模拟”。
P.S。我相信这不属于超级用户或serverfault,因为我对软件部分问题感兴趣,而不是诊断我的电脑:)
答案 0 :(得分:1)
据我所知,该特定错误在CPU内部标记。特定标志是MCE_FLAG,并且可以使用CPUID轮询CPU以获得该标志的内容。不是一个汇编程序员,但我认为英特尔架构书籍(在英特尔网站上免费)应该有更多东西。请参阅CPUID函数。
答案 1 :(得分:1)
硬件设备由其驱动程序管理,捕获设备错误是其驱动程序责任的一部分。驱动程序可以使用专用内核API将与错误相关的数据写入Windows错误日志。日志可以由应用程序解析,但为了理解错误事件数据,需要知道与错误设备相关的专有信息(信息可以在文档中找到,也可以是未记录的)。如果驱动程序是由MS实现的,则事件查看器能够在不进行额外解析的情况下呈现错误的含义 - 就像在问题中一样。