由于我运行了一些系统更新,我在 Arch Linux 系统中的各种程序上随机收到“非法指令(核心转储)”。
崩溃是相当随机的。例如,有时“git status”前两次会崩溃,但下一次就可以正常工作了。
崩溃的程序:
- ruby(用它作为指南针,编译 SASS 文件)(SEGV)
- git(关于 git status 等简单命令)(ILL)
- gdb(用于分析核心转储)(ILL)
- SpotifyHelper (ILL)
- xfce4-面板 (ILL)
- /usr/lib/networkmanager/nm-dispatcher (ILL)
- /usr/bin/httpd (ILL)
- /usr/bin/plymouthd (ILL)
我不知道所有这些有什么共同点,这使得它们崩溃。也许我的系统自上次更新以来就已损坏。
我按照以下说明查看了一些堆栈跟踪https://wiki.archlinux.org/index.php/Core_dump。他们/usr/lib/libpthread.so.0
大多都有#0 帧__lll_lock_elision ()
。否则,堆栈跟踪似乎信息量不大,它有很多??? ()
并且每个应用程序都不同。
可能导致此问题的更新卡在中间,我不得不重新启动系统。这可能导致了问题。目前系统报告一切都是最新的。不确定这是否有帮助。
这包括内核更新。目前 uname -a 说3.16.7.13-1-MANJARO #1 SMP PREEMPT Fri Jun 12 17:50:53 UTC 2015 x86_64 GNU/Linux
。但我不记得以前的内核了。
更新过程中出现的一件事与 grub 和 memtest86 有关:update-grub (Grub 2) (memtest86+) 上的 grub.cfg 中存在语法错误但我认为这没有关系。
更新(2015-06-18):
看来这与 grub 中的 initramfs 引导选项和挂起有关。
- 如果我尝试在没有 initramfs 的情况下启动,它会卡在 Manjaro 加载屏幕中。
- 如果我使用 initramfs 启动,则启动成功,并且不会出现“非法指令(核心转储)”的问题。
- 如果我使用 initramfs 从会话中挂起(到 RAM),然后唤醒,则会出现“非法指令(核心转储)”的问题。
- 我必须再次重新启动(使用 initramfs)才能获得“干净”的会话。
CPU版本:(4核)
model name : Intel(R) Core(TM) i5-4570 CPU @ 3.20GHz
microcode : 0x1c
fpu : yes
fpu_exception : yes
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse
sse2 ss ht tm pbe syscall nx pdpe1gb rdtscp lm constant_tsc arch_perfmon pebs bts rep_good nopl xtopology nonstop_tsc ap
erfmperf eagerfpu pni pclmulqdq dtes64 monitor ds_cpl vmx smx est tm2 ssse3 fma cx16 xtpr pdcm pcid sse4_1 sse4_2 x2apic
movbe popcnt tsc_deadline_timer aes xsave avx f16c rdrand lahf_lm abm ida arat xsaveopt pln pts dtherm tpr_shadow vnmi
flexpriority ept vpid fsgsbase tsc_adjust bmi1 avx2 smep bmi2 erms invpcid
首先要问一些问题:
- 什么是 __lll_lock_elision(),它如何崩溃?
- 什么是“非法指令”?我怎么知道呢?这是否可能是更新之前曾经是有效指令但现在不再有效的指令?