Bug#1020802: libz3-4: Xorg crashes on startup due to illegal instruction (SSE2) in libz3-4

Bernhard Übelacker bernhardu at mailbox.org
Sun Oct 9 10:52:20 BST 2022


Dear Maintainer,
tried to have a look at another bug report, but found X not starting up.

I could reproduce this inside a qemu VM started with:
   qemu-system-i386 -enable-kvm -cpu pentium-v1 ...

So due to the current documentation [1] it looks like plain Pentium will
not be supported in bookworm, but cannot say where Pentium Pro gets sorted in.

[1] https://www.debian.org/releases/testing/i386/ch02s01.en.html#idm269


Nevertheless, following are a few more details.

Kind regards,
Bernhard


gdb -q --args X :0
(gdb) run
...
Program received signal SIGILL, Illegal instruction.
0xac3672de in ?? () from /lib/i386-linux-gnu/libz3.so.4
(gdb) bt
#0  0xac3672de in ?? () from /lib/i386-linux-gnu/libz3.so.4
#1  0xb7fcdd6b in call_init (env=0xbffffdd0, argv=0xbffffdc4, argc=2, l=<optimized out>) at ./elf/dl-init.c:70
#2  call_init (l=<optimized out>, argc=2, argv=0xbffffdc4, env=0xbffffdd0) at ./elf/dl-init.c:26
#3  0xb7fcde5c in _dl_init (main_map=<optimized out>, argc=2, argv=0xbffffdc4, env=0xbffffdd0) at ./elf/dl-init.c:117
#4  0xb7fd4d97 in call_dl_init (closure=0xbfffe570) at ./elf/dl-open.c:485
#5  0xb7965934 in __GI__dl_catch_exception (exception=<optimized out>, operate=<optimized out>, args=<optimized out>) at ./elf/dl-error-skeleton.c:182
#6  0xb7fd4d25 in dl_open_worker (a=0xbfffe6b8) at ./elf/dl-open.c:808
#7  0xb79658d7 in __GI__dl_catch_exception (exception=<optimized out>, operate=<optimized out>, args=<optimized out>) at ./elf/dl-error-skeleton.c:208
#8  0xb7fd50c0 in _dl_open (file=0xbfffe98c "/usr/lib/i386-linux-gnu/dri/zink_dri.so", mode=-2147483390, caller_dlopen=0xb713a8a5, nsid=<optimized out>, argc=2, argv=0xbffffdc4, env=0xbffffdd0) at ./elf/dl-open.c:886
#9  0xb787f848 in dlopen_doit (a=0xbfffe91c) at ./dlfcn/dlopen.c:56
#10 0xb79658d7 in __GI__dl_catch_exception (exception=<optimized out>, operate=<optimized out>, args=<optimized out>) at ./elf/dl-error-skeleton.c:208
#11 0xb79659a0 in __GI__dl_catch_error (objname=0xbfffe8d4, errstring=0xbfffe8d8, mallocedp=0xbfffe8d3, operate=0xb787f7d0 <dlopen_doit>, args=0xbfffe91c) at ./elf/dl-error-skeleton.c:227
#12 0xb7fe1df8 in _rtld_catch_error (objname=0xbfffe8d4, errstring=0xbfffe8d8, mallocedp=0xbfffe8d3, operate=0xb787f7d0 <dlopen_doit>, args=0xbfffe91c) at ./elf/dl-error-skeleton.c:260
#13 0xb787f297 in _dlerror_run (operate=<optimized out>, args=<optimized out>) at ./dlfcn/dlerror.c:138
#14 0xb787f918 in dlopen_implementation (dl_caller=<optimized out>, mode=258, file=0xbfffe98c "/usr/lib/i386-linux-gnu/dri/zink_dri.so") at ./dlfcn/dlopen.c:71
#15 ___dlopen (file=0xbfffe98c "/usr/lib/i386-linux-gnu/dri/zink_dri.so", mode=258) at ./dlfcn/dlopen.c:81
#16 0xb713a8a5 in ?? () from /lib/i386-linux-gnu/libgbm.so.1
#17 0xb713aa20 in ?? () from /lib/i386-linux-gnu/libgbm.so.1
#18 0xb7139109 in ?? () from /lib/i386-linux-gnu/libgbm.so.1
#19 0xb7139693 in ?? () from /lib/i386-linux-gnu/libgbm.so.1
#20 0xb713995f in ?? () from /lib/i386-linux-gnu/libgbm.so.1
#21 0xb71377cb in ?? () from /lib/i386-linux-gnu/libgbm.so.1
#22 0xb7137935 in gbm_create_device () from /lib/i386-linux-gnu/libgbm.so.1
#23 0xb714c450 in glamor_egl_init () from /usr/lib/xorg/modules/libglamoregl.so
#24 0xb71a2c03 in ?? () from /usr/lib/xorg/modules/drivers/modesetting_drv.so
#25 0x0048aade in InitOutput ()
#26 0x0044a3c9 in ?? ()
#27 0x00432b2b in ?? ()
#28 0xb78213b5 in __libc_start_call_main (main=main at entry=0x432b00, argc=argc at entry=2, argv=argv at entry=0xbffffdc4) at ../sysdeps/nptl/libc_start_call_main.h:58
#29 0xb782147f in __libc_start_main_impl (main=0x432b00, argc=2, argv=0xbffffdc4, init=0x0, fini=0x0, rtld_fini=0xb7fcd930 <_dl_fini>, stack_end=0xbffffdbc) at ../csu/libc-start.c:389
#30 0x00432b67 in _start ()
(gdb) display/i $pc
1: x/i $pc
=> 0xac3672de:  pxor   %xmm0,%xmm0


With libz3-4-dbgsym:

Core was generated by `/usr/lib/xorg/Xorg :0'.
Program terminated with signal SIGILL, Illegal instruction.
#0  std::__mutex_base::__mutex_base (this=0x6f3fe0) at /usr/include/c++/12/bits/std_mutex.h:65

warning: Source file is more recent than executable.
65          constexpr __mutex_base() noexcept = default;
(gdb) bt 5
#0  std::__mutex_base::__mutex_base (this=0x6f3fe0) at /usr/include/c++/12/bits/std_mutex.h:65
#1  std::mutex::mutex (this=0x6f3fe0) at /usr/include/c++/12/bits/std_mutex.h:91
#2  __static_initialization_and_destruction_0 (__initialize_p=1, __priority=65535) at ./src/util/memory_manager.cpp:39
#3  _GLOBAL__sub_I_memory_manager.cpp(void) () at ./src/util/memory_manager.cpp:373
#4  0xb7fcdd6b in call_init (env=0xbffffdd0, argv=0xbffffdc4, argc=2, l=<optimized out>) at ./elf/dl-init.c:70
(More stack frames follow...)


(Same issue also for kms_swrast_dri.so and swrast_dri.so.)


And came also to this closed upstream issue:
   https://github.com/Z3Prover/z3/issues/6369


A workaround might be to move these files out of /usr/lib/i386-linux-gnu/dri:
   kms_swrast_dri.so
   swrast_dri.so
   zink_dri.so
(Or get it some other way not loaded by Xorg.)



More information about the Pkg-llvm-team mailing list