coroutine: Fix setup of sigaltstack coroutines Use pthread_kill instead of process-wide kill to invoke the signal handler used for stack switching. This may fix spurious lock-ups with this backend, easily triggerable by extending the time window between kill and sigsuspend. Signed-off-by: Jan Kiszka <jan.kiszka@siemens.com> Reviewed-by: Paolo Bonzini <pbonzini@redhat.com> Signed-off-by: Kevin Wolf <kwolf@redhat.com>
diff --git a/coroutine-sigaltstack.c b/coroutine-sigaltstack.c index 7ff2d33..b2e316c 100644 --- a/coroutine-sigaltstack.c +++ b/coroutine-sigaltstack.c
@@ -226,7 +226,7 @@ * called. */ coTS->tr_called = 0; - kill(getpid(), SIGUSR2); + pthread_kill(pthread_self(), SIGUSR2); sigfillset(&sigs); sigdelset(&sigs, SIGUSR2); while (!coTS->tr_called) {