aboutsummaryrefslogtreecommitdiff
path: root/boehm-gc/pthread_stop_world.c
diff options
context:
space:
mode:
Diffstat (limited to 'boehm-gc/pthread_stop_world.c')
-rw-r--r--boehm-gc/pthread_stop_world.c4
1 files changed, 3 insertions, 1 deletions
diff --git a/boehm-gc/pthread_stop_world.c b/boehm-gc/pthread_stop_world.c
index 5dfd26d319a..fd4a91ec2c9 100644
--- a/boehm-gc/pthread_stop_world.c
+++ b/boehm-gc/pthread_stop_world.c
@@ -341,9 +341,11 @@ void GC_stop_world()
}
}
for (i = 0; i < n_live_threads; i++) {
- if (0 != (code = sem_wait(&GC_suspend_ack_sem))) {
+ while (0 != (code = sem_wait(&GC_suspend_ack_sem))) {
+ if (errno != EINTR) {
GC_err_printf1("Sem_wait returned %ld\n", (unsigned long)code);
ABORT("sem_wait for handler failed");
+ }
}
}
# ifdef PARALLEL_MARK