После недавнего серьезного обновления моего дистрибутива (PLD Linux) у меня возникли проблемы с целым рядом программ. Насколько я могу судить, все, что касается сегментов OpenGL или PulseAudio. Я использую проприетарные драйверы nvidia и ядро 3.2.x. Сам Xorg работает нормально, и я могу запускать большинство программ, однако такие вещи, как mplayer segfault и никакой звук не производятся никакой программой.
Как только я понял, что это может быть связано с OpenGL, я начал играть glxgears
в качестве теста. Запуск сам по себе segfaults мгновенно. Затем я обнаружил, что работает под управлением strace
работает нормально. То же самое верно для mplayer
. Запуск его в тестовом mp3-файле segfaults мгновенно, при запуске strace mplayer
проигрывается просто отлично (хотя импульсное аудио все равно умирает и возвращается к фиктивному устройству вывода).
Как можно запустить что-то под strace
защитой от segfaulting и как я буду продолжать отлаживать ситуацию?
strace
бинарного файла установлен липкий бит?[ 1170.678996] mplayer[3970]: segfault at ffffe0b4 ip b6464216 sp bfd84930 error 4 in libGL.so.290.10[b63e4000+a9000]
. Что теперь?gdb
и получить обратную информацию о том, где произошла ошибка?Ответы:
Я заметил, что
libGL.so
попытки Nvidia определить, отслеживается ли текущий процесс, путем открытия/proc/self/status
и поиска "TracerPid:
". Различные пути кода используются в зависимости от того, является ли значениеTracerPid
ненулевым (то есть отслеживается текущая обработка или нет).Установите sysdig и дважды получите трассировку для процесса, вызывающего сбой, один раз во время распределения, один раз без использования strace. Например:
Сравните текстовый вывод двух разных трассировок, чтобы увидеть изменение в потоке выполнения между последовательными и неограниченными прогонами
glxgears
.strace
«исправляет» вашу проблему OpenGL, потому чтоlibGL
ведет себя по-разному в зависимости от того, отслеживается ли процесс / отлажен.источник
Я полагаю, что другой пакет заменил libGL.so своей версией, заменив версию nVidia - скорее всего, пакет Mesa. Чтобы решить эту проблему, переустановите проприетарный драйвер nVidia, это восстановит nVidia, предоставленный libGL.so.
источник
Вы сказали, что пробовали nv, nouveau и vesa. Что случилось в каждом случае?
Кроме того, попробуйте загрузить свой компьютер с USB-накопителя с другим дистрибутивом и посмотрите, сохраняется ли проблема. Если это не так, то, возможно, версии драйверов из других дистрибутивов могут быть использованы на вашем компьютере. Это также может пролить некоторый свет на специфику вашей проблемы (похоже, это ошибка синхронизации).
Способны ли современные машины замедлять шину PCI? Это настольный ПК или ноутбук?
Как примечание, вы можете избавить себя от многих проблем в будущем, избегая ATI и NVidia в целом, если это возможно с точки зрения производительности. Их маржа настолько низка, что даже 1% -ное снижение пользовательской базы может побудить их очистить свои действия.
источник
Избавьтесь от проприетарных драйверов nvidia и используйте открытые. Вы определили, что виноваты несвободные драйверы NVIDIA.
источник
nv
, и дажеvesa
материал управляет им, ноnouveau
, безусловно, наиболее показанным и наиболее эффективным. Как ни странно эта система будет работать на все , что является наиболее важным , что делать, что не так с другими водителями.