[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [BUG] accel/tcg: cpu_exec_longjmp_cleanup: assertion failed: (cpu ==
|
From: |
Petr Cvek |
|
Subject: |
Re: [BUG] accel/tcg: cpu_exec_longjmp_cleanup: assertion failed: (cpu == current_cpu) |
|
Date: |
Wed, 29 Nov 2023 14:59:08 +0100 |
|
User-agent: |
Mozilla Thunderbird |
Dne 27. 11. 23 v 10:37 Peter Maydell napsal(a):
> On Sat, 25 Nov 2023 at 13:09, Petr Cvek <petrcvekcz@gmail.com> wrote:
>>
>> It seems there is a bug in SIGALRM handling when 486 system emulates x86_64
>> code.
>
> 486 host is pretty well out of support currently. Can you reproduce
> this on a less ancient host CPU type ?
>
It seems it only fails when the code is compiled for i486. QEMU built with the
same compiler with -march=i586 and above runs on the same physical hardware
without a problem. All -march= variants were executed on ryzen 3600.
>> 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)
>> 0x48874a != 0x3c69e10
>> **
>> 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)
>
> What compiler version do you build QEMU with? That
> assert is there because we have seen some buggy compilers
> in the past which don't correctly preserve the variable
> value as the setjmp/longjmp spec requires them to.
>
i486 and i586+ code variants were compiled with GCC 13.2.0 (more exactly,
slackware64 current multilib distribution).
i486 binary which runs on the real 486 is also GCC 13.2.0 and installed as a
part of the buildroot crosscompiler (about two week old git snapshot).
> thanks
> -- PMM
best regards,
Petr