运行strace如何解决我的OpenGL问题?


8

自从最近对我的发行版(PLD Linux)进行重大升级以来,我一直在处理大量程序。据我所知,任何涉及OpenGL或PulseAudio段错误的内容。我正在使用专有的nvidia驱动程序和3.2.x内核。Xorg本身运行良好,我能够运行大多数程序,但是mplayer segfault之类的东西并且任何程序都不会发出声音。

一旦确定它可能与OpenGL有关,便开始glxgears进行测试。单独运行它会立即出现段错误。然后我发现在下运行它strace很好。同样的道理对于mplayer。立即在测试mp3文件segfault上运行它,运行strace mplayer播放就很好了(尽管脉冲音频仍然消亡,并且它恢复为虚拟输出设备)。

如何在某些情况下运行某些东西以strace防止它出现段错误,我将如何继续调试情况?


1
您的strace二进制文件是否设置了粘性位?
Mat

6
猜猜:这是一个计时错误,而strace会使过程减慢到足以触发该错误的程度。
吉尔(Gilles)“所以,别再邪恶了”

1
@Mat:一点也不粘。
卡勒布(Caleb)2012年

1
@FrederikDeweerdt:Aaa,是的,实际上是这样。数量不多,但可以肯定地识别出我已经怀疑的问题,nvidia提供的库导致了死机:[ 1170.678996] mplayer[3970]: segfault at ffffe0b4 ip b6464216 sp bfd84930 error 4 in libGL.so.290.10[b63e4000+a9000]。怎么办?
卡勒布(Caleb)2012年

1
有什么原因不能仅用它进行调试gdb并从段错误发生的地方获得回溯?
Hello71

Answers:


2

我观察到Nvidia libGL.so尝试通过打开/proc/self/status并查找“ TracerPid:” 来检测是否正在跟踪当前进程。根据的值TracerPid是否为非零(即,是否正在跟踪当前处理),采用不同的代码路径。

安装sysdig,并捕获有问题的进程的跟踪两次,一次在跟踪时一次,一次没有strace。例如:

$ sysdig -w glxgears.scap proc.name=glxgears &
$ glxgears &
$ kill -TERM `pidof glxgears`
$ kill -TERM `pidof sysdig`
$ sysdig -w glxgears-strace.scap proc.name=glxgears &
$ strace glxgears &
$ kill -TERM `pidof glxgears`
$ kill -TERM `pidof sysdig`

比较两个不同迹线的文本输出,以观察的分段运行和非分段运行之间执行流的变化glxgears

strace“修复”您的OpenGL问题,因为libGL其行为不同(取决于是否跟踪/调试该进程)。


1

我可以想象另一个软件包将libGL.so替换为其自己的版本,从而替换nVidia版本-最有可能是Mesa软件包。要解决此问题,请重新安装专有的nVidia驱动程序,这将还原nVidia提供的libGL.so。


1
然后,即使在strace下运行,它也不起作用。
Renan

0

您说您尝试过nv,nouveau和vesa。每种情况发生了什么?

另外,请尝试使用其他发行版的USB闪存盘引导计算机,然后查看问题是否仍然存在。如果没有,则可以在您的计算机上使用其他发行版的驱动程序版本。它也可以使您更清楚地了解所遇到问题的具体情况(这似乎是一个计时错误)。

现代机器是否仍然能够减慢PCI总线的速度?是台式电脑还是笔记本电脑?

顺便提一句,如果可能的话,完全避免使用ATI和NVidia,可以为将来避免很多麻烦。他们的利润如此之低,以至于即使用户群减少1%,也可能触发他们清理行为。


-1

摆脱专有的nvidia驱动程序并使用开源的驱动程序。您确定自己的专有nvidia驱动程序有问题。


很棒的概念,但您知道这说起来容易做起来难。我已经运行了neavou驱动程序,但是它们在双显示器和电源管理方面存在问题。
Caleb'3

除了neavou外,还有其他驱动程序。我想说这是一个简单的选择,因为现在您的系统还不正确。
aseq 2012年

认真吗 如果您对我有答案,请编辑您的帖子以实际回答我的问题或提供特定的替代解决方案。如果您知道一些我不知道的魔术,则需要更详细地说明才能有用。我很清楚那里还有其他驱动程序,但是您可能知道他们并没有执行专有驱动程序所做的所有事情。我已经使用过nv,甚至由vesa东西来驱动它,但nouveau到目前为止却是功能最强大和性能最好的。讽刺的是这个系统工作一切它认为它做什么,这是不与其他驱动程序的情况下是最重要的。
Caleb 2012年

建议解决方法也是一个答案,我会说这是一个替代解决方案。仅仅因为您不喜欢该解决方案就没有那么重要了。
aseq 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.