From: Stefan Weil <sw@weilnetz.de>
To: Juergen Lock <qemu-l@jelal.kn-bremen.de>,
Jan Kiszka <jan.kiszka@siemens.com>
Cc: Peter Maydell <peter.maydell@linaro.org>,
Dimitry Andric <dim@freebsd.org>,
QEMU Developers <qemu-devel@nongnu.org>,
Andreas Faerber <afaerber@suse.de>
Subject: Re: [Qemu-devel] [PATCH] cpu-exec(): also reload CPUClass *cc after longjmp return
Date: Sat, 05 Oct 2013 20:06:22 +0200 [thread overview]
Message-ID: <5250551E.6020105@weilnetz.de> (raw)
In-Reply-To: <20131005175432.GA25070@enceladus10.kn-bremen.de>
Am 05.10.2013 19:54, schrieb Juergen Lock:
> On Fri, Oct 04, 2013 at 09:15:37AM +0200, Jan Kiszka wrote:
>> On 2013-10-03 18:05, Peter Maydell wrote:
>>> On 3 October 2013 23:09, Juergen Lock <qemu-l@jelal.kn-bremen.de> wrote:
>>>> Local variable CPUClass *cc needs to be reloaded after return from longjmp
>>>> too. (This fixes the mips-softmmu crash observed on FreeBSD when qemu is
>>>> built with clang.)
>>>>
>>>> Signed-off-by: Juergen Lock <nox@jelal.kn-bremen.de>
>>>> Found-by: Dimitry Andric <dim@FreeBSD.org>
>>>>
>>>> --- a/cpu-exec.c
>>>> +++ b/cpu-exec.c
>>>> @@ -681,6 +681,10 @@ int cpu_exec(CPUArchState *env)
>>>> * local variables as longjmp is marked 'noreturn'. */
>>>> cpu = current_cpu;
>>>> env = cpu->env_ptr;
>>>> +#if !(defined(CONFIG_USER_ONLY) && \
>>>> + (defined(TARGET_M68K) || defined(TARGET_PPC) || defined(TARGET_S390X)))
>>>> + cc = CPU_GET_CLASS(cpu);
>>>> +#endif
>>> This is a c compiler or libc bug -- the C standard says that this
>>> local variable should not be trashed by the longjmp. We were
>>> actually discussing removing the current workarounds there...
>> But we didn't decide if we should stop supporting the affected compiler
>> versions.
>>
>> Does this issue also exist with the latest clang version available for
>> your platform?
>>
> It happens with up to date clang as it's in FreeBSD 10.0-current
> which is due for a release soon. I think the clang folks are looking
> into this issue but I don't know if a fix will make it into the
> release... (For now I've added the workaround to the FreeBSD
> qemu-devel port.)
>
> Thanx,
> Juergen
Could you try whether QEMU crashes when it was configured with
TCG interpreter (--enable-tcg-interpreter)? If it does not crash, it
might be that TCG does not save / restore enough registers.
Which register is used for the local variable 'cc'?
Regards,
Stefan
next prev parent reply other threads:[~2013-10-05 18:06 UTC|newest]
Thread overview: 7+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-10-03 14:09 [Qemu-devel] [PATCH] cpu-exec(): also reload CPUClass *cc after longjmp return Juergen Lock
2013-10-03 16:05 ` Peter Maydell
2013-10-04 7:15 ` Jan Kiszka
2013-10-05 17:54 ` Juergen Lock
2013-10-05 18:06 ` Stefan Weil [this message]
2013-10-05 21:45 ` Juergen Lock
2013-10-07 7:28 ` Andreas Färber
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5250551E.6020105@weilnetz.de \
--to=sw@weilnetz.de \
--cc=afaerber@suse.de \
--cc=dim@freebsd.org \
--cc=jan.kiszka@siemens.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=qemu-l@jelal.kn-bremen.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).