Desde una reciente actualización importante de mi distribución (PLD Linux), he tenido problemas con una gran cantidad de programas. Lo mejor que puedo decir, todo lo que toca OpenGL o PulseAudio segfaults. Estoy usando los controladores propietarios de nvidia y un kernel 3.2.x. Xorg en sí funciona bien y puedo ejecutar la mayoría de los programas, sin embargo, cosas como mplayer segfault y ningún programa produce sonido.
Una vez que descubrí que podría estar relacionado con OpenGL, comencé a jugar glxgears
como prueba. Ejecutarlo por sí solo segfaults instantáneamente. Entonces descubrí que ejecutarlo bajo strace
funciona bien. Lo mismo es cierto para mplayer
. Ejecutarlo en un archivo mp3 de prueba se convierte en un valor predeterminado al instante, la ejecución se strace mplayer
reproduce muy bien (aunque el audio de pulso aún muere y vuelve a un dispositivo de salida ficticio).
¿Cómo podría ejecutar algo bajo para strace
evitar que se produzca una falla y cómo continuaría depurando la situación?
fuente
strace
binario tiene un conjunto de bits pegajoso?[ 1170.678996] mplayer[3970]: segfault at ffffe0b4 ip b6464216 sp bfd84930 error 4 in libGL.so.290.10[b63e4000+a9000]
. ¿Ahora que?gdb
y obtener un seguimiento de donde ocurre el segfault?Respuestas:
He observado que Nvidia
libGL.so
intenta detectar si se está rastreando el proceso actual, abriendo/proc/self/status
y buscando "TracerPid:
". Se toman diferentes rutas de código dependiendo de si el valor deTracerPid
no es cero (es decir, si se está rastreando el procesamiento actual o no).Instale sysdig , y capture el rastro del proceso ofensivo dos veces, una vez mientras realiza el enderezado, una vez sin forzar. Por ejemplo:
Compare la salida textual de las dos trazas diferentes para observar el cambio en el flujo de ejecución entre las corridas con y sin ejecución
glxgears
.strace
"corrige" su problema de OpenGL, porquelibGL
se comporta de manera diferente dependiendo de si el proceso se está rastreando / depurando.fuente
Me imagino que otro paquete reemplazó libGL.so con su propia versión, reemplazando la versión nVidia, muy probablemente un paquete Mesa. Para solucionar el problema, reinstale el controlador propietario de nVidia, esto restaurará el nVidia proporcionado libGL.so.
fuente
Dijiste que probaste nv, nouveau y vesa. ¿Qué pasó en cada caso?
Además, intente arrancar su máquina desde una memoria USB con otra distribución y ver si el problema persiste. Si no es así, entonces, tal vez, las versiones del controlador de las otras distribuciones se pueden utilizar en su máquina. También podría arrojar algo de luz sobre los detalles del problema que está teniendo (parece ser un error de sincronización).
¿Las máquinas modernas todavía son capaces de ralentizar el bus PCI? ¿Es una PC de escritorio o una notebook?
Solo como una nota al margen, puede ahorrarse mucho dolor en el futuro al evitar ATI y NVidia por completo, si es posible en términos de rendimiento. Sus márgenes son tan bajos que incluso una caída del 1% en la base de usuarios puede llevarlos a limpiar su acto.
fuente
Deshágase de los controladores propietarios de nvidia y use los de código abierto. Usted identificó que los controladores propietarios de nvidia tienen la culpa.
fuente
nv
, e incluso lasvesa
cosas lo impulsan, peronouveau
es, con mucho, el más destacado y el mejor rendimiento. Irónicamente este sistema está funcionando por todo lo que es más importante que lo haga, que no es el caso con otros conductores.