Ubuntu 下应用程序意外关闭

Ubuntu 下应用程序意外关闭

我正在运行 Ubuntu,有时当系统负载过大时,某个应用程序会因为某种原因消失。通常是 Firefox,但其他应用程序也会发生这种情况。系统日志中没有日志,也没有显示任何错误消息。

这种行为的原因可能是什么,我该如何调试并修复它,以便我的所有应用程序保持完好无损?

更新:我在系统日志中发现了以下内容,但不知道如何解释它:)

9 月 17 日 16:54:03 mobav 内核:[10132.976820] BUG:无法处理内核分页
 请求 4d904064
9月17日 16:54:03 mobav 内核:[10132.976825] IP:[] 0x4d904064
9月17日 16:54:03 mobav 内核:[10132.976830] *pde = 00000000
9 月 17 日 16:54:03 mobav 内核:[10132.976833] 糟糕:0000 [#1] SMP
9 月 17 日 16:54:03 mobav 内核:[10132.976837] 最后一个 sysfs 文件:/sys/devices/pci00
00:00/0000:00:1e.0/0000:14:02.0/rf_kill
9 月 17 日 16:54:03 mobav 内核:[10132.976841] 转储 ftrace 缓冲区:
9 月 17 日 16:54:03 mobav 内核:[10132.976843](ftrace 缓冲区为空)
9 月 17 日 16:54:03 mobav 内核:[10132.976845] 模块链接至:tun aes_i586 aes
_generic ieee80211_crypt_ccmp binfmt_misc ppdev radeon drm 桥接 stp bnep cpufr
eq_stats input_polldev joydev tp_smapi thinkpad_ec acpi_cpufreq uinput lp parpor
t snd_hda_intel snd_pcm_oss snd_mixer_oss snd_pcm snd_seq_dummy snd_seq_oss snd_
seq_midi snd_rawmidi snd_seq_midi_event snd_seq snd_timer snd_seq_device iTCO_wd
t iTCO_vendor_support thinkpad_acpi ipw2200 intel_agp nsc_ircc psmouse led_class
 agpgart pcspkr ieee80211 ieee80211_crypt 视频 sdhci_pci sdhci serio_raw snd so
undcore snd_page_alloc nvram 输出 btusb irda crc_ccitt reiserfs ohci1394 ieee1
394 tg3 fbcon tileblit 字体 bitblit 软光标
9月17日 16:54:03 mobav 内核:[10132.976887]
9 月 17 日 16:54:03 mobav 内核:[10132.976890] Pid:4305,通信:multiload-apple 否
t 污染 (2.6.28-15-通用 #50~undervolt2-Ubuntu) 2529FKG

...而且还会持续几页。

答案1

我建议您研究每个应用程序的详细选项,并通过终端手动启动它们,而不是通过 Gnome 菜单或 Gnome-Do 等启动器。

例如

$ nohup app-to-debug --option1 --verbose 1>app-to-debug1.log 2>&1&

这可确保应用程序抛出的任何消息(调试或其他)都被捕获到日志中。


您看到一个内核错误:

Oops: 0000 [#1] SMP

Linux 内核错误

oops 是 Linux 内核偏离正确行为的一种表现,会产生特定的错误日志。众所周知的内核崩溃情况是由多种 oops 引起的,但其他 oops 可能会允许继续运行,但可靠性会受到影响。该术语不代表任何其他含义,只是简单的错误。

当内核检测到问题时,它会打印一个 oops 消息并终止任何有问题的进程。

答案2

每个 Linux 发行版中都有 strace 工具,用于跟踪系统调用。这可能是查看应用程序运行情况的解决方案之一。

只需执行 Firefox,看看 Firefox 意外终止后 strace 会给您什么结果。

$ strace <name of the program>

答案3

在我看来,你正在遇到(臭名昭著的)OOM(内存不足)杀手。当系统用完可用内存时,内核会选择一个使用大量内存的进程并将其终止。这是保持其他进程运行的必要之恶。

这一页有一些有用的提示,可以帮助您了解 OOM 杀手的工作原理并改变其行为。

答案4

我建议您安装memtest86+(安装后可从 Grub 启动菜单中找到)并检查您的内存是否正常。

相关内容