[Pkg-rust-maintainers] Bug#976374: Bug#973414: libmozjs-78-0: invalid opcodes when launching GDM on AMD Geode

Martin-Éric Racine martin-eric.racine at iki.fi
Thu Dec 10 19:43:18 GMT 2020


to 10. jouluk. 2020 klo 21.21 Simon McVittie (smcv at debian.org) kirjoitti:
> On Thu, 10 Dec 2020 at 20:02:42 +0200, Martin-Éric Racine wrote:
> > Core was generated by `/usr/bin/gnome-shell'.
> > Program terminated with signal SIGILL, Illegal instruction.
> > #0  0xb5500d08 in compiler_builtins::int::udiv::__udivmoddi4 () from
> > /usr/lib/i386-linux-gnu/libmozjs-78.so.0
> > [Current thread is 1 (Thread 0xb15c9b40 (LWP 861))]
> > (gdb) bt full
> > #0  0xb5500d08 in compiler_builtins::int::udiv::__udivmoddi4 () from
> > /usr/lib/i386-linux-gnu/libmozjs-78.so.0
> > No symbol table info available.
>
> This looks like Rust code, presumably compiled from something like
> https://sources.debian.org/src/rustc/1.48.0+dfsg1-1/vendor/compiler_builtins/src/int/udiv.rs/
>
> Debian's rustc has a patch to reduce the i386 baseline from upstream's
> pentium4 to pentiumpro
> https://sources.debian.org/src/rustc/1.48.0+dfsg1-1/debian/patches/d-i686-baseline.patch/
> but apparently that's not sufficient for a Geode LX. i686 is in a weird
> situation where the Pentium Pro was the *first* i686 CPU, but is not a
> *baseline* i686 CPU.
>
> Presumably the root cause of #976374 in librsvg, which also contains
> Rust code, is the same.

I cannot help but wonder what platform defaults GCC uses on i386.
Given how the baseline kernel for i386 (linux-image-686 i.e. Linux for
older PCs) is configured for Geode LX, I would presume the GCC
defaults are aligned to match. AFAIK that kernel is compiled for Geode
and for Generic 686, which I presume means only using the flags that
intersect both CPU variants. It might be a good starting point for the
Rust compiler too.

> There has been discussion on the debian-release mailing list about the
> extent to which 32-bit x86 can be supported in the future, which might
> be relevant to your interests. It seems unlikely that i386 will survive
> as a full port providing a bootable system for the benefit of older
> hardware like the Geode unless there are enough volunteers for an i386
> porting team with knowledge of its quirks (i387 FPU, etc.) to be able
> to fix things like this.

I was suspecting this discussion would take place sooner or later.
>From this perspective, I wouldn't be surprised if Bullseye were the
last Debian release to support non-PAE 686.

This being said, if anyone asks me, non-PAE 686 ought to be a good
enough baseline for i386. Most people who need something faster have
moved onto amd64 or some other 64-bit platform. Meanwhile, i386 very
much implies old hardware. As such, rising the baseline CPU would
needlessly kill the usefulness of the port. Doubly so considering that
Debian is pretty much the last distro that installs on a Geode LX out
of the box.

Martin-Éric



More information about the Pkg-rust-maintainers mailing list