opengl/glx 코어 덤프 - 범용 Intel Linux 드라이버, RHEL6

opengl/glx 코어 덤프 - 범용 Intel Linux 드라이버, RHEL6

최근 ATI 카드가 손상되어 X 서버에서 완벽하게 작동하는 독점 드라이버를 얻을 수 없었기 때문에 전용 ATI 카드 및 독점 드라이버 사용에서 온보드 Intel 그래픽 및 기본/일반 Intel 드라이버 사용으로 전환했습니다.

어쨌든 이제 OpenGL을 사용하는 프로그램이 실행될 때마다 코어 덤프가 생성됩니다. 예를 들어:

[birdsnest ~]% glxinfo -v  
name of display: :0
zsh: segmentation fault (core dumped)  glxinfo -v

́h ́ ́ ́i s уn у s s p i c i o t s ́i ́ m y t/v t a r g x 0 0 0 l o t g a t a t l ― ―a―p―p―e―a―r―s― ―t―o 부 ―b―e― ―w―e―l―l 부:

[    33.580] (II) LoadModule: "glx"
[    33.604] (II) Loading /usr/lib64/xorg/modules/extensions/libglx.so
[    33.645] (II) Module glx: vendor="Advanced Micro Devices, Inc."
[    33.645]    compiled for 6.9.0, module version = 1.0.0
[    33.645] Loading extension GLX
[    33.645] (==) Matched intel as autoconfigured driver 0
[    33.645] (==) Matched vesa as autoconfigured driver 1
[    33.645] (==) Matched modesetting as autoconfigured driver 2
[    33.645] (==) Matched fbdev as autoconfigured driver 3
[    33.645] (==) Assigned the driver to the xf86ConfigLayout
[    33.645] (II) LoadModule: "intel"
[    33.645] (II) Loading /usr/lib64/xorg/modules/drivers/intel_drv.so
[    33.700] (II) Module intel: vendor="X.Org Foundation"
[    33.700]    compiled for 1.12.99.905, module version = 2.20.2
[    33.700]    Module class: X.Org Video Driver
[    33.700]    ABI class: X.Org Video Driver, version 13.0
[    33.700] (II) LoadModule: "vesa"
[    33.700] (II) Loading /usr/lib64/xorg/modules/drivers/vesa_drv.so
[    33.709] (II) Module vesa: vendor="X.Org Foundation"
[    33.709]    compiled for 1.13.0, module version = 2.3.2
[    33.709]    Module class: X.Org Video Driver
[    33.709]    ABI class: X.Org Video Driver, version 13.0
[    33.709] (II) LoadModule: "modesetting"
[    33.710] (II) Loading /usr/lib64/xorg/modules/drivers/modesetting_drv.so
[    33.723] (II) Module modesetting: vendor="X.Org Foundation"
[    33.723]    compiled for 1.13.0, module version = 0.5.0
[    33.723]    Module class: X.Org Video Driver
[    33.723]    ABI class: X.Org Video Driver, version 13.0
[    33.723] (II) LoadModule: "fbdev"
[    33.723] (II) Loading /usr/lib64/xorg/modules/drivers/fbdev_drv.so
[    33.731] (II) Module fbdev: vendor="X.Org Foundation"
[    33.731]    compiled for 1.12.99.905, module version = 0.4.3
[    33.731]    Module class: X.Org Video Driver
[    33.731]    ABI class: X.Org Video Driver, version 13.0
[    33.731] (II) intel: Driver for Intel Integrated Graphics Chipsets: i810,
        i810-dc100, i810e, i815, i830M, 845G, 854, 852GM/855GM, 865G, 915G,
        E7221 (i915), 915GM, 945G, 945GM, 945GME, Pineview GM, Pineview G,
        965G, G35, 965Q, 946GZ, 965GM, 965GME/GLE, G33, Q35, Q33, GM45,
        4 Series, G45/G43, Q45/Q43, G41, B43, B43, Clarkdale, Arrandale,
        Sandybridge Desktop (GT1), Sandybridge Desktop (GT2),
        Sandybridge Desktop (GT2+), Sandybridge Mobile (GT1),
        Sandybridge Mobile (GT2), Sandybridge Mobile (GT2+),
        Sandybridge Server, Ivybridge Mobile (GT1), Ivybridge Mobile (GT2),
        Ivybridge Desktop (GT1), Ivybridge Desktop (GT2), Ivybridge Server,
        Ivybridge Server (GT2)
[    33.731] (II) VESA: driver for VESA chipsets: vesa
[    33.731] (II) modesetting: Driver for Modesetting Kernel Drivers: kms
[    33.731] (II) FBDEV: driver for framebuffer: fbdev
[    33.731] (++) using VT number 1

편집: 코어 덤프에서 역추적(이것이 얼마나 유용한지, 어떻게 활용하는지 모르겠습니다):

Core was generated by `glxinfo -l'.
Program terminated with signal 11, Segmentation fault.
#0  0x000000341ea0a240 in xcb_glx_query_server_string_string_length () from /usr/lib64/libxcb-glx.so.0
Missing separate debuginfos, use: debuginfo-install glx-utils-9.0-0.8.el6_4.3.x86_64
(gdb) bt
#0  0x000000341ea0a240 in xcb_glx_query_server_string_string_length () from /usr/lib64/libxcb-glx.so.0
#1  0x00000031fa444bf4 in __glXQueryServerString () from /usr/lib64/libGL.so.1
#2  0x00000031fa420ca0 in ?? () from /usr/lib64/libGL.so.1
#3  0x00000031fa41d92d in ?? () from /usr/lib64/libGL.so.1
#4  0x00000031fa41ea8f in glXChooseVisual () from /usr/lib64/libGL.so.1
#5  0x000000000040163e in ?? ()
#6  0x0000000000402d8a in ?? ()
#7  0x000000340c61ecdd in __libc_start_main () from /lib64/libc.so.6
#8  0x0000000000401179 in ?? ()
#9  0x00007fffd0ae5628 in ?? ()
#10 0x000000000000001c in ?? ()
#11 0x0000000000000002 in ?? ()
#12 0x00007fffd0ae74d2 in ?? ()
#13 0x00007fffd0ae74da in ?? ()
#14 0x0000000000000000 in ?? ()

그래서 이것이 드라이버 문제인지 아니면 다른 문제인지 잘 모르겠고, 디버깅하는 방법도 모르겠습니다. 이 문제를 어떻게 디버깅해야 하는지 아는 사람이 있나요?

Module glx: vendor="Advanced Micro Devices, Inc."편집: 방금 xorg 로그에서 이 줄을 발견했습니다. 파일이 아주 최근에 마지막으로 수정되었다는 것을 알았습니다. ATI 비디오 드라이버를 설치할 무렵이었습니다. 독점 ATI 드라이버를 설치할 때 이 라이브러리가 손상될 가능성이 있습니까?

답변1

나는 그것에 대해 생각했다. 제가 예상한 대로 AMD가 사용하려는 공유 라이브러리와 Intel 드라이버가 사용하는 공유 라이브러리 간에 충돌이 발생합니다. 해결 방법은 AMD 드라이버를 제거하는 것입니다. 제거 스크립트를 실행하여 이 작업을 수행합니다 /usr/share/ati. 이 스크립트를 실행한 후 /etc/X11/xorg.conf제거 스크립트가 스크립트를 손상시키려고 했기 때문에 Intel 드라이버와 함께 사용했던 스크립트를 복원해야 했습니다 .

관련 정보