]> git.proxmox.com Git - mirror_qemu.git/commit
plugins: move reset of plugin data to tb_start
authorAlex Bennée <alex.bennee@linaro.org>
Fri, 4 Feb 2022 20:43:35 +0000 (20:43 +0000)
committerAlex Bennée <alex.bennee@linaro.org>
Wed, 9 Feb 2022 13:26:29 +0000 (13:26 +0000)
commit6f15c076dae07c2438eb488d71fa332e2b8d0963
tree4d88cbdafdb546272a5cbc886181e5de4245b8e5
parent346cd004f65edf2e55dfd8333cb0f63e08423791
plugins: move reset of plugin data to tb_start

We can't always guarantee we get to the end of a translator loop.
Although this can happen for a variety of reasons it does happen more
often on x86 system emulation when an instruction spans across to an
un-faulted page. This caused confusion of the instruction tracking
data resulting in apparent reverse execution (at least from the
plugins point of view).

Fix this by moving the reset code to plugin_gen_tb_start so we always
start with a clean slate.

We unconditionally reset tcg_ctx->plugin_insn as the
plugin_insn_append code uses this as a proxy for knowing if plugins
are enabled for the current instruction. Otherwise we can hit a race
where a previously instrumented thread leaves a stale value after the
main thread exits and disables instrumentation.

Resolves: https://gitlab.com/qemu-project/qemu/-/issues/824
Signed-off-by: Alex Bennée <alex.bennee@linaro.org>
Reviewed-by: Richard Henderson <richard.henderson@linaro.org>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <20220204204335.1689602-27-alex.bennee@linaro.org>
accel/tcg/plugin-gen.c