qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] Use special code for sigsetjmp only in cpu-exec


From: Stefan Weil
Subject: Re: [Qemu-devel] [PATCH] Use special code for sigsetjmp only in cpu-exec.c
Date: Tue, 1 Mar 2016 12:54:49 +0100
User-agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:38.0) Gecko/20100101 Thunderbird/38.6.0

Am 01.03.2016 um 10:59 schrieb Peter Maydell:
> On 1 March 2016 at 05:07, Stefan Weil <address@hidden> wrote:
>> The rest of the code can use longjmp with stack unwinding.
>>
>> Signed-off-by: Stefan Weil <address@hidden>
>> ---
>>
>> 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 via email to

[Prev in Thread] Current Thread [Next in Thread]