https://bugs.freedesktop.org/show_bug.cgi?id=66955
Priority: medium Bug ID: 66955 Assignee: dri-devel@lists.freedesktop.org Summary: Running the game "FTL" causes the Xserver to crash inside the r600 dri code Severity: normal Classification: Unclassified OS: Linux (All) Reporter: phil@kantaka.co.uk Hardware: x86-64 (AMD64) Status: NEW Version: unspecified Component: DRM/Radeon Product: DRI
System: Radeon HD 5770, AMD Phenom II. Debian Linux kernel 3.9.8, mesa 9.1.4 libdrm-radeon 2.4.45 xserver-xorg-video-radeon 6.14.4
Running the Linux version of the game FTL causes the Xserver to segfault.
The backtrace I get is:
Backtrace: 0: /usr/bin/Xorg (xorg_backtrace+0x36) [0x7fba2ad6dd06] 1: /usr/bin/Xorg (0x7fba2abef000+0x182859) [0x7fba2ad71859] 2: /lib/x86_64-linux-gnu/libpthread.so.0 (0x7fba29f14000+0xf210) [0x7fba29f23210] 3: /usr/lib/x86_64-linux-gnu/dri/r600_dri.so (0x7fba256e5000+0x10c7a7) [0x7fba257f17a7] 4: /usr/lib/xorg/modules/extensions/libglx.so (0x7fba273a2000+0xddb1) [0x7fba273afdb1] 5: /usr/lib/xorg/modules/extensions/libglx.so (0x7fba273a2000+0x3c223) [0x7fba273de223] 6: /usr/bin/Xorg (0x7fba2abef000+0x52e61) [0x7fba2ac41e61] 7: /usr/bin/Xorg (0x7fba2abef000+0x41ec5) [0x7fba2ac30ec5] 8: /lib/x86_64-linux-gnu/libc.so.6 (__libc_start_main+0xf5) [0x7fba28b9f995] 9: /usr/bin/Xorg (0x7fba2abef000+0x4219d) [0x7fba2ac3119d]
Segmentation fault at address 0x2d6a83b0
I'll see if I can get a better backtrace by installing the dbg packages.
No errors appear in the dmesg output - this appears to be a userspace crash.
https://bugs.freedesktop.org/show_bug.cgi?id=66955
--- Comment #1 from Phil Armstrong phil@kantaka.co.uk --- Turns out the real problem is that FTL bundles a version of libstdc++ that the DRI drivers won't link against.
It looks like the net result is that *no* DRI drivers (not even swrast) can be loaded, and the Xserver dies when trying to invoke the first GLX call.
Here's the output of the program with LIBGL_DEBUG=verbose :
$ cat libgl_debug-output2.txt libGL: OpenDriver: trying /usr/lib/x86_64-linux-gnu/dri/tls/r600_dri.so libGL: OpenDriver: trying /usr/lib/x86_64-linux-gnu/dri/r600_dri.so libGL error: dlopen /usr/lib/x86_64-linux-gnu/dri/r600_dri.so failed (/home/phil/games/FTL/data/amd64/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /usr/lib/x86_64-linux-gnu/libLLVM-3.2.so.1)) libGL: OpenDriver: trying ${ORIGIN}/dri/tls/r600_dri.so libGL: OpenDriver: trying ${ORIGIN}/dri/r600_dri.so libGL error: dlopen ${ORIGIN}/dri/r600_dri.so failed (/home/phil/games/FTL/data/amd64/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /usr/lib/x86_64-linux-gnu/libLLVM-3.2.so.1)) libGL: OpenDriver: trying /usr/lib/dri/tls/r600_dri.so libGL: OpenDriver: trying /usr/lib/dri/r600_dri.so libGL error: dlopen /usr/lib/dri/r600_dri.so failed (/usr/lib/dri/r600_dri.so: cannot open shared object file: No such file or directory) libGL error: unable to load driver: r600_dri.so libGL error: driver pointer missing libGL error: failed to load driver: r600 libGL: OpenDriver: trying /usr/lib/x86_64-linux-gnu/dri/tls/swrast_dri.so libGL: OpenDriver: trying /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so libGL error: dlopen /usr/lib/x86_64-linux-gnu/dri/swrast_dri.so failed (/home/phil/games/FTL/data/amd64/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /usr/lib/x86_64-linux-gnu/libLLVM-3.2.so.1)) libGL: OpenDriver: trying ${ORIGIN}/dri/tls/swrast_dri.so libGL: OpenDriver: trying ${ORIGIN}/dri/swrast_dri.so libGL error: dlopen ${ORIGIN}/dri/swrast_dri.so failed (/home/phil/games/FTL/data/amd64/lib/libstdc++.so.6: version `GLIBCXX_3.4.15' not found (required by /usr/lib/x86_64-linux-gnu/libLLVM-3.2.so.1)) libGL: OpenDriver: trying /usr/lib/dri/tls/swrast_dri.so libGL: OpenDriver: trying /usr/lib/dri/swrast_dri.so libGL error: dlopen /usr/lib/dri/swrast_dri.so failed (/usr/lib/dri/swrast_dri.so: cannot open shared object file: No such file or directory) libGL error: unable to load driver: swrast_dri.so libGL error: failed to load driver: swrast XIO: fatal IO error 11 (Resource temporarily unavailable) on X server ":3" after 10305 requests (10305 known processed) with 0 events remaining.
If I remove the bundled libstdc++.so & use the system one then everything works as expected.
Obviously this is still an Xorg crash bug though: the server ought not to crash if a userspace program fails to load a glx driver!
https://bugs.freedesktop.org/show_bug.cgi?id=66955
--- Comment #2 from Phil Armstrong phil@kantaka.co.uk --- Created attachment 82474 --> https://bugs.freedesktop.org/attachment.cgi?id=82474&action=edit gdb backtrace of all threads
Backtrace
https://bugs.freedesktop.org/show_bug.cgi?id=66955
--- Comment #3 from Phil Armstrong phil@kantaka.co.uk --- Created attachment 82475 --> https://bugs.freedesktop.org/attachment.cgi?id=82475&action=edit Backtrace with dri symbols
https://bugs.freedesktop.org/show_bug.cgi?id=66955
Phil Armstrong phil@kantaka.co.uk changed:
What |Removed |Added ---------------------------------------------------------------------------- Summary|Running the game "FTL" |Substituting an older |causes the Xserver to crash |libstdc++ when running a GL |inside the r600 dri code |program causes a segfault | |in the Xserver.
https://bugs.freedesktop.org/show_bug.cgi?id=66955
--- Comment #4 from Phil Armstrong phil@kantaka.co.uk --- Changed title to reflect underlying bug: I don't believe that the user should be able to make the XServer process segfault by substituting the wrong libstdc++ library when running an ordinary user process.
https://bugs.freedesktop.org/show_bug.cgi?id=66955
Alex Deucher agd5f@yahoo.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Assignee|dri-devel@lists.freedesktop |mesa-dev@lists.freedesktop. |.org |org Product|DRI |Mesa Component|DRM/Radeon |Mesa core
dri-devel@lists.freedesktop.org