我有一个在 Xen 3.4.2 主机上运行 Debian Unstable 的 Xen domU。
今天早上我注意到各种应用程序已经开始出现段错误。
尤其是运行“aptitude safe-upgrade”会导致 aptitude-curses 出现段错误,并出现以下错误:
aptitude[1035]: segfault at 7f1006ed13f8 ip 0000000000544293 sp 00007fff94b37140 error 4 in aptitude-curses[400000+331000]
该段错误完全可重现。
其他应用程序(例如 reportbug 和尝试登录 KDE)也会导致可重现的段错误。
我在同一个 Xen 主机上还有另一个运行 Debian Unstable 的 Xen domU,运行相同的内核 (2.6.32.2),但运行“aptitude safe-upgrade”不会导致段错误。两个 domU 看起来是等价的,但只有其中一个会段错误。以下是一些注意事项:
- 两个 domU 使用完全相同的内核(64 位)
- 两者都具有相同的 /usr/bin/aptitude-curses 二进制文件及其所依赖的所有共享库(我使用 md5sum 比较两个系统上的文件,并使用 ldd 查看 aptitude 所依赖的共享库)
- 我对有问题的 domU 根卷执行了 e2fsck -f,没有报告任何错误
- 两个 domU 都分配了相同数量的 RAM 和 VCPU
- 我知道段错误可能指向硬件故障,但考虑到这些段错误是可重现的,并且等效的 domU 没有问题(即使我更改了 domU 的创建顺序,希望强制每个 domU 占用物理 RAM 的不同部分),这强烈表明硬件不是问题
- 我也想知道是否有一些文件已损坏,但正如我所说,aptitude 及其所有依赖库(由 ldd 报告)似乎没有问题
- 我已多次重启有问题的 domU,并重启过主机 Xen OS 一次
- 我尝试在单用户模式下启动出现段错误的 domU(通过在 /etc/inittab 中将默认级别设置为 1),但“aptitude safe-upgrade”仍然会出现段错误。
我认为这不是 Xen 的问题,但如果不知道是什么原因造成的,我就无法确定。
我完全不明白为什么一个虚拟机会持续发生段错误,而另一个类似的虚拟机却不会。
任何帮助将不胜感激。
谢谢。
答案1
在 gdb 中运行段错误程序,并安装所有相关库的调试符号,然后从那里诊断问题的原因。
答案2
这可能是内存模块故障,导致正在运行的应用程序内存损坏。尝试 memtest86+ 以确保您的 RAM 模块正常。
如果是的,那么您可能应该开始分析库:/lib、/usr/lib 等等。一个简单的方法是在不同的 Linux 机器上md5sum
使用 + diff
:也许其中一些确实已损坏?