diff options
author | Paolo Molaro <lupus@oddwiz.org> | 2005-01-18 13:10:11 +0300 |
---|---|---|
committer | Paolo Molaro <lupus@oddwiz.org> | 2005-01-18 13:10:11 +0300 |
commit | e33b7019e9453e8228c4d6045951df44b0798b43 (patch) | |
tree | 8c810d860f66bd7bd022e39d39b1e950ff18a367 /libgc/pthread_stop_world.c | |
parent | 04bdcc000624f2679ae06eef530e3faab200fc61 (diff) |
Tue Jan 18 11:19:47 CET 2005 Paolo Molaro <lupus@ximian.com>
* pthread_stop_world.c: handle EINTR from sem_wait() call.
svn path=/trunk/mono/; revision=39085
Diffstat (limited to 'libgc/pthread_stop_world.c')
-rw-r--r-- | libgc/pthread_stop_world.c | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/libgc/pthread_stop_world.c b/libgc/pthread_stop_world.c index 001a9e05c5c..06e919b2848 100644 --- a/libgc/pthread_stop_world.c +++ b/libgc/pthread_stop_world.c @@ -366,9 +366,11 @@ static void pthread_stop_world() } } for (i = 0; i < n_live_threads; i++) { - if (0 != (code = sem_wait(&GC_suspend_ack_sem))) { - GC_err_printf1("Sem_wait returned %ld\n", (unsigned long)code); - ABORT("sem_wait for handler failed"); + 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"); + } } } #if DEBUG_THREADS |