Dne 29. 11. 23 v 15:25 Richard Henderson napsal(a): > On 11/25/23 07:08, Petr Cvek wrote: >> ERROR:../accel/tcg/cpu-exec.c:546:cpu_exec_longjmp_cleanup: assertion >> failed: (cpu == current_cpu) >> Bail out! ERROR:../accel/tcg/cpu-exec.c:546:cpu_exec_longjmp_cleanup: >> assertion failed: (cpu == current_cpu) >> # >> >> The code fails either with or without -singlestep, the command line: >> >> /usr/bin/qemu-x86_64 -L /opt/x86_64 -strace -singlestep >> /opt/x86_64/alarm.bin >> >> Source code of QEMU 8.1.1 was modified with patch "[PATCH] qemu/timer: Don't >> use RDTSC on i486" [1], >> with added few ioctls (not relevant) and cpu_exec_longjmp_cleanup() now >> prints current pointers of >> cpu and current_cpu (line "0x48874a != 0x3c69e10"). > > > If you try this again with 8.2-rc2, you should not see an assertion failure. > You should see instead > > QEMU internal SIGILL {code=ILLOPC, addr=0x12345678} > > which I think more accurately summarizes the situation of attempting RDTSC on > hardware that does not support it. > >
Compilation of vanilla qemu v8.2.0-rc2 with -march=i486 by GCC 13.2.0 and running the resulting binary on ryzen still leads to: ** ERROR:../accel/tcg/cpu-exec.c:533:cpu_exec_longjmp_cleanup: assertion failed: (cpu == current_cpu) Bail out! ERROR:../accel/tcg/cpu-exec.c:533:cpu_exec_longjmp_cleanup: assertion failed: (cpu == current_cpu) Aborted > > r~ Petr