]> granicus.if.org Git - gc/commitdiff
Tue Jan 18 11:19:47 CET 2005 Paolo Molaro <lupus@ximian.com>
authorPaolo Molaro <lupus@oddwiz.org>
Tue, 18 Jan 2005 10:10:11 +0000 (10:10 +0000)
committerguest <ivmai@mail.ru>
Fri, 29 Jul 2011 11:24:11 +0000 (15:24 +0400)
* pthread_stop_world.c: handle EINTR from sem_wait() call.

svn path=/trunk/mono/; revision=39085

ChangeLog
pthread_stop_world.c

index 0eed74946280151efa7baa632de8285933403c7f..865d577f1db69e648e9c29c407eb20ca5847c2b3 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,41 @@
+
+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
+       for EXPECT.
+
+2004-08-20  Zoltan Varga  <vargaz@freemail.hu>
+
+       * include/private/gc_priv.h (__GNUC_PREREQ): Fix typo spotted by Ben.
+
+       * include/gc_local_alloc.h pthread_support.c: Add 
+       GC_local_gcj_fast_malloc.
+
+       * include/private/gc_priv.h (EXPECT): Enable this on modern versions
+       of gcc.
+
+2004-08-17 Ben Maurer  <bmaurer@users.sourceforge.net>
+
+       * pthread_support.c: make __thread variable static
+       
+       * include/gc_local_alloc.c: make the other headers get
+       included before we define our own variable. This fixes
+       up an ordering problem with GCJ and thread local alloc.
+       
+       The problem was that gc.h needed to include gc_local_alloc.h
+       before gc_gcj.h. However, when gc.h was included after
+       GC_LOCAL_ALLOC_H was #defined, it would not include
+       gc_local_alloc.h.
+
+2004-08-16  Zoltan Varga  <vargaz@freemail.hu>
+
+       * Makefile.am: Create a static version of libmonogc for inclusion into
+       the mono executable.
+
 2004-07-27  John Merryweather Cooper <john_m_cooper@yahoo.com>
        # configure.in: Fix compiler flags selection to be correct for
        both FreeBSD 4.x (aka -STABLE) and FreeBSD 5.x (aka -CURRENT).
index 001a9e05c5c158b42ed6073fc8978df9df96ea89..06e919b28482d8d464eebe7d833af7d583134c7c 100644 (file)
@@ -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