遭遇了 archlinux 桌面随机死锁

一年多没出差,结果就遇到了这么个事情。

周五要见客户,周四晚上走。周三一切正常,周四早晨笔记本从睡眠中醒来,桌面就直接死在那儿了。鼠标键盘无响应,Ctrl-Alt-数字键无法切换 tty,甚至连 Magic key 也没用,只能长按电源键强行关机。

想要直接看答案的同学请直接到文尾,中间一大段都是我的折腾过程。

重启之后不登录桌面,直接换个 tty 工作,发现不会死机。只要登进桌面,快则几秒,慢则分钟,必定会死机。

无论如何先翻 log。journalctl,~/.local/share/xorg/Xorg.0.log.old 都看过没有任何有效信息。

最可能是最近更新的包有问题。但是印象里昨天 pacman -Syu 也没什么特别的东西。去 /var/log/pacman.log 验证了一下也确实。kernel 从 4.2 升到 4.3 是去年 12/31 的事情,linux-firmware 升级是 1/4 的事情。无论如何先回滚到旧版本试试看。去 /var/cache/pacman/pkg 用 pacman -U 回滚了好几天的包。无效。

这种毫无征兆的随机死机难不成是硬件问题?按说这个 Dell E7450 是从公司更换的新本,不会这么快。但没有其他线索,还是先做排除法。先看 ssd。用 pacman -Qnq | pacman -S - 重新安装所有 package。无效。再看内存。Dell 的 BIOS 自带 MemTest 还挺贴心。全部跑通无误。

常见的诱因都排除了,又有出差的时间点,有点坐不住了。还有一招是放狗搜索,不过 desktop freeze 这种关键词必定是大海捞针。用手机搜了几下实在痛苦,接同事的本又搜了一些近期的 desktop freeze(Google 在搜索工具里可以限定时间范围,这个一定要利用),果然没啥收获。

如果硬件没有问题,那么一定软件的哪个层面或环节出了问题。tty 不会死机,所以 kernel 应该是无辜的。死锁之后连 Magic key 也不行,那么问题又确实应该出在 kernel space,X 和 Gnome 应该都是无辜的。这么分析下来,最有可能出问题的应该是——驱动?但是最近的包更新日志又没有驱动的更新记录。

继续做排除吧。从显卡开始。按 archlinux 的 wiki,先在 /etc/X11/xorg.conf.d/20-intel.conf 里加上 Option "NoAccel" "True",问题果然缓解了!虽然这时候能明显感受到桌面变卡,但是至少没有死机。高兴之余开了个浏览器,又死了。用 chromium --disable-gpu,死机的概率又小了一些。又按照 wiki 试了 sna、DRI 之类的配置,没啥作用。不过好歹勉强可以日常工作了,应付出差了。

好在客户那里没当场死给我看。

出差结束在机场候机的时候百无聊赖,又拿出本来,无意中翻到 /etc/modprobe.d/i915.conf(这都是当年按 wiki 为了省电人肉加上去的驱动参数),突然想把这些 tweak 都去掉看会怎么样。于是挪走这个文件,顺手又挪走了 /etc/X11/xorg.conf.d/20-intel.conf。重启,问题解决。

虽然并不清楚里面到底发生了什么,但是至少表面上看起来把这些东西去掉就好了。
/etc/modprobe.d/i915.conf
options i915 enable_rc6=1 enable_fbc=1 lvds_downclock=1 semaphores=1

评论