blob: 2315f3be4dfcc598e5d3327946dd26b24182a7da (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
|
qemu 4.2.0 arm segmentation fault with gcc 9.2
As discussed with f4bug yesterday on IRC here comes the bug description.
I'm building/configured qemu-4.2.0 on an x86_64 (gcc (Debian 6.3.0-18+deb9u1) 6.3.0 20170516) with target-list "arm-softmmu,arm-linux-user" and debug enabled. I use the arm-linux-user variant, "qemu-arm".
Then i'm trying to cross-compile (arm gcc) an old version of googles v8 (as i need this version of the lib for binary compatibility) which uses qemu during build.
It worked with gcc 5.4.0 but not with 9.2.0. I also tried with 6.5.0, 7.4.0 and 8.3.0 but those are also causing the same segmentation fault.
The executed command wich breaks qemu is:
qemu-arm /tmp/build/out/arm.release/mksnapshot.arm --log-snapshot-positions --logfile /tmp/build/out/arm.release/obj.host/v8_snapshot/geni/snapshot.log --random-seed 314159265 /tmp/build/out/arm.release/obj.host/v8_snap
The printed error message is:
ARMv7=1 VFP3=1 VFP32DREGS=1 NEON=0 SUDIV=0 UNALIGNED_ACCESSES=1 MOVW_MOVT_IMMEDIATE_LOADS=0 USE_EABI_HARDFLOAT=1
qemu: uncaught target signal 11 (Segmentation fault) - core dumped
Calling qemu with gdb gives the following information:
Thread 1 "qemu-arm" received signal SIGSEGV, Segmentation fault.
0x0000555555d63d11 in static_code_gen_buffer ()
and
(gdb) bt
#0 0x0000555555d63d11 in static_code_gen_buffer ()
#1 0x0000555555628d58 in cpu_tb_exec (itb=<optimized out>, cpu=0x555557c33930) at
/tmp/build/qemu/accel/tcg/cpu-exec.c:172
#2 cpu_loop_exec_tb (tb_exit=<synthetic pointer>, last_tb=<synthetic pointer>, tb=<optimized out>,
cpu=0x555557c33930) at /tmp/build/qemu/accel/tcg/cpu-exec.c:618
#3 cpu_exec (cpu=cpu@entry=0x555557c2b660) at /tmp/build/qemu/accel/tcg/cpu-exec.c:731
#4 0x0000555555661578 in cpu_loop (env=0x555557c33930) at /tmp/build/qemu/linux-user/arm/cpu_loop.c:219
#5 0x00005555555d6d76 in main (argc=<optimized out>, argv=<optimized out>, envp=<optimized out>) at /tmp/build/qemu/linux-user/main.c:865
Calling qemu-arm with debug switch "-d in_asm,int,op_opt" shows the log in the attached file.
Thanks for any hints!
Fabian
|