diff options
author | Jan Kiszka <jan.kiszka@siemens.com> | 2012-05-09 14:23:27 -0300 |
---|---|---|
committer | Kevin Wolf <kwolf@redhat.com> | 2012-05-14 17:02:19 +0200 |
commit | 99b5beba2f6c3f2e206e6200a05519a0ec2dc8db (patch) | |
tree | e8d4db8a0db39878002e74fe3b5689ff2419b2ea /coroutine-sigaltstack.c | |
parent | 77f4c9a68aedb9b0d290a1def1bfc8714be862ec (diff) | |
download | qemu-99b5beba2f6c3f2e206e6200a05519a0ec2dc8db.zip qemu-99b5beba2f6c3f2e206e6200a05519a0ec2dc8db.tar.gz qemu-99b5beba2f6c3f2e206e6200a05519a0ec2dc8db.tar.bz2 |
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>
Diffstat (limited to 'coroutine-sigaltstack.c')
-rw-r--r-- | coroutine-sigaltstack.c | 2 |
1 files changed, 1 insertions, 1 deletions
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 @@ static Coroutine *coroutine_new(void) * called. */ coTS->tr_called = 0; - kill(getpid(), SIGUSR2); + pthread_kill(pthread_self(), SIGUSR2); sigfillset(&sigs); sigdelset(&sigs, SIGUSR2); while (!coTS->tr_called) { |