Depuis une récente mise à niveau majeure de ma distribution (PLD Linux), j'ai eu des problèmes avec toute une série de programmes. Autant que je sache, tout ce qui touche les défauts de segmentation OpenGL ou PulseAudio. J'utilise les pilotes nvidia propriétaires et un noyau 3.2.x. Xorg lui-même fonctionne bien et je suis capable d'exécuter la plupart des programmes, cependant des choses comme mplayer segfault et aucun son n'est produit par aucun programme.
Une fois que j'ai compris qu'il pourrait être lié à OpenGL, j'ai commencé à jouer avec glxgears
comme test. L'exécuter par lui-même segfaults instantanément. Ensuite, j'ai découvert que le faire fonctionner sous strace
fonctionnait bien. La même chose est vraie pour mplayer
. Le lancer sur un fichier mp3 de test se sépare instantanément, le fonctionnement fonctionne strace mplayer
très bien (bien que le son à impulsions meurt toujours et qu'il redevienne un périphérique de sortie factice).
Comment le fait d'exécuter quelque chose sous l' strace
empêcherait-il de se briser et comment pourrais-je continuer à déboguer la situation?
strace
binaire a-t-il un ensemble de bits collants?[ 1170.678996] mplayer[3970]: segfault at ffffe0b4 ip b6464216 sp bfd84930 error 4 in libGL.so.290.10[b63e4000+a9000]
. Maintenant quoi?gdb
et obtenir une trace de l'origine du défaut de segmentation?Réponses:
J'ai observé que Nvidia
libGL.so
tente de détecter si le processus en cours est tracé, en ouvrant/proc/self/status
et en recherchant "TracerPid:
". Différents chemins de code sont choisis selon que la valeur deTracerPid
est non nulle (c'est-à-dire si le traitement en cours est tracé ou non).Installez sysdig et capturez deux fois la trace du processus incriminé, une fois pendant le stracing, une fois sans strace. Par exemple:
Comparez la sortie textuelle des deux traces différentes pour observer le changement dans le flux d'exécution entre les séquences étirées et non étirées de
glxgears
.strace
"corrige" votre problème OpenGL, car illibGL
se comporte différemment selon que le processus est tracé / débogué.la source
J'imagine qu'un autre paquet a remplacé libGL.so par sa propre version, remplaçant la version nVidia - très probablement un paquet Mesa. Pour résoudre le problème, réinstallez le pilote nVidia propriétaire, cela restaurera le libGL.so fourni par nVidia.
la source
Vous avez dit avoir essayé nv, nouveau et vesa. Que s'est-il passé dans chaque cas?
Essayez également de démarrer votre ordinateur à partir d'une clé USB avec une autre distribution et voyez si le problème persiste. Si ce n'est pas le cas, alors, peut-être, les versions de pilote des autres distributions peuvent être utilisées sur votre machine. Cela pourrait également éclairer les spécificités du problème que vous rencontrez (il semble que ce soit un bug de synchronisation).
Les machines modernes sont-elles toujours capables de ralentir le bus PCI? Est-ce un ordinateur de bureau ou un ordinateur portable?
Juste comme une note latérale, vous pouvez vous épargner beaucoup de douleur future en évitant complètement ATI et NVidia, si possible en termes de performances. Leurs marges sont si faibles que même une baisse de 1% de la base d'utilisateurs peut les inciter à nettoyer leur acte.
la source
Débarrassez-vous des pilotes nvidia propriétaires et utilisez ceux open source. Vous vous êtes identifié comme étant les pilotes propriétaires nvidia.
la source
nv
, et même lesvesa
trucs qui le motivent, maisnouveau
c'est de loin le plus présenté et le plus performant. Ironie du sort ce système est fonctionne pour tout ce qu'il est plus important que faire, ce qui est le cas avec d' autres pilotes.