为什么有些 udev 工作者超时了?

为什么有些 udev 工作者超时了?

几周前,我的笔记本电脑上的 ALSA 和 USB 停止工作。YouTube 视频等内容在 Firefox 中没有声音;mpv打印[ao/alsa] Playback open error: No such file or directory. Could not open/initialize audio device -> no sound..alsamixer抱怨没有这样的文件mixer。闪存驱动器不会出现在/dev或中/dev/disk,并且它们的 LED 不会亮起。奇怪的是,我仍然可以使用端口为手机充电……

udev似乎也出现了问题,启动延迟了整整一分钟(它自己延迟了!)waiting for uevents to be processed ...并且关机延迟了半分钟(我计时了)stopping udev ...。它还向内核日志发出抱怨:

<28>[  130.669180] udevd[1745]: worker [1763] /devices/pci0000:00/0000:00:14.0 is taking a long time
<28>[  130.669196] udevd[1745]: worker [1762] /devices/pci0000:00/0000:00:1b.0 is taking a long time

几分钟后:

[  251.500125] udevd[1745]: worker [1763] /devices/pci0000:00/0000:00:14.0 timeout; kill it
[  251.500156] udevd[1745]: seq 1333 '/devices/pci0000:00/0000:00:14.0' killed
[  251.500166] udevd[1745]: worker [1762] /devices/pci0000:00/0000:00:1b.0 timeout; kill it
[  251.500174] udevd[1745]: seq 1336 '/devices/pci0000:00/0000:00:1b.0' killed
[  251.500535] udevd[1745]: worker [1763] terminated by signal 9 (Killed)
[  251.500540] udevd[1745]: worker [1763] failed while handling '/devices/pci0000:00/0000:00:14.0'

这些 PCI 地址分别是用于 USB 控制器和音频设备的。另外,我注意到虽然似乎lsmod没有显示任何异常,但/proc/modules列出了xhci_pcisnd_hda_intel和,sunrpc就像永恒的一样Loadingmodprobe这三个(以及依赖于它们的其他程序)将挂起(-v显示在尝试它们时挂起insmod)。

系统在 Linux 4.4.6 上运行 Gentoo。udev 由 eudev 3.1.5 提供。根文件系统位于 LUKS 容器中;我使用 initrd 进行启动。

Web 和 Stack Exchange 搜索没有找到任何有用的信息。我检查了我的内核配置维基百科摘录并尝试重新出现eudev(没有变化)。那么这里发生了什么?

答案1

虽然我没有完整的解释,TIMER_STATS在内核配置中禁用(如果您使用 menuconfig 则是Kernel hacking➔ )似乎已经修复了这个问题。Collect kernel timers statistics

我猜是因为某种原因,我的一些模块无法加载TIMER_STATS,以某种奇怪的方式insmod挂起。内核日志中提到的两个udev工作器尝试加载它们,挂起,然后被杀死。由于缺少内核模块和任何设置udev,声音和 USB 相关的东西……不起作用。


更新:

我意识到很多模块正在加载 /被安装。是非常我很困惑,直到我深入研究了我的 initrd,发现它有它的自己的 /lib/modules,并附有一些模块(包括xhci_pcisunrpc)的副本。尽管我确保在重建模块后将所有模块安装到根文件系统,但我从未重建 initrd,这意味着正在运行的内核的配置与它尝试加载的模块(部分)不同。显然,这导致了奇怪的事情。比如insmod挂起。

因此,如果你使用 initrd,并且它有内核模块的副本,确保在重建内核时重建它。

相关内容