自从我升级到 Ubuntu 11.10 (oneiric) 后,如果我在 YouTube 上听音乐,我的 pulseaudio 每天都会崩溃几次。它会自动重启(只要我使用 Unity 会话——如果我使用 GNOME,它显然不会自动重启),但会忘记音量设置(扬声器图标显示“静音”),这就是我知道它崩溃的原因。此外,我需要重新加载带有 youtube 的浏览器选项卡,才能让它再次播放声音。
我正在尝试调试这个问题。当我使用 GNOME Shell 会话而不是 Unity 时,pulseaudio 会死机并且不会自动重启。我必须在终端中手动重启它。(此外,我的音量图标会消失,音量键也会停止反应。即使我手动重启 PA 也是如此。)
这就是我注意到 PA 不仅仅是崩溃了——它还被信号(SIGKILL)杀死了。
编辑:证据:LANGUAGE=C pulseaudio -vv
死机时显示一条消息“Nutraukta (Killed)”,它忽略了我使用英语的请求 (LANGUAGE=C),因此我假设它来自 bash,而不是 pulseaudio 本身。并且 $? 等于 137,即 128(被信号杀死)+ 9(SIGKILL)。
我还没有弄清楚其中的规律。这种情况并不总是发生——有时我在 YouTube 上播放了大约 10 首歌曲,然后当我尝试观看第 11 首歌曲时,PA 被关闭。有时它会在长时间不活动后被关闭。有时它会在恢复时被关闭。
有什么想法可以追踪谁杀死了我的 PA?一旦我弄清楚发生了什么以及哪个程序负责,我打算提交一个有关此问题的错误报告。
更新:irc.freenode.net 上 #pulseaudio 的人们说,这可能是 alsa 驱动程序中的一个错误,导致 pulseaudio 不断倒带流,在实时线程中消耗 CPU,然后由于超出 cputime 限制而被内核终止。我仍在尝试在启用详细 pulseaudio 调试的情况下重现此问题。
另一更新:我重现过这个问题几次,一次是在 strace 下,一次是用 pulseaudio -vvvv。在 SIGKILL 到达之前,任何日志中都没有任何可疑之处(对我来说)。