https://bugs.freedesktop.org/show_bug.cgi?id=107655
Bug ID: 107655 Summary: X segfaults on startup in r300_dri.so, making system unusable Product: Mesa Version: 18.1 Hardware: x86-64 (AMD64) OS: Linux (All) Status: NEW Severity: blocker Priority: medium Component: Drivers/Gallium/r300 Assignee: dri-devel@lists.freedesktop.org Reporter: virtuousfox@gmail.com QA Contact: dri-devel@lists.freedesktop.org
Created attachment 141236 --> https://bugs.freedesktop.org/attachment.cgi?id=141236&action=edit Xorg.pid-1154.gdb.log
I have updated my old Asus F3Ke notebook with "ATI Mobility Radeon X2300 (ChipID = 0x718a)" after neglecting it for 1-2 years and now I can't launch desktop session because X immediately segfaults. This is what I was able to get after installing debug data and launching Xgdb script.
https://bugs.freedesktop.org/show_bug.cgi?id=107655
--- Comment #1 from Sergey Kondakov virtuousfox@gmail.com --- Created attachment 141237 --> https://bugs.freedesktop.org/attachment.cgi?id=141237&action=edit Xorg.0.log
Normal X log.
https://bugs.freedesktop.org/show_bug.cgi?id=107655
--- Comment #2 from Sergey Kondakov virtuousfox@gmail.com --- Created attachment 141238 --> https://bugs.freedesktop.org/attachment.cgi?id=141238&action=edit Asus_F3Ke.dmesg
dmesg from affected machine.
https://bugs.freedesktop.org/show_bug.cgi?id=107655
Michel Dänzer michel@daenzer.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #141237|text/x-log |text/plain mime type| |
https://bugs.freedesktop.org/show_bug.cgi?id=107655
Michel Dänzer michel@daenzer.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #141236|text/x-log |text/plain mime type| |
https://bugs.freedesktop.org/show_bug.cgi?id=107655
Michel Dänzer michel@daenzer.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Resolution|--- |NOTOURBUG Status|NEW |RESOLVED
--- Comment #3 from Michel Dänzer michel@daenzer.net --- GCC's libstdc++ code crashes trying to use an instruction not supported by your CPU. You need to report this to your distro.
https://bugs.freedesktop.org/show_bug.cgi?id=107655
Sergey Kondakov virtuousfox@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- URL| |https://bugzilla.opensuse.o | |rg/show_bug.cgi?id=1105608
--- Comment #4 from Sergey Kondakov virtuousfox@gmail.com --- (In reply to Michel Dänzer from comment #3)
GCC's libstdc++ code crashes trying to use an instruction not supported by your CPU. You need to report this to your distro.
So, I've bothered my distro's bugzilla, and gcc's, then figured out why it was crashing: Mesa doesn't like being built with clang/gold and ThinLTO (Mesa doesn't build via gcc with LTO and openSUSE's OBS can't handle gcc's LTO implementation even if it would). I don't know the actual reason of the crash but the guys there figured out that the crash was coming from AVX instruction in Mesa's SWR code. The affected machine does not support any kind of AVX, so it threw out the error. But it's unclear why SWR even been trying to initialize during the load of r300_dri. If built without any {C,LD}FLAGS and with gcc, nothing crashes even with SWR built and installed. And there is no trace of SWR doing things at boot on AVX-capable amdgpu/radeonsi machine even with clang's build.
https://bugs.freedesktop.org/show_bug.cgi?id=107655
Michel Dänzer michel@daenzer.net changed:
What |Removed |Added ---------------------------------------------------------------------------- Assignee|dri-devel@lists.freedesktop |mesa-dev@lists.freedesktop. |.org |org Status|RESOLVED |REOPENED QA Contact|dri-devel@lists.freedesktop |mesa-dev@lists.freedesktop. |.org |org Component|Drivers/Gallium/r300 |Drivers/Gallium/swr Resolution|NOTOURBUG |---
--- Comment #5 from Michel Dänzer michel@daenzer.net --- (In reply to Sergey Kondakov from comment #4)
I don't know the actual reason of the crash but the guys there figured out that the crash was coming from AVX instruction in Mesa's SWR code. The affected machine does not support any kind of AVX, so it threw out the error. But it's unclear why SWR even been trying to initialize during the load of r300_dri.
I think it's the combination of two things:
* All Gallium drivers are linked into a single binary (so-called mega-driver)
* SWR is compiled with AVX support and has initializers which are automatically executed when the above binary is dlopen()ed.
Until there's a solution for this, SWR cannot be enabled in a build which has to run on non-AVX capable CPUs.
dri-devel@lists.freedesktop.org