From: "Emilio G. Cota" <cota@braap.org>
To: "Alex Bennée" <alex.bennee@linaro.org>
Cc: qemu-devel@nongnu.org, Paolo Bonzini <pbonzini@redhat.com>,
riku.voipio@iki.fi, Laurent Vivier <laurent@vivier.eu>,
Nikolay Igotti <igotti@gmail.com>
Subject: Re: [PATCH 3/3] plugins: avoid failing plugin when CPU is inited several times
Date: Sun, 24 May 2020 10:11:01 -0400 [thread overview]
Message-ID: <20200524141101.GA863143@sff> (raw)
In-Reply-To: <87zhacewvx.fsf@linaro.org>
Hi Alex,
On Tue, May 12, 2020 at 21:11:46 +0100, Alex Bennée wrote:
>
> Emilio G. Cota <cota@braap.org> writes:
>
> > On Mon, May 11, 2020 at 18:53:19 +0300, Nikolay Igotti wrote:
> >> Attached to the mail counter.c when running with attached test.c compiled
> >> to Linux standalone binary shows failing assert, unless the patch is
> >> applied.
> >
> > I didn't get the attachment. Can you paste the code at the end of your
> > reply?
>
> So the problem is we are recycling cpu_index:
>
> 21:01:54 [alex@zen:~/l/q/b/all.plugin] plugins/next|●2✚3…(+8 insertions(+)) 127 + ./x86_64-linux-user/qemu-x86_64 ./tests/tcg/x86_64-linux-user/threadcount
> cpu_list_add: 0x5605598579f0
> cpu_get_free_index: 0
> cpu_list_add: 0x5605598c6010
> cpu_get_free_index: 1
> cpu_list_add: 0x5605598ec330
> cpu_get_free_index: 2
> cpu_list_add: 0x560559912a30
> cpu_get_free_index: 3
> cpu_list_add: 0x560559939130
> cpu_get_free_index: 4
> cpu_list_add: 0x56055995d360
> cpu_get_free_index: 1
> **
> ERROR:/home/alex/lsrc/qemu.git/plugins/core.c:205:qemu_plugin_vcpu_init_hook: assertion failed: (success)
> qemu:handle_cpu_signal received signal outside vCPU context @ pc=0x7fa29c702613
>
> However I'm confused as to how. The cpu_index is really just a function
> of the number of CPUs in the cpus list and I can't see where we free
> them up. We never call cpu_common_unrealizefn so the list should never
> shrink. We should just end up with a slowly growing list of now dead CPU
> states.
>
> I'm giving up for now but will have a look again in the morning if no
> one else has figured out what is going on by then.
I just got this fixed, only to realise that you already fixed it weeks ago :-)
(I didn't see your fixes because I'm not subscribed to the list.)
My changes are here https://github.com/cota/qemu/tree/cpu_index
Please feel free to take anything from there that you find valuable, e.g.
the use of a bitmap for tracking cpu_index'es and the addition of a unit test
(note that the test is fixed in the last commit).
Thanks,
Emilio
next prev parent reply other threads:[~2020-05-24 14:11 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-04-20 9:15 [PATCH 3/3] plugins: avoid failing plugin when CPU is inited several times Nikolay Igotti
2020-04-20 9:51 ` Laurent Vivier
2020-04-20 10:04 ` Nikolay Igotti
2020-05-09 23:00 ` Emilio G. Cota
2020-05-11 15:53 ` Nikolay Igotti
2020-05-12 0:55 ` Emilio G. Cota
2020-05-12 8:38 ` Nikolay Igotti
2020-05-12 19:35 ` Alex Bennée
2020-05-12 20:11 ` Alex Bennée
2020-05-24 14:11 ` Emilio G. Cota [this message]
2020-04-20 10:11 ` Peter Maydell
2020-04-20 10:18 ` Nikolay Igotti
2020-04-20 10:30 ` Peter Maydell
2020-04-20 15:07 ` Alex Bennée
2020-04-20 16:14 ` Nikolay Igotti
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=20200524141101.GA863143@sff \
--to=cota@braap.org \
--cc=alex.bennee@linaro.org \
--cc=igotti@gmail.com \
--cc=laurent@vivier.eu \
--cc=pbonzini@redhat.com \
--cc=qemu-devel@nongnu.org \
--cc=riku.voipio@iki.fi \
/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.