godotengine / godotengine/godot
[3.x] Illegal instruction when running the arm32 binaries on some boards
- Dominant language
- C++
- Stars
- 117k
- Forks
- 26.8k
- PR merge metrics
- PR metrics pending
Description
### Tested versions
- Reproducible in: 3.6.1-stable (template) / 3.6.2-stable (editor)
- Non-reproducible in: none - as far as I can remember it happens since the first arm32 release
### System information
Raspberry Pi 2 and Orange Pi PC (H3)
### Issue description
I am not sure if this comes from policy (start the official support from a specific board), or it is just an oversight.
Running the Godot 3.6.1-stable arm32 template:
$ linux_x11_arm32_release --version
prints:
3.6.1.stable.official.b1ba98fce
on a Raspberry Pi 3+ (as expected)
cat /proc/cpuinfo (abridged)
model name : ARMv7 Processor rev 4 (v7l)
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm crc32
Hardware : BCM2835
Revision : a020d3
Model : Raspberry Pi 3 Model B Plus Rev 1.3
But:
Illegal instruction
on a Raspberry Pi 2
cat /proc/cpuinfo (abridged)
model name : ARMv7 Processor rev 5 (v7l)
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
Hardware : BCM2835
Revision : a01041
Model : Raspberry Pi 2 Model B Rev 1.1
and on an Orange Pi PC (H3)
cat /proc/cpuinfo (abridged)
model name : ARMv7 Processor rev 5 (v7l)
Features : half thumb fastmult vfp edsp neon vfpv3 tls vfpv4 idiva idivt vfpd32 lpae evtstrm
Hardware : Allwinner sun8i Family
Both Pi 3B+ and 2B are running Raspberry Pi OS (trixie, same SD Card), and the Orange Pi is running armbian (trixie). Not trixie-related, as I remember having the same problem at least on bookworm.
Same with 3.6.2 (I tested the editor on the Orange Pi), but it goes back as far as I can remember.
### Steps to reproduce
I suppose you need one of these boards, but qemu might be enough. It happens before opening the display.
### Minimal reproduction project (MRP)
Not needed. Just running with ' --version' outside of a project is enough.
Contributor guide
Research direction
Start by reproducing the arm32 release with `--version` on the Raspberry Pi 2 and Orange Pi PC, then compare it with the working Raspberry Pi 3+ binary; QEMU may also be useful. Investigate the arm32 release's instruction requirements, and consider the issue resolved when the binary runs without an illegal instruction on the affected boards.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- linux, raspberry-pi
- Domain
- embedded-iot, operating-systems
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100