Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
path: root/libgc
diff options
context:
space:
mode:
authorPaolo Molaro <lupus@oddwiz.org>2005-01-18 13:10:11 +0300
committerPaolo Molaro <lupus@oddwiz.org>2005-01-18 13:10:11 +0300
commite33b7019e9453e8228c4d6045951df44b0798b43 (patch)
tree8c810d860f66bd7bd022e39d39b1e950ff18a367 /libgc
parent04bdcc000624f2679ae06eef530e3faab200fc61 (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')
-rw-r--r--libgc/ChangeLog5
-rw-r--r--libgc/pthread_stop_world.c8
2 files changed, 10 insertions, 3 deletions
diff --git a/libgc/ChangeLog b/libgc/ChangeLog
index d19f37792db..86c9f1a7b1e 100644
--- a/libgc/ChangeLog
+++ b/libgc/ChangeLog
@@ -1,3 +1,8 @@
+
+Tue Jan 18 11:19:47 CET 2005 Paolo Molaro <lupus@ximian.com>
+
+ * pthread_stop_world.c: handle EINTR from sem_wait() call.
+
2004-08-20 Ben Maurer <bmaurer@users.sourceforge.net>
* include/private/gc_priv.h: use the test glib does
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