FS#58697 - [lib32-mesa] crashes with illegal instruction vmovq on CPUs without AVX support

Attached to Project: Community Packages
Opened by kinodont (kinodont) - Tuesday, 22 May 2018, 18:46 GMT
Last edited by Laurent Carlier (lordheavy) - Tuesday, 03 July 2018, 09:54 GMT
Task Type Bug Report
Category Packages: Testing
Status Closed
Assigned To Laurent Carlier (lordheavy)
Architecture x86_64
Severity High
Priority Normal
Reported Version
Due in Version Undecided
Due Date Undecided
Percent Complete 100%
Votes 5
Private No

Details

Description:
Any 32-bit application that uses GLX/EGL crashes., e.g. glxinfo32, glxgears32, or eglinfo32. This particular crash happened on r600_dri driver and swrast_dri (llvmpipe).
No such crash was observed on a PC with a CPU that has AVX support. The 64-bit version of mesa does not crash.

Additional info:
lib32-mesa 18.1.0-1

Steps to reproduce:
$ grep avx /proc/cpuinfo | wc -l
0
$ glxinfo32
name of display: :0
Illegal instruction (core dumped)
$ env LIBGL_ALWAYS_SOFTWARE=1 glxgears32
Illegal instruction (core dumped)

The following backtrace was obtained on lib32-mesa compiled with debug
symbols and with -O1 (the crash did not occur without optimizations
enabled):

#0 0x00000000f6e0bf51 SwrJit::X86Intrinsic::X86Intrinsic(SwrJit::X86Intrinsic const&) (r600_dri.so)
#1 0x00000000f6e06e14 __static_initialization_and_destruction_0 (r600_dri.so)
#2 0x00000000f6e0b929 _GLOBAL__sub_I_lower_x86.cpp (r600_dri.so)
#3 0x00000000f7f3c903 call_init.part.0 (ld-linux.so.2)
#4 0x00000000f7f3ca02 _dl_init (ld-linux.so.2)
#5 0x00000000f7f40850 dl_open_worker (ld-linux.so.2)
#6 0x00000000f7c7469a _dl_catch_exception (libc.so.6)
#7 0x00000000f7f400e6 _dl_open (ld-linux.so.2)
#8 0x00000000f7aa4c63 n/a (libdl.so.2)
#9 0x00000000f7c7469a _dl_catch_exception (libc.so.6)
#10 0x00000000f7c74730 _dl_catch_error (libc.so.6)
#11 0x00000000f7aa5401 n/a (libdl.so.2)
#12 0x00000000f7aa4d06 dlopen (libdl.so.2)
#13 0x00000000f7a16335 driOpenDriver (libGLX_mesa.so.0)
#14 0x00000000f7a1e7c5 dri3_create_screen (libGLX_mesa.so.0)
#15 0x00000000f7a0c00e AllocAndFetchScreenConfigs (libGLX_mesa.so.0)
#16 0x00000000f7a07a4f GetGLXPrivScreenConfig (libGLX_mesa.so.0)
#17 0x00000000f7a0817a glXChooseVisual (libGLX_mesa.so.0)
#18 0x00000000565babc3 n/a (glxinfo32)
#19 0x00000000f7b5a141 __libc_start_main (libc.so.6)
#20 0x00000000565bb4cd n/a (glxinfo32)

The attached backtrace from GDB was produced from the same lib32-mesa as the backtrace above.

Disabling swr that was enabled due to https://bugs.archlinux.org/task/53113 produced a working lib32-mesa.
This task depends upon

Closed by  Laurent Carlier (lordheavy)
Tuesday, 03 July 2018, 09:54 GMT
Reason for closing:  Fixed
Additional comments about closing:  lib32-mesa-18.1.2-2
Comment by AK (Andreaskem) - Saturday, 23 June 2018, 19:30 GMT
I encounter the exact same problem. My Laptop does not support AVX (or greater) and starting Steam results in an Illegal Instruction error. Building and installing the lib32-mesa package without swr support (which takes hours on this machine) results in Steam working properly.

I did not re-build the broken version with debug symbols but the limited information available from the Steam backtrace (libraries and order) is pretty much identical to the above:

#0 0xf6adb5b7 in ?? () from /usr/lib32/dri/r600_dri.so
#1 0xf66b17ff in ?? () from /usr/lib32/dri/r600_dri.so
#2 0xf7fe5903 in call_init.part () from /lib/ld-linux.so.2
#3 0xf7fe5a02 in _dl_init () from /lib/ld-linux.so.2
#4 0xf7fe9850 in dl_open_worker () from /lib/ld-linux.so.2
#5 0xf7b2a69a in _dl_catch_exception () from /usr/lib32/libc.so.6
#6 0xf7fe90e6 in _dl_open () from /lib/ld-linux.so.2
#7 0xf7e3ac63 in ?? () from /usr/lib32/libdl.so.2
#8 0xf7b2a69a in _dl_catch_exception () from /usr/lib32/libc.so.6
#9 0xf7b2a730 in _dl_catch_error () from /usr/lib32/libc.so.6
#10 0xf7e3b401 in ?? () from /usr/lib32/libdl.so.2
#11 0xf7e3ad06 in dlopen () from /usr/lib32/libdl.so.2
#12 0xf763a192 in ?? () from /usr/lib32/libGLX_mesa.so.0
#13 0xf7642ef7 in ?? () from /usr/lib32/libGLX_mesa.so.0
#14 0xf762e8d8 in ?? () from /usr/lib32/libGLX_mesa.so.0
#15 0xf7629c06 in ?? () from /usr/lib32/libGLX_mesa.so.0
#16 0xf762ab48 in ?? () from /usr/lib32/libGLX_mesa.so.0
#17 0x565a2f47 in ?? ()
#18 0x565a8853 in CBaseLinuxUpdateUI::BaseCreateWindow() ()
#19 0x565a974e in CXWindowsUpdateUI::BCreateWindow() ()
#20 0x5658d204 in ?? ()
#21 0x56578e2c in ?? ()
#22 0xf7a10141 in __libc_start_main () from /usr/lib32/libc.so.6
#23 0x5657c6d1 in _start ()
Comment by Laurent Carlier (lordheavy) - Sunday, 24 June 2018, 12:35 GMT
It should be fixed with lib32-mesa-18.1.2-2
Comment by AK (Andreaskem) - Wednesday, 27 June 2018, 18:44 GMT
This should not come as a surprise but lib32-mesa-18.1.2-2 works for me. Steam now starts normally and runs fine.

Loading...