几个月来,我一直运行 debian 作为我的主要驱动程序操作系统,但我刚刚开始发现一些音频相关的应用程序出现了一个奇怪的错误。
系统调用跟踪揭示了这一点。
...
open("/dev/urandom", O_RDONLY|O_LARGEFILE) = 3
...
read(3, "~e\f9\224S\0160q\312Iz\341c9\306\300j\303\311\372)\331\301\16\304K\32\235\347\2659", 32) = 32
--- SIGSEGV {si_signo=SIGSEGV, si_code=SEGV_MAPERR, si_addr=0x10} ---
(完整追踪可用这里)
其他几个程序也出现了同样的问题,包括 vlc、rhythmbox 和 idjc。直到几天前,一切都运行正常,有谁知道这里发生了什么吗?
编辑:到目前为止,所有执行此操作的程序都与播放音频有关,但事实证明它wget
也在执行此操作。我还应该补充一点,我尝试用一dd
行复制该错误,但无法dd
崩溃。
read
有趣的是,我比较了两个跟踪日志,除了和返回的数据外,它们的最后 9 行是相同的getrusage
。
我几乎确定这是 GNUTLS 库的问题,但尚未找到解决办法
答案1
我已经确认问题出在 GNUTLS 上。我将一些软件包更新到 debian 的测试分支,问题就消失了。