qemu-devel.nongnu.org archive mirror
 help / color / mirror / Atom feed
From: Stefan Weil <sw@weilnetz.de>
To: Peter Maydell <peter.maydell@linaro.org>
Cc: Paolo Bonzini <pbonzini@redhat.com>,
	Peter Crosthwaite <crosthwaite.peter@gmail.com>,
	QEMU Developer <qemu-devel@nongnu.org>,
	Andrew Baumann <Andrew.Baumann@microsoft.com>,
	Richard Henderson <rth@twiddle.net>
Subject: Re: [Qemu-devel] [PATCH] Use special code for sigsetjmp only in cpu-exec.c
Date: Tue, 1 Mar 2016 12:54:49 +0100	[thread overview]
Message-ID: <56D58309.10206@weilnetz.de> (raw)
In-Reply-To: <CAFEAcA-juCnm=-MnTZx+e481GtjLDP0SAk7Wmyo54nKUjh0Z3w@mail.gmail.com>

Am 01.03.2016 um 10:59 schrieb Peter Maydell:
> On 1 March 2016 at 05:07, Stefan Weil <sw@weilnetz.de> wrote:
>> The rest of the code can use longjmp with stack unwinding.
>>
>> Signed-off-by: Stefan Weil <sw@weilnetz.de>
>> ---
>>
>> This is a bug fix needed for 64 bit Windows.
>>
>> QEMU for Windows currently gets the wrong definition for
>> sigsetjmp. It uses stack unwinding for longjmp which results
>> in a crash when it is called from generated code.
>>
>> Thanks to Andrew Baumann for his reminder that this patch was
>> still missing. Andrew, could you please test it with your
>> RPi emulation?
> I don't understand this patch. Why doesn't it work to have
> sigsetjmp() be implemented the same way for every use that
> QEMU makes of it?
>
> thanks
> -- PMM

It does, as long as the "same way" is the correct one, namely
the one without stack unwinding.

The current code used to work, but re-arranged include files
broke the working code somewhere in the past:

include/sysemu/os-win32.h does the right thing at the
wrong place. Its correct definition of sigsetjmp is overwritten by
the definition from a Mingw-w64 system header file which
triggers stack unwinding. Stack unwinding is fatal for
QEMU's generated code.

My patch makes sure that the critical code in cpu-exec.c
gets the correct definition of sigsetjmp.

In addition, it removes code which might or might not
change the default definition of sigsetjmp (depending
on the order of include files). Now all other files beside
cpu-exec.c will use the default behaviour with stack
unwinding.

Regards,
Stefan

  reply	other threads:[~2016-03-01 11:54 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-03-01  5:07 [Qemu-devel] [PATCH] Use special code for sigsetjmp only in cpu-exec.c Stefan Weil
2016-03-01  6:23 ` Andrew Baumann
2016-03-01  9:59 ` Peter Maydell
2016-03-01 11:54   ` Stefan Weil [this message]
2016-03-01 12:22     ` Peter Maydell
2016-03-01 13:15       ` Stefan Weil
2016-03-01 17:46         ` Andrew Baumann
2016-03-01 17:53           ` Paolo Bonzini
2016-03-01 17:54             ` Peter Maydell
2016-03-01 19:08               ` Stefan Weil

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=56D58309.10206@weilnetz.de \
    --to=sw@weilnetz.de \
    --cc=Andrew.Baumann@microsoft.com \
    --cc=crosthwaite.peter@gmail.com \
    --cc=pbonzini@redhat.com \
    --cc=peter.maydell@linaro.org \
    --cc=qemu-devel@nongnu.org \
    --cc=rth@twiddle.net \
    /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).