Bagaimana menjalankan strace memperbaiki masalah OpenGL saya?

8

Sejak peningkatan besar baru-baru ini ke distribusi saya (PLD Linux), saya telah mengalami masalah dengan banyak program. Yang terbaik yang bisa saya katakan, apa pun yang menyentuh OpenGL atau Segfault PulseAudio. Saya menggunakan driver nvidia dan kernel 3.2.x. Xorg sendiri berjalan dengan baik dan saya dapat menjalankan sebagian besar program, namun hal-hal seperti mplayer segfault dan tidak ada suara yang dihasilkan oleh program apa pun.

Setelah saya mengetahui bahwa itu mungkin terkait dengan OpenGL, saya mulai bermain glxgearssebagai tes. Menjalankannya dengan sendirinya segfaults secara instan. Kemudian saya menemukan bahwa menjalankannya di bawah straceberjalan dengan baik. Hal yang sama berlaku untuk mplayer. Menjalankannya pada file mp3 uji segfaults langsung, menjalankan strace mplayermemainkan baik-baik saja (meskipun audio pulsa masih mati dan kembali ke perangkat output dummy).

Bagaimana bisa menjalankan sesuatu di bawahnya straceagar tidak segfault dan bagaimana saya akan terus men-debug situasi?

Caleb
sumber
1
Apakah stracebiner Anda memiliki set bit yang lengket?
Mat
6
Tebak: ini adalah bug waktu, dan strace memperlambat prosesnya cukup untuk tidak memicu bug.
Gilles 'SO- stop being evil'
1
@Mat: Tidak ada yang lengket.
Caleb
1
@ FrederikDeweerdt: Aaa, ya sebenarnya tidak. Tidak banyak, tetapi positivly mengidentifikasi apa yang saya sudah menduga, nvidia disediakan perpustakaan yang menyebabkan deadness yang: [ 1170.678996] mplayer[3970]: segfault at ffffe0b4 ip b6464216 sp bfd84930 error 4 in libGL.so.290.10[b63e4000+a9000]. Sekarang apa?
Caleb
1
Adakah alasan Anda tidak bisa hanya debug dengan gdbdan mendapatkan backtrace dari tempat segfault terjadi?
Hello71

Jawaban:

2

Saya telah mengamati bahwa libGL.soupaya Nvidia untuk mendeteksi jika proses saat ini sedang dilacak, dengan membuka /proc/self/statusdan mencari " TracerPid:". Jalur kode yang berbeda diambil tergantung pada apakah nilai TracerPidbukan nol (yaitu, apakah pemrosesan saat ini dilacak atau tidak).

Instal sysdig , dan rekam jejak untuk proses menyinggung dua kali, sekali saat stracing, sekali dengan mulut strace. Sebagai contoh:

$ 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`

Bandingkan output tekstual dari dua jejak yang berbeda untuk mengamati perubahan dalam alur eksekusi antara menjalankan straced dan non-straced glxgears.

strace"memperbaiki" masalah OpenGL Anda, karena libGLberperilaku berbeda tergantung pada apakah proses sedang dilacak / di-debug.

Tom O
sumber
1

Saya akan membayangkan bahwa paket lain menggantikan libGL.so dengan versinya sendiri, menggantikan versi nVidia - kemungkinan besar paket Mesa. Untuk memperbaiki masalah ini, instal ulang driver nVidia milik, ini akan mengembalikan nVidia yang disediakan libGL.so.

ciotog
sumber
1
Maka itu tidak akan bekerja bahkan jika berjalan di bawah strace.
Renan
0

Kamu bilang kamu mencoba nv, nouveau dan vesa. Apa yang terjadi pada setiap kasus?

Juga, cobalah untuk mem-boot mesin Anda dari USB stick dengan distro lain dan lihat apakah masalahnya masih ada. Jika tidak, maka, mungkin, versi driver dari distro lain dapat digunakan pada mesin Anda. Hal ini juga dapat menjelaskan secara spesifik masalah yang Anda alami (sepertinya bug waktu).

Apakah mesin modern masih mampu memperlambat bus PCI? Apakah itu PC desktop atau notebook?

Sama seperti catatan tambahan, Anda dapat menghindarkan diri Anda dari banyak rasa sakit di masa depan dengan menghindari ATI dan NVidia sama sekali, jika mungkin dari segi kinerja. Margin mereka sangat rendah sehingga bahkan penurunan 1% di basis pengguna dapat memicu mereka untuk membersihkan tindakan mereka.

kasar
sumber
-1

Singkirkan driver nvidia eksklusif dan gunakan yang open source. Anda mengidentifikasi diri Anda driver nvidia milik yang salah.

aseq
sumber
Konsep yang bagus, tetapi Anda tahu itu lebih mudah diucapkan daripada dilakukan. Saya sudah menjalankan driver neavou, tetapi mereka memiliki masalah dengan dual monitor dan manajemen daya.
Caleb
Ada driver lain selain neavou. Saya akan mengatakan itu pilihan yang mudah karena sekarang Anda tidak memiliki sistem yang berfungsi dengan baik.
aseq
Serius? Jika Anda memiliki jawaban untuk saya, silakan edit posting Anda untuk benar-benar menjawab pertanyaan saya atau memberikan solusi alternatif tertentu. Jika Anda tahu tentang sihir yang tidak saya miliki, Anda harus lebih detail agar bermanfaat. Saya sangat menyadari bahwa ada driver lain di luar sana, tetapi Anda mungkin menyadari bahwa mereka tidak melakukan semua yang dimiliki oleh driver. Saya telah menggunakan nv, dan bahkan vesahal - hal yang mendorongnya, tetapi nouveausejauh ini yang paling banyak ditampilkan dan berkinerja terbaik. Ironisnya sistem ini bekerja untuk semua yang paling penting yang dilakukannya, yang tidak terjadi dengan driver lain.
Caleb
Menyarankan bekerja di sekitar juga merupakan jawaban dan saya akan mengatakan itu adalah solusi alternatif. Hanya karena Anda tidak suka solusi itu tidak begitu relevan.
aseq