我们如何生成 MCE(机器检查错误)

Posted

技术标签:

【中文标题】我们如何生成 MCE(机器检查错误)【英文标题】:How can we generate MCE(machine check errors) 【发布时间】:2016-11-24 14:21:27 【问题描述】:

据我所知,mcelog 用于检查硬件中的内存错误。我想模拟同样的情况。我没有任何机器存在硬件问题,我可以在其中模拟这种情况。任何人都可以建议我一些模拟器或任何其他可以产生这些错误的方式。因为我的主要目标是显示Uncorrectable Memory errors。谢谢。

【问题讨论】:

【参考方案1】:

您可以使用工具mce-inject,但您需要加载mce_inject 内核模块。这个内核模块在 Ubuntu 12.04(我可以访问的唯一系统)上可用,并且应该也可以在较新的 Ubuntu 上可用。

首先,你需要加载模块:

$ sudo modprobe mce_inject

接下来需要下载mce_inject工具的源码,安装依赖,编译:

$ git clone https://github.com/andikleen/mce-inject.git
$ sudo apt-get install flex bison
$ cd mce-inject
$ make

接下来,您需要创建一个文件来模拟您想要的错误。您应该查看mce-inject 手册页(包含在源代码中)以获取有关该结构的更多信息。你可以在[mce-inject源]的test/目录中找到一些示例(

注入 FATAL 错误会导致系统不稳定和崩溃;不建议这样做。

一旦您决定使用哪个示例文件(或创建了您自己的),您就可以使用mce-inject 注入它。例如,注入mce-inject 中包含的test/corrected 示例错误:

$ sudo ./mce-inject test/corrected

您现在可以检查您的日志并发现错误已被注入。

【讨论】:

感谢您提供有用的信息。我将在 Red Hat Linux 上进行检查。 redhat linux 上的唯一区别是sudo yum install bison flex 而不是sudo apt-get install bison flex。让我知道还需要什么才能将此答案标记为已接受。 我正在使用你的方法并且它有效,但是我在 dmesg 和消息日志文件中唯一可以观察到的消息是这样的消息:[date] MCE exception done on CPU 0. 我还能在哪里查看更多详细信息的错误?

以上是关于我们如何生成 MCE(机器检查错误)的主要内容,如果未能解决你的问题,请参考以下文章

mce-inject使用方法

ansible 常用模块

Windows XP MCE 2005

Firemonkey ScrollBox 错误

c#2005调试程序正常,生成了引用的dll文件,但是生成程序后在其他机器上使用,总是出现缺少程序集的错误

Flink 容错机制 Checkpoint 生成与恢复流程