From: XuYandong <xuyando...@huawei.com> After vcpu1 thread exiting, vcpu0 thread (received notification) is still waiting for holding qemu_global_mutex in cpu_remove_sync, at this moment, vcpu1 is still in global cpus list. If main thread grab qemu_global_mutex in order to handle qmp command "info cpus", qmp_query_cpus visit unpluged vcpu1 will lead qemu process to exit.
Signed-off-by: XuYandong <xuyando...@huawei.com> --- cpus.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/cpus.c b/cpus.c index 2cb0af9..9b3a6c4 100644 --- a/cpus.c +++ b/cpus.c @@ -2018,6 +2018,11 @@ CpuInfoList *qmp_query_cpus(Error **errp) CPU_FOREACH(cpu) { CpuInfoList *info; + + if (cpu->unplug) { + continue; + } + #if defined(TARGET_I386) X86CPU *x86_cpu = X86_CPU(cpu); CPUX86State *env = &x86_cpu->env; -- 1.8.3.1