2009-01-10 15 views
3

有一个令人讨厌的问题,暂时让我的公司的一些工程师试图调试它。Linux设备驱动程序不安全FXSAVE/FXRSTOR错误 - 任何先例?

该C++程序多核计算机与MPI群集上正常运行。

它会运行很长一段时间 - 或许是天 - 然后突然失败。

大多数工程师已经消除了程序本身出现任何错误的合理可能性,因此他们开始将责任归咎于可能的硬件问题,但我怀疑在Linux中必须存在软件问题内核模块或设备驱动程序。

什么是嫌疑人是一个内核模块或设备驱动程序,为了做一些浮点计算,以对SMP系统不安全的方式执行FXSAVE/FXRSTOR。这可能与在需要重入的内核例程中的静态缓冲区中执行FXSAVE一样简单。这将创建一个竞争条件错误,这将很少破坏线程的浮点上下文。

在应用程序级别,似乎发生的情况是MXCSR的一个或多个位(它是FXSAVE/FXRSTOR上下文的一部分)突然更改,但没有应用程序代码可以更改它。

很多年前我在Windows上遇到过类似的问题,最终结果是视频驱动程序中的一个错误,例如当应用程序代码被操作系统抢占时,该线程上下文中的某些MXCSR位已损坏。

我不是Linux Kernel黑客或设备驱动程序开发方面的专家,但我正在阅读重新规则已经改变了很多;在非SMP和SMP(多核)系统之间;在内核版本之间;等等。因此,种族条件错误的可能性似乎是合理的。

所以我的问题是:是否有符合上述任何已知的Linux驱动程序(或内核)的错误?

,我还可以举出任何先例将是有益的,如果他们有类似的症状。在这一点上,很多涉及的人都是(IMHO)浪费时间思考“好吧,我的代码中没有错误,所以它肯定是坏硬件。”我想让他们超越这一点,寻找更有可能成为真正原因的东西。

回答

-1

来源为你的内核是可用的,通常作为的src.rpm。你可以提取这个(和内部的.tgz),然后grep所有的fxsave asm指令等等。如果你发现了某些东西,我会很惊讶,但是谁知道呢?如果你正在运行任何二进制视频驱动程序,然后看看没有加载它们问题是否仍然存在。

  1. 下载内核-2- whatever.src.rpm
  2. 的mkdir温度; CD临时
  3. rpm2cpio ../kernel*rpm |的cpio -id
  4. 焦油xvf命令的linux - *。tgz的
  5. 的grep -ri FXSAVE *