straceを実行すると、OpenGLの問題はどのように解決されますか?

straceを実行すると、OpenGLの問題はどのように解決されますか?

最近、私のディストリビューション(PLD Linux)を大幅にアップグレードして以来、多数のプログラムを使用するのに問題があります。私が知る限り、OpenGLやPulseAudioに関連するセグフォルトはありません。私は排他的なnvidiaドライバと3.2.xカーネルを使用しています。 Xorg自体はうまく動作し、ほとんどのプログラムを実行できますが、mplayer segfaultなどの問題が発生し、どのプログラムでもサウンドが生成されません。

OpenGLに関連する可能性があることを知ってテストを始めましたglxgears。単独で実行するとすぐにセグフォルトが発生します。その後、以下で実行するとstrace正常に動作することがわかりました。についても同様ですmplayer。テストmp3ファイルから実行するとすぐにsegfaultが発生し、strace mplayer正常に実行されます(パルス化されたオーディオはまだ消え、仮想出力デバイスに戻りますが)。

セグフォルトを回避するために、以下のタスクをどのように実行できますか?straceこの状況をどのようにデバッグできますか?

答え1

私はNvidiaがlibGL.so""を開き、現在のプロセスが追跡されているかどうかを検出しようと試みることを観察しました。値がゼロでないか(つまり、現在のプロセスが追跡されているかどうか)によって、異なるコードパスが使用されます。 /proc/self/statusTracerPid:TracerPid

インストールするシステムマイニングそして、問題のプロセス追跡を2回キャプチャします。一度は追跡している間、一度は追跡しないことです。たとえば、

$ 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

straceOpenGLの問題はlibGLプロセストレース/デバッグの有無によって異なる動作をするため、「修正」してください。

答え2

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

答え3

nv、nouveau、vesaを使ってみたと言われました。それぞれの場合に何が起こりましたか?

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

最新のマシンはまだPCIバス速度を遅くすることができますか?デスクトップコンピュータですか、それともノートパソコンですか?

しかし、可能であれば、パフォーマンスの面でATIとNVidiaの両方を避けることで、将来の多くの痛みを避けることができます。マージンが低すぎてユーザーベースが1%だけ減少しても、行動を変えることができます。

答え4

独自のNVIDIAドライバをアンインストールし、オープンソースドライバを使用します。独自のNVIDIAドライバに問題があることを確認しました。

関連情報