Hello,
I am trying to run spec intrate with qemu-x86_64 and it seems to fail
with an 'Illegal Instruction' error. I tried compiling with an ancient
architecture (-march=core2/athlon64) and this error persists.
Is this a known issue? Are there any workarounds?
Trace 0: 0x7fffe806fd40 [00000000/000000000050d8d6/1040c0b3/00000000]
Perl_sv_upgrade
----------------
IN: Perl_sv_upgrade
0x0050d8dc: c5 f9 ef c0 vpxor %xmm0, %xmm0, %xmm0
0x0050d8e0: 48 83 c2 10 addq $0x10, %rdx
0x0050d8e4: 62 .byte 0x62
0x0050d8e5: f1 int1
[0/92921]
OUT: [size=128]
-- guest addr 0x000000000050d8dc + tb prologue
0x7fffe806fec0: 8b 5d ec movl -0x14(%rbp), %ebx
0x7fffe806fec3: 85 db testl %ebx, %ebx
0x7fffe806fec5: 0f 8c 5d 00 00 00 jl 0x7fffe806ff28
0x7fffe806fecb: c6 45 f0 00 movb $0, -0x10(%rbp)
0x7fffe806fecf: c5 f9 ef c0 vpxor %xmm0, %xmm0, %xmm0
0x7fffe806fed3: c5 f9 7f 85 60 03 00 00 vmovdqa %xmm0, 0x360(%rbp)
0x7fffe806fedb: c5 f9 7f 85 70 03 00 00 vmovdqa %xmm0, 0x370(%rbp)
-- guest addr 0x000000000050d8e0
0x7fffe806fee3: 48 8b 5d 10 movq 0x10(%rbp), %rbx
0x7fffe806fee7: 48 83 c3 10 addq $0x10, %rbx
0x7fffe806feeb: 48 89 5d 10 movq %rbx, 0x10(%rbp)
0x7fffe806feef: 48 89 9d 90 00 00 00 movq %rbx, 0x90(%rbp)
0x7fffe806fef6: 48 c7 85 98 00 00 00 10 movq $0x10, 0x98(%rbp)
0x7fffe806fefe: 00 00 00
0x7fffe806ff01: c6 45 f0 01 movb $1, -0x10(%rbp)
-- guest addr 0x000000000050d8e4
0x7fffe806ff05: c7 85 a8 00 00 00 0b 00 movl $0xb, 0xa8(%rbp)
0x7fffe806ff0d: 00 00
0x7fffe806ff0f: 48 c7 85 80 00 00 00 e4 movq $0x50d8e4, 0x80(%rbp)
0x7fffe806ff17: d8 50 00
0x7fffe806ff1a: be 06 00 00 00 movl $6, %esi
0x7fffe806ff1f: 48 8b fd movq %rbp, %rdi
0x7fffe806ff22: ff 15 10 00 00 00 callq *0x10(%rip)
0x7fffe806ff28: 48 8d 05 d4 fe ff ff leaq -0x12c(%rip), %rax
0x7fffe806ff2f: e9 e4 00 f9 ff jmp 0x7fffe8000018
-- tb slow paths + alignment
0x7fffe806ff34: 90 nop
0x7fffe806ff35: 90 nop
0x7fffe806ff36: 90 nop
0x7fffe806ff37: 90 nop
data: [size=8]
0x7fffe806ff38: .quad 0x000055555564a472
Linking TBs 0x7fffe806fd40 index 1 -> 0x7fffe806fec0
Trace 0: 0x7fffe806fec0 [00000000/000000000050d8dc/1040c0b3/00000000]
Perl_sv_upgrade
qemu: uncaught target signal 4 (Illegal instruction) - core dumped
Thread 1 "qemu-x86_64" received signal SIGILL, Illegal instruction.
__syscall_cancel_arch () at
../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
warning: 56 ../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S: No
such file or directory
(gdb) layout asm
(gdb) f 1
#1 0x00007ffff7249668 in __internal_syscall_cancel (a1=<optimized
out>, a2=a2@entry=8, a3=a3@entry=0, a4=a4@entry=0, a5=a5@entry=0,
a6=a6@entry=0, nr=130) at ./nptl/cancellation.c:49
warning: 49 ./nptl/cancellation.c: No such file or directory
(gdb) f 0
#0 __syscall_cancel_arch () at
../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
warning: 56 ../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S: No
such file or directory
(gdb) bt
#0 __syscall_cancel_arch () at
../sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S:56
#1 0x00007ffff7249668 in __internal_syscall_cancel (a1=<optimized
out>, a2=a2@entry=8, a3=a3@entry=0, a4=a4@entry=0, a5=a5@entry=0,
a6=a6@entry=0, nr=130) at ./nptl/cancellation.c:49
#2 0x00007ffff72496ad in __syscall_cancel (a1=<optimized out>,
a2=a2@entry=8, a3=a3@entry=0, a4=a4@entry=0, a5=a5@entry=0,
a6=a6@entry=0, nr=130) at ./nptl/cancellation.c:75
#3 0x00007ffff71fa07d in __GI___sigsuspend (set=<optimized out>) at
../sysdeps/unix/sysv/linux/sigsuspend.c:26
#4 0x00005555556ccef1 in die_with_signal (host_sig=4) at
../linux-user/signal.c:807
#5 0x00005555556cd065 in dump_core_and_abort (env=0x5555559466e0,
target_sig=4) at ../linux-user/signal.c:847
#6 0x00005555556ce2c4 in handle_pending_signal
(cpu_env=0x5555559466e0, sig=4, k=0x55555595e490) at
../linux-user/signal.c:1306
#7 0x00005555556ce5ed in process_pending_signals
(cpu_env=0x5555559466e0) at ../linux-user/signal.c:1386
#8 0x00005555556352c7 in cpu_loop (env=0x5555559466e0) at
../linux-user/x86_64/../i386/cpu_loop.c:323
#9 0x00005555556c72af in main (argc=15, argv=0x7fffffffdaa8,
envp=0x7fffffffdb28) at ../linux-user/main.c:1035
--
Pranith