Skip to content

Illegal instruction in libhostfxr.so #109131

@jpauwels

Description

@jpauwels

I'm trying to install Jellyfin on a fresh install of Debian Bookworm armhf on a Marvel Armada processor.

 $ uname -a
Linux hostname 6.1.0-25-armmp #1 SMP Debian 6.1.106-3 (2024-08-26) armv7l GNU/Linux

$ cat /proc/cpuinfo
processor       : 0
model name      : ARMv7 Processor rev 1 (v7l)
BogoMIPS        : 41.55
Features        : half thumb fastmult vfp edsp thumbee vfpv3 vfpv3d16 tls idivt
CPU implementer : 0x56
CPU architecture: 7
CPU variant     : 0x1
CPU part        : 0x581
CPU revision    : 1

Hardware        : Marvell Armada 370/XP (Device Tree)
Revision        : 0000
Serial          : 0000000000000000

Starting the program fails with an Illegal Instruction. Digging into the build process, it appears that even a simple dotnet --info fails when installed as wget -O- https://dot.net/v1/dotnet-install.sh | bash /dev/stdin --channel 8.0 --install-dir /usr/local/bin.

Checking the coredump reveals that the offending instruction is in libhostfxr.so, but no further info.

# gdb dotnet core
GNU gdb (Debian 13.1-3) 13.1
Copyright (C) 2023 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "arm-linux-gnueabihf".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<https://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from dotnet...
(No debugging symbols found in dotnet)
[New LWP 393]
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/arm-linux-gnueabihf/libthread_db.so.1".
Core was generated by `dotnet --info'.
Program terminated with signal SIGILL, Illegal instruction.
#0  0xb6c86bd8 in ?? () from /usr/local/bin/host/fxr/8.0.10/libhostfxr.so
(gdb) disass
No function contains program counter for selected frame.
(gdb) where
#0  0xb6c86bd8 in ?? () from /usr/local/bin/host/fxr/8.0.10/libhostfxr.so
#1  0xb6c86bd0 in ?? () from /usr/local/bin/host/fxr/8.0.10/libhostfxr.so
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

A Marvell Armada is not the most common ARMv7-a configuration, since it lacks vfpv4 support, but #9969 seems to indicat that vfpv3 should be enough. Besides, the shared library seems to be compiled with vfpv3.

# readelf -A /usr/local/bin/host/fxr/8.0.10/libhostfxr.so
Attribute Section: aeabi
File Attributes
  Tag_CPU_name: "7-A"
  Tag_CPU_arch: v7
  Tag_CPU_arch_profile: Application
  Tag_ARM_ISA_use: Yes
  Tag_THUMB_ISA_use: Thumb-2
  Tag_FP_arch: VFPv3-D16
  Tag_ABI_align_needed: 8-byte
  Tag_ABI_align_preserved: 8-byte, except leaf SP
  Tag_ABI_HardFP_use: Deprecated
  Tag_ABI_VFP_args: VFP registers

Anyone knows what could be going on?

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    Status

    No status

    Milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions