QEMU crashes on ARMv7 since at least commit 493c9b19
Host environment
- Operating system: Android
- OS/kernel version: ?
- Architecture: ARMv7a
- QEMU flavor: qemu-system-x86_64 / qemu-system-i386
- QEMU version: 7.2.50 .. 8.0.0 .. 8.0.2 .. master
- QEMU command line:
qemu-system-i386 -smp 2,cores=1,threads=2 -M pc -cpu n270 -m 640
-drive index=2,media=cdrom,file=/path/to/image/gimp2.iso -boot order=d
-overcommit mem-lock=off -nodefaults -machine acpi=off -machine hpet=off
-accel tcg,thread=single,tb-size=256
Emulated/Virtualized environment
- Operating system: TinyCore Linux 12
- OS/kernel version: 5.10.3
- Architecture: x86
Description of problem
I'm trying to build QEMU for Android, Arm64 versions work well, but Armv7 builds began to crash nearly since this series of commits (QEMU 7.2.50), related to 'TCG_TARGET_HAS_direct_jump' removal by @rth7680. More precisely, this commit still works:
and this one crashes:
(I tracked commits of 'tcg' subfolder and didn't bisect finer, but it's possible if needed).
Both qemu-system-x86_64 and qemu-system-i386 emulators crash.
The crash is related to translation buffer size : if I don't specify "-accel tcg,thread=single ,tb-size=256 ", the machine works.
The problem is that I can not run debugger on a phone, and crash dump does not show any useful information, just "segfault" reason ("Fatal signal 11 (SIGSEGV), code 2 (SEGV_ACCERR), fault addr 0xe19b8000").
Even more, the Linux starts and runs, but it crashes only when I'm trying to run the GIMP, between splash screen and main interface appearance.
I know that 1) Android is not officially supported and 2) 32-bit hosts were considered deprecated recently, but maybe it's possible to do something with these crashes?
Recent master (5692a39f) doesn't work as well. All 8.0.x Arm64 builds are runnable.
Thanks in advance.