straceを実行するとOpenGLの問題がどのように修正されますか?


8

私のディストリビューション(PLD Linux)への最近の大きなアップグレード以来、私はたくさんのプログラムで問題を抱えています。言うまでもなく、OpenGLまたはPulseAudioのsegfaultに関係するすべてのもの。独自のnvidiaドライバーと3.2.xカーネルを使用しています。Xorg自体は問題なく動作し、ほとんどのプログラムを実行できますが、mplayer segfaultのようなもので、どのプログラムからも音が出ません。

それがOpenGLに関連している可能性があることがわかったら、私glxgearsはテストとして遊んだ。単独で実行すると、すぐにセグメンテーション違反が発生します。その後、私はそれstraceをうまく実行できることを発見しました。同じことがにも当てはまりますmplayer。テストmp3ファイルでそれを実行すると、即座にsegfaultが実行され、実行strace mplayerすると問題なく再生されます(ただし、パルスオーディオはまだ停止し、ダミーの出力デバイスに戻ります)。

何かを実行straceすると、segfaultingを防ぐことができ、状況をデバッグし続けるにはどうすればよいですか?


1
あなたのないstraceバイナリがスティッキービットがセットされていますか?
マット

6
推測:これはタイミングのバグであり、straceはプロセスを遅くして、バグをトリガーしないようにします。
Gilles「SO-邪悪なことをやめなさい」

1
@マット:粘着性のビットはありません。
カレブ2012年

1
@FrederikDeweerdt:ああ、そうですね。それほど多くはありませんが、それは私がすでに疑ったことを確かに特定します。nvidia提供のライブラリが死を引き起こしています[ 1170.678996] mplayer[3970]: segfault at ffffe0b4 ip b6464216 sp bfd84930 error 4 in libGL.so.290.10[b63e4000+a9000]。それで?
カレブ2012年

1
デバッグしてgdb、segfaultが発生した場所からバックトレースを取得できない理由は何ですか?
Hello71、2012

回答:


2

「」をlibGL.so開い/proc/self/statusて探すことにより、現在のプロセスがトレースされているかどうかをNvidia が検出しようとするのを観察しましたTracerPid:。の値がTracerPidゼロ以外の場合(つまり、現在の処理がトレースされているかどうか)に応じて、異なるコードパスが使用されます。

sysdigをインストールし、問題のあるプロセスのトレースを2回(1回は追跡中、1回は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`

2つの異なるトレースのテキスト出力を比較して、のトレースされた実行とトレースされていない実行の間の実行フローの変化を観察しますglxgears

stracelibGLプロセスがトレース/デバッグされているかどうかによって動作が異なるため、OpenGLの問題を「修正」します。


1

別のパッケージがlibGL.soを独自のバージョンで置き換え、nVidiaバージョンを置き換えたと想像します。おそらくMesaパッケージです。この問題を修正するには、独自のnVidiaドライバーを再インストールします。これにより、nVidiaが提供するlibGL.soが復元されます。


1
その場合、straceの下で実行しても機能しません。
Renan 2012

0

あなたはnv、nouveau、vesaを試したと言いました。それぞれのケースで何が起こりましたか?

また、別のディストリビューションでUSBスティックからマシンを起動してみて、問題が解決するかどうかを確認してください。そうでない場合は、おそらく、他のディストリビューションのドライバーバージョンをマシンで使用できます。また、発生している問題の詳細を明らかにすることもできます(タイミングのバグのようです)。

最近のマシンはまだPCIバスの速度を落とすことができますか?デスクトップPCですか、ノートブックですか。

余談ですが、可能であればパフォーマンス面でATIとNVidiaを完全に回避することで、将来の多くの苦痛を回避することができます。彼らのマージンは非常に低いため、ユーザーベースが1%減少したとしても、ユーザーの行動をクリーンアップするきっかけになる可能性があります。


-1

独自のnvidiaドライバーを取り除き、オープンソースのドライバーを使用してください。独自のnvidiaドライバーに問題があることを確認しました。


素晴らしいコンセプトですが、言うのは言うより簡単です。neavouドライバーを実行しましたが、デュアルモニターと電源管理に問題があります。
カレブ

neavou以外にも他のドライバーがあります。現時点では適切に機能するシステムがないため、これは簡単な選択です。
aseq 2012年

マジ?私に答えがある場合は、投稿を編集して実際に私の質問に答えるか、特定の代替ソリューションを提供してください。私が知らない魔法を知っているなら、役に立つためにもっと詳細に説明する必要があるでしょう。他にもさまざまなドライバが存在することは承知していますが、プロプライエタリなドライバが実行するすべての機能をそれらが実行しているわけではないことをご存じでしょう。私はを使用しましたnvが、それでもvesaドライブが動作しますnouveauが、これまでで最も機能があり、最高のパフォーマンスを発揮します。皮肉なことに、このシステム、それが行うことが最も重要であるすべてのことに対して機能しています。これは、他のドライバーには当てはまりません。
Caleb

回避策を提案することも答えであり、私はそれが代替ソリューションであると思います。そのソリューションが気に入らないからといって、それほど関連性はありません。
aseq 2012年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.