From: "Alex Bennée" <alex.bennee@linaro.org>
To: "Julian Ganz" <neither@nut.email>
Cc: qemu-devel@nongnu.org,
"Pierrick Bouvier" <pierrick.bouvier@linaro.org>,
"Alexandre Iooss" <erdnaxe@crans.org>,
"Mahmoud Mandour" <ma.mandourr@gmail.com>,
Richard Henderson <richard.henderson@linaro.org>
Subject: Re: [PATCH v6 23/25] tests: add plugin asserting correctness of discon event's to_pc
Date: Thu, 25 Sep 2025 11:41:45 +0100 [thread overview]
Message-ID: <87bjmyke52.fsf@draig.linaro.org> (raw)
In-Reply-To: <359dc52bc7ebe3ea8a3d549f23d42a592066d685@nut.email> (Julian Ganz's message of "Wed, 24 Sep 2025 15:31:41 +0000")
"Julian Ganz" <neither@nut.email> writes:
(add Richard to Cc)
> September 23, 2025 at 10:29 PM, "Julian Ganz" wrote:
>> September 22, 2025 at 12:11 PM, "Julian Ganz" wrote:
>> > September 21, 2025 at 6:46 PM, "Alex Bennée" wrote:
>> > This is firing on:
>> >
>> > 🕙17:35:50 alex@draig:tests/tcg/i386-linux-user on review/tcg-discon-v6 [$!?]
>> > ➜ make run-plugin-catch-syscalls-with-libdiscons.so V=1
>> > timeout -s KILL --foreground 120 env
>> > QEMU=/home/alex/lsrc/qemu.git/builds/sanitisers/qemu-i386
>> > /home/alex/lsrc/qemu.git/builds/sanitisers/qemu-i386 -plugin
>> > ../plugins/libdiscons.so -d plugin -D
>> > catch-syscalls-with-libdiscons.so.pout catch-syscalls >
>> > run-plugin-catch-syscalls-with-libdiscons.so.out
>> > Aborted
>> > make: *** [Makefile:226: run-plugin-catch-syscalls-with-libdiscons.so] Error 134
<snip>
>> > (gdb) p report->str
>> > $2 = (gchar *) 0x51100001fbc0 "Discon target PC mismatch on VCPU 0\nExpected: 8057369\nEncountered: 805736b\nExecuted Last: 805736b\nEvent type: exception\n"
>> > (gdb)
>> >
>> > I think this is where it is going wrong:
>> >
>> > IN: _dl_early_allocate
>> > 0x0805736b: 89 c2 movl %eax, %edx
>> > 0x0805736d: 8d 1c 28 leal (%eax, %ebp), %ebx
>> > 0x08057370: 89 c8 movl %ecx, %eax
>> > 0x08057372: cd 80 int $0x80
>> >
>> > Thanks! I'll have a closer look.
>> >
>> I probably didn't configure the target I need for this test on my
>> private machine (which uses musl, so some targets are awkward).
>
> Turned out I just ran `make` in the wrong directory.
>
>> Could it
>> be that this doesn't run in system emulation mode and the exception is
>> somehow handled natively? I did not account for that possibility and I
>> don't think I'll get the testing plugin to do anything meaningful
>> outside system emulation.
>
> As expected the plugin ran in a qemu configuration in which the API does
> not behave as expected. Which I could have figured out by the logs Alex
> provided if I paid attention. Sorry for the noise.
>
> I added a check to the plugin that bails out if qemu does not run in
> system emulation mode (which I thought I did, but that was only for the
> contrib plugin).
>
> Even if we cannot test the API for user mode, it may still provide some
> utility, so I suggest _just_ letting the testing plugin do nothing in
> that case. In fact, I'm considering removing the check from the contrib
> "traps" plugin now that I saw that the API _is_ triggered in user
> mode.
Is this just because we are missing the hooks into the linux-user
run-loop? I assume int $0x80 is a syscall so we should report an
exception type at that point?
In fact I think you could probably generate the event at
qemu_plugin_vcpu_syscall()?
force_sig_fault() and force_sig() might be the other places that should
be hooked. Or possibly handle_pending_signal() where all the other
signals affect the code flow.
I think that can avoid patching every arches run loop.
Richard, WDYT?
>
> Regards,
> Julian
--
Alex Bennée
Virtualisation Tech Lead @ Linaro
next prev parent reply other threads:[~2025-09-25 10:42 UTC|newest]
Thread overview: 57+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-09-04 20:46 [PATCH v6 00/25] tcg-plugins: add hooks for discontinuities Julian Ganz
2025-09-04 20:46 ` [PATCH v6 01/25] plugins: add types for callbacks related to certain discontinuities Julian Ganz
2025-09-04 20:46 ` [PATCH v6 02/25] plugins: add API for registering discontinuity callbacks Julian Ganz
2025-09-04 20:46 ` [PATCH v6 03/25] plugins: add hooks for new discontinuity related callbacks Julian Ganz
2025-09-22 11:34 ` Philippe Mathieu-Daudé
2025-09-22 20:57 ` Julian Ganz
2025-09-04 20:46 ` [PATCH v6 04/25] contrib/plugins: add plugin showcasing new dicontinuity related API Julian Ganz
2025-09-04 20:46 ` [PATCH v6 05/25] target/alpha: call plugin trap callbacks Julian Ganz
2025-09-04 20:46 ` [PATCH v6 06/25] target/arm: " Julian Ganz
2025-09-04 20:46 ` [PATCH v6 07/25] target/avr: " Julian Ganz
2025-09-04 20:46 ` [PATCH v6 08/25] target/hppa: " Julian Ganz
2025-09-22 11:38 ` Philippe Mathieu-Daudé
2025-09-22 21:09 ` Julian Ganz
2025-09-04 20:46 ` [PATCH v6 09/25] target/i386: " Julian Ganz
2025-09-04 20:46 ` [PATCH v6 10/25] target/loongarch: " Julian Ganz
2025-09-04 20:46 ` [PATCH v6 11/25] target/m68k: " Julian Ganz
2025-09-04 20:46 ` [PATCH v6 12/25] target/microblaze: " Julian Ganz
2025-09-04 20:46 ` [PATCH v6 13/25] target/mips: " Julian Ganz
2025-09-22 11:45 ` Philippe Mathieu-Daudé
2025-09-04 20:46 ` [PATCH v6 14/25] target/openrisc: " Julian Ganz
2025-09-04 20:46 ` [PATCH v6 15/25] target/ppc: " Julian Ganz
2025-09-04 20:46 ` [PATCH v6 16/25] target/riscv: " Julian Ganz
2025-09-04 20:46 ` [PATCH v6 17/25] target/rx: " Julian Ganz
2025-09-07 14:20 ` yoshinori.sato
2025-09-04 20:46 ` [PATCH v6 18/25] target/s390x: " Julian Ganz
2025-09-04 20:46 ` [PATCH v6 19/25] target/sh4: " Julian Ganz
2025-09-07 14:20 ` yoshinori.sato
2025-09-04 20:46 ` [PATCH v6 20/25] target/sparc: " Julian Ganz
2025-09-04 20:48 ` Julian Ganz
2025-09-04 20:48 ` [PATCH v6 21/25] target/tricore: " Julian Ganz
2025-09-04 20:48 ` [PATCH v6 22/25] target/xtensa: " Julian Ganz
2025-09-22 11:47 ` Philippe Mathieu-Daudé
2025-09-22 21:12 ` Julian Ganz
2025-09-04 20:48 ` [PATCH v6 23/25] tests: add plugin asserting correctness of discon event's to_pc Julian Ganz
2025-09-21 16:46 ` Alex Bennée
2025-09-22 10:11 ` Julian Ganz
2025-09-22 10:15 ` Daniel P. Berrangé
2025-09-23 20:29 ` Julian Ganz
2025-09-24 15:31 ` Julian Ganz
2025-09-25 10:41 ` Alex Bennée [this message]
2025-09-25 12:42 ` Julian Ganz
2025-09-04 20:48 ` [PATCH v6 24/25] tests: add test for double-traps on rv64 Julian Ganz
2025-09-04 20:49 ` [PATCH v6 25/25] tests: add test with interrupted memory accesses " Julian Ganz
2025-09-05 11:38 ` [PATCH v6 00/25] tcg-plugins: add hooks for discontinuities BALATON Zoltan
2025-09-05 12:20 ` Alex Bennée
2025-09-05 13:43 ` Julian Ganz
2025-09-05 19:25 ` BALATON Zoltan
2025-09-05 23:28 ` Julian Ganz
2025-09-07 20:21 ` BALATON Zoltan
2025-09-08 20:51 ` Julian Ganz
2025-09-09 19:48 ` Julian Ganz
2025-09-10 10:06 ` BALATON Zoltan
2025-09-10 11:41 ` Julian Ganz
2025-09-10 12:09 ` Alex Bennée
2025-09-10 15:04 ` BALATON Zoltan
2025-09-22 11:31 ` Philippe Mathieu-Daudé
2025-09-22 20:54 ` Julian Ganz
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=87bjmyke52.fsf@draig.linaro.org \
--to=alex.bennee@linaro.org \
--cc=erdnaxe@crans.org \
--cc=ma.mandourr@gmail.com \
--cc=neither@nut.email \
--cc=pierrick.bouvier@linaro.org \
--cc=qemu-devel@nongnu.org \
--cc=richard.henderson@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.