From: Peter Maydell <peter.maydell@linaro.org>
To: Michael Matz <matz@suse.de>
Cc: linaro-dev <linaro-dev@lists.linaro.org>,
"Dann Frazier" <dann.frazier@canonical.com>,
"Alexander Graf" <agraf@suse.de>,
"linaro-toolchain@lists.linaro.org"
<linaro-toolchain@lists.linaro.org>,
qemu-devel <qemu-devel@nongnu.org>,
"Wook Wookey" <wookey@linaro.org>,
"Alex Bennée" <alex.bennee@linaro.org>,
"Christoffer Dall" <Christoffer.Dall@linaro.org>
Subject: Re: [Qemu-devel] Call for testing QEMU aarch64-linux-user emulation
Date: Fri, 14 Mar 2014 14:20:25 +0000 [thread overview]
Message-ID: <CAFEAcA-i_hV6DdtZphbY5XFMaGNBn6FjNS3RV7X36cty2A1TQw@mail.gmail.com> (raw)
In-Reply-To: <alpine.LNX.2.00.1402271403280.7694@wotan.suse.de>
On 27 February 2014 13:20, Michael Matz <matz@suse.de> wrote:
> On Wed, 26 Feb 2014, Dann Frazier wrote:
>> I've narrowed down the changes that seem to prevent both types of
>> segfaults to the following changes that introduce a wrapper around
>> sigprocmask:
>>
>> https://github.com/susematz/qemu/commit/f1542ae9fe10d5a241fc2624ecaef5f0948e3472
>> https://github.com/susematz/qemu/commit/4e5e1607758841c760cda4652b0ee7a6bc6eb79d
>> https://github.com/susematz/qemu/commit/63eb8d3ea58f58d5857153b0c632def1bbd05781
>>
>> I'm not sure if this is a real fix or just papering over my issue -
I've cleaned up these a bit (and added a bunch of missing
wrapper calls) and am testing them now. I'll post them to
qemu-devel when that's done.
> It's fixing the issue, but strictly speaking introduces an QoI problem.
> SIGSEGV must not be controllable by the guest, it needs to be always
> deliverable to qemu; that is what's fixed.
>
> The QoI problem introduced is that with the implementation as is, the
> fiddling with SIGSEGV is detectable by the guest. E.g. if it installs a
> segv handler, blocks segv, then forces a segfault, checks that it didn't
> arrive, then unblocks segv and checks that it now arrives, such testcase
> would be able to detect that in fact it couldn't block SIGSEGV.
My rework opts to track with a flag whether SIGSEGV is blocked
by the guest or not; this is fairly straightforward.
> To fix also that latter part it'd need a further per-thread flag
> segv_blocked_p which needs to be checked before actually delivering a
> guest-directed SIGSEGV (in comparison to a qemu-directed SEGV), and
> otherwise requeue it. That's made a bit complicated when the SEGV was
> process-directed (not thread-directed) because in that case it needs to be
> delivered as long as there's _any_ thread which has it unblocked. So
> given the above undefinedness for sane uses of SEGVs it didn't seem worth
> the complication of having an undetectable virtualization of SIGSEGV.
I don't bother to emulate to this level though -- if we get a guest
directed SIGSEGV and the target has it blocked then we assume it was
a from-the-kernel SEGV (ie guest dereferenced NULL or similar) and
treat it as the kernel force_sig_info() does: behave as if the
default SEGV handler was installed. This seems a reasonable compromise
since I assume people don't typically go around sending manual SEGVs
to other processes and threads.
thanks
-- PMM
next prev parent reply other threads:[~2014-03-14 14:20 UTC|newest]
Thread overview: 27+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-02-17 13:40 [Qemu-devel] Call for testing QEMU aarch64-linux-user emulation Alex Bennée
2014-02-24 13:01 ` Janne Grunau
2014-02-25 15:54 ` Alex Bennée
2014-02-25 17:11 ` Janne Grunau
2014-03-06 11:40 ` Alex Bennée
2014-03-06 16:04 ` Janne Grunau
2014-02-24 20:58 ` Dann Frazier
2014-02-25 8:39 ` Alex Bennée
2014-02-25 8:49 ` Andreas Färber
2014-02-25 13:33 ` Michael Matz
2014-02-25 13:46 ` Peter Maydell
2014-02-25 14:56 ` Michael Matz
2014-02-28 14:12 ` Alex Bennée
2014-02-28 14:21 ` Peter Maydell
2014-02-28 14:27 ` Alexander Graf
2014-02-28 14:49 ` Peter Maydell
2014-02-28 17:08 ` Alex Bennée
2014-02-28 17:17 ` Peter Maydell
2014-02-26 22:06 ` Dann Frazier
2014-02-27 13:20 ` Michael Matz
2014-02-27 19:47 ` Dann Frazier
2014-03-14 14:20 ` Peter Maydell [this message]
2014-03-09 23:37 ` Dann Frazier
2014-03-09 23:51 ` Peter Maydell
2014-03-10 11:28 ` Alex Bennée
2014-03-10 11:45 ` Peter Maydell
2014-03-10 13:56 ` Michael Matz
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=CAFEAcA-i_hV6DdtZphbY5XFMaGNBn6FjNS3RV7X36cty2A1TQw@mail.gmail.com \
--to=peter.maydell@linaro.org \
--cc=Christoffer.Dall@linaro.org \
--cc=agraf@suse.de \
--cc=alex.bennee@linaro.org \
--cc=dann.frazier@canonical.com \
--cc=linaro-dev@lists.linaro.org \
--cc=linaro-toolchain@lists.linaro.org \
--cc=matz@suse.de \
--cc=qemu-devel@nongnu.org \
--cc=wookey@linaro.org \
/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).