Bug#1021926: clang-14 fails to run with "Illegal Instruction" at i386 (pre SSE2), is linking to libz3 really needed.

2022-10-21 Thread Bernhard Übelacker

Dear Maintainer,
in the meantime there got a merge request [1] accepted to libz3-4,
which might solve this issue by avoiding sse2 instructions,
and is still awaiting an upload to unstable.

[1] https://salsa.debian.org/pkg-llvm-team/z3/-/merge_requests/9

Kind regards,
Bernhard



Bug#1021926: clang-14 fails to run with "Illegal Instruction" at i386 (pre SSE2), is linking to libz3 really needed.

2022-10-17 Thread Bernhard Übelacker

Package: clang-14
Version: 1:14.0.6-2
Severity: normal
X-Debbugs-Cc: bernha...@mailbox.org


Dear Maintainer,
clang-14 is currently not able to run at a pre-SSE2 cpu.

This is because clang-14 links to libLLVM-14.so.1 which links to libz3.so.4.
Unfortunately libz3-4 is currently compiled with sse2 enabled,
making even the static initialization functions using such instructions.

This static initialization also affects other programs as Xorg via Mesa [2],
lightdm [3] or kalgebra, and maybe all that links somehow to libLLVM-14.so.


As upstream "does not want" libz3-4 to be compiled without sse2 enabled [1],
this bug report might be used to clarify if libLLVM-14 really needs to link
with libz3 at i386, as there is an option to just disable it (which would
get used for old libz3 versions or when compiling for Ubuntu) [5].

What would be the downsides for i386 dropping libz3 usage,
until Debian i386 baseline is raised to require sse2 cpu support?

Kind regards
Bernhard


[1] https://github.com/Z3Prover/z3/issues/6369#issuecomment-1259419466
[2] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1020802
[3] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1020516
[4] https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1016658
[5] 
https://sources.debian.org/src/llvm-toolchain-14/1%3A14.0.6-5/debian/rules/#L111
[6] 
https://sources.debian.org/src/llvm-toolchain-14/1%3A14.0.6-5/debian/changelog/#L2618


$ clang-14
Ungültiger Maschinenbefehl (Speicherabzug geschrieben)

$ libtree /usr/bin/clang-14
/usr/bin/clang-14
├── libLLVM-14.so.1 [ld.so.conf]
│   ├── libz3.so.4 [ld.so.conf]
...

# coredumpctl gdb
...
Executable: /usr/lib/llvm-14/bin/clang
...
Module libz3.so.4 with build-id 
4299dc7fc78e26403fe929ee917098aea874c694
...
Module libLLVM-14.so.1 with build-id 
cb6ea80210dda487742b87e116cb7c646a58024e
...
Core was generated by `clang-14'.
Program terminated with signal SIGILL, Illegal instruction.
#0  0xab1672de in ?? () from /lib/i386-linux-gnu/libz3.so.4
(gdb) bt
#0  0xab1672de in ?? () from /lib/i386-linux-gnu/libz3.so.4
#1  0xb7f62d6b in call_init (env=0xbfda8edc, argv=0xbfda8ed4, argc=1, l=) at ./elf/dl-init.c:70
#2  call_init (l=, argc=1, argv=0xbfda8ed4, env=0xbfda8edc) at 
./elf/dl-init.c:26
#3  0xb7f62e5c in _dl_init (main_map=, argc=1, argv=0xbfda8ed4, 
env=0xbfda8edc) at ./elf/dl-init.c:117
#4  0xb7f796aa in _dl_start_user () from /lib/ld-linux.so.2

# with libz3-4-dbgsym
(gdb) bt
#0  std::__mutex_base::__mutex_base (this=0x914dbb0) at 
/usr/include/c++/12/bits/std_mutex.h:65
#1  std::mutex::mutex (this=0x914dbb0) 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  0xb7f62d6b in call_init (env=0xbfda8edc, argv=0xbfda8ed4, argc=1, l=) at ./elf/dl-init.c:70
#5  call_init (l=, argc=1, argv=0xbfda8ed4, env=0xbfda8edc) at 
./elf/dl-init.c:26
#6  0xb7f62e5c in _dl_init (main_map=, argc=1, argv=0xbfda8ed4, 
env=0xbfda8edc) at ./elf/dl-init.c:117
#7  0xb7f796aa in _dl_start_user () from /lib/ld-linux.so.2
(gdb) display/i $pc
1: x/i $pc
=> 0xab1672de <_GLOBAL__sub_I_memory_manager.cpp(void)+62>: pxor   
%xmm0,%xmm0



(Could be reproduced in qemu VM by using
a non-pae kernel,
no kvm acceleration,
and e.g. "qemu-system-i386 -cpu pentium2-v1 ...".)





-- System Information:
Debian Release: bookworm/sid
  APT prefers testing-debug
  APT policy: (500, 'testing-debug'), (500, 'testing')
Architecture: i386 (i686)

Kernel: Linux 5.19.0-2-686 (SMP w/16 CPU threads; PREEMPT)
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8), LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled

Versions of packages clang-14 depends on:
ii  binutils2.39-8
ii  libatomic1  12.2.0-3
ii  libc6   2.35-3
ii  libc6-dev   2.35-3
ii  libclang-common-14-dev  1:14.0.6-2
ii  libclang-cpp14  1:14.0.6-2
ii  libclang1-141:14.0.6-2
ii  libgcc-12-dev   12.2.0-3
ii  libgcc-s1   12.2.0-3
ii  libllvm14   1:14.0.6-2
ii  libobjc-12-dev  12.2.0-3
ii  libstdc++-12-dev12.2.0-3
ii  libstdc++6  12.2.0-3
ii  llvm-14-linker-tools1:14.0.6-2

Versions of packages clang-14 recommends:
ii  llvm-14-dev  1:14.0.6-2
ii  python3  3.10.6-1

Versions of packages clang-14 suggests:
pn  clang-14-doc  

-- no debconf information
Thank you for using reportbug