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

karogyoker999 karogyoker2 at gmail.com
Thu Oct 13 08:02:33 BST 2022


> According to the developers of libz4-3, the precision of the FPU x87
> registers is not sufficient therefore a libz4-3 package compiled
> without SSE2 would be non-functional.

I think this is just a made-up excuse so they don't have to waste time
on supporting niche 20+ years old hardware.
But it doesn't matter what the real reasons are.
If upstream doesn't want to support a configuration
that is up to them.
What Debian can do is these three things:
1. Use different compiler flags so it will be compiled
without SSE2.
2. If the first approach is not possible (because the
code contains hard-coded unconditional SSE2 assembly code
for example) then patch out these parts of the code.
3. If the second approach requires too much work or
not feasible, then add the sse2-support package as a
dependency.

#1: I'm not sure about that Debian is using the correct
compiler flags when compiling libz3-4 for i386.

For option #2, SIMDEverywhere [1] could be tried.
If replacing emmintrin.h with simde/x86/sse2.h
at [2] solves the issue, that's great.

If both options #1 and #2 fail, then adding the
sse2-support package as a dependency closes this
very issue. To fix the root cause, a new bug
should be opened for the LLVM package to have the
libz3-4 package only as a recommended dependency
(instead of a hard dependency) on i386.

[1]: https://wiki.debian.org/SIMDEverywhere
[2]: https://github.com/Z3Prover/z3/blob/8e0d9bf42def6b89d8ded2dc3652609e8c446183/src/util/hwf.cpp#L56



More information about the Pkg-llvm-team mailing list