aboutsummaryrefslogtreecommitdiff
path: root/cpus.c
diff options
context:
space:
mode:
authorLaurent Vivier <lvivier@redhat.com>2019-01-02 15:16:03 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2019-02-05 16:50:16 +0100
commitd455ebc4f827c14a29240db17931e170b6937c6c (patch)
tree2ea33adf283942c509546d57b37b7e0b1d3f3f16 /cpus.c
parentd99e97e6912d90a55e9a92e004dd54513da2848a (diff)
cpus: ignore ESRCH in qemu_cpu_kick_thread()
We can have a race condition between qemu_cpu_kick_thread() and qemu_kvm_cpu_thread_fn() when we hotunplug a CPU. In this case, qemu_cpu_kick_thread() can try to kick a thread that is exiting. pthread_kill() returns an error and qemu is stopped by an exit(1). qemu:qemu_cpu_kick_thread: No such process We can ignore safely this error. Signed-off-by: Laurent Vivier <lvivier@redhat.com> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
Diffstat (limited to 'cpus.c')
-rw-r--r--cpus.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/cpus.c b/cpus.c
index b09b702712..154daf57dc 100644
--- a/cpus.c
+++ b/cpus.c
@@ -1778,7 +1778,7 @@ static void qemu_cpu_kick_thread(CPUState *cpu)
}
cpu->thread_kicked = true;
err = pthread_kill(cpu->thread->thread, SIG_IPI);
- if (err) {
+ if (err && err != ESRCH) {
fprintf(stderr, "qemu:%s: %s", __func__, strerror(err));
exit(1);
}