최근 내 배포판(PLD Linux)을 크게 업그레이드한 이후로 많은 수의 프로그램을 사용하는 데 문제가 있습니다. 내가 아는 한 OpenGL이나 PulseAudio와 관련된 세그폴트는 없습니다. 저는 독점적인 nvidia 드라이버와 3.2.x 커널을 사용하고 있습니다. Xorg 자체는 잘 작동하고 대부분의 프로그램을 실행할 수 있지만 mplayer segfault와 같은 문제가 발생하고 어떤 프로그램에서도 사운드가 생성되지 않습니다.
OpenGL과 관련이 있을 수 있다는 사실을 알고 테스트를 시작했습니다 glxgears
. 단독으로 실행하면 즉시 세그폴트가 발생합니다. 그런 다음 아래에서 실행하면 strace
제대로 작동한다는 것을 알았습니다. 에 대해서도 마찬가지입니다 mplayer
. 테스트 mp3 파일에서 실행하면 즉시 segfault가 발생하고 strace mplayer
정상적으로 실행됩니다(펄싱하는 오디오는 여전히 사라지고 가상 출력 장치로 되돌아가지만).
세그폴트를 방지하기 위해 아래 작업을 어떻게 실행할 수 strace
있으며 이 상황을 어떻게 디버깅할 수 있습니까?
답변1
나는 Nvidia가 libGL.so
" "를 열고 찾아 현재 프로세스가 추적되고 있는지 감지하려고 시도하는 것을 관찰했습니다. 값이 0이 아닌지(즉, 현재 프로세스가 추적되고 있는지 여부)에 따라 다른 코드 경로가 사용됩니다. /proc/self/status
TracerPid:
TracerPid
설치하다시스템 마이닝, 그리고 문제의 프로세스 추적을 두 번 캡처합니다. 한 번은 추적하는 동안, 한 번은 추적하지 않는 것입니다. 예를 들어:
$ 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`
서로 다른 두 추적의 텍스트 출력을 비교하여 추적 실행과 비추적 실행 간의 실행 흐름 변화를 관찰합니다 glxgears
.
strace
OpenGL 문제는 libGL
프로세스 추적/디버깅 여부에 따라 다르게 동작하므로 "수정"하십시오.
답변2
나는 또 다른 패키지가 libGL.so를 자체 버전으로 대체하고 nVidia 버전을 대체한다고 상상합니다. 아마도 Mesa 패키지일 것입니다. 이 문제를 해결하려면 nVidia 제공 libGL.so를 복원하는 독점 nVidia 드라이버를 다시 설치하십시오.
답변3
nv, nouveau, vesa를 사용해 보셨다고 하셨습니다. 각 경우에 무슨 일이 일어났나요?
또한 다른 배포판을 사용하여 USB 스틱에서 컴퓨터를 부팅하여 문제가 지속되는지 확인하십시오. 그렇지 않다면 다른 배포판의 드라이버 버전이 귀하의 컴퓨터에서 작동할 수도 있습니다. 또한 현재 겪고 있는 문제의 세부 사항을 밝힐 수도 있습니다(타이밍 오류인 것으로 보입니다).
최신 기계가 여전히 PCI 버스 속도를 늦출 수 있습니까? 데스크탑 컴퓨터인가요, 아니면 노트북인가요?
그런데 가능하다면 성능 측면에서 ATI와 NVidia를 모두 피함으로써 미래의 많은 고통을 피할 수 있습니다. 마진이 너무 낮아 사용자 기반이 1%만 감소해도 행동을 바꾸게 될 수 있습니다.
답변4
독점 NVIDIA 드라이버를 제거하고 오픈 소스 드라이버를 사용하십시오. 독점 NVIDIA 드라이버에 문제가 있음을 확인했습니다.