configure.host: Build with -fexceptions.
authorHans Boehm <Hans_Boehm@hp.com>
Sun, 20 May 2001 22:36:34 +0000 (22:36 +0000)
committerTom Tromey <tromey@gcc.gnu.org>
Sun, 20 May 2001 22:36:34 +0000 (22:36 +0000)
* configure.host: Build with -fexceptions.
* linux_threads.c: Remember which thread stopped world for

From-SVN: r42362

boehm-gc/ChangeLog
boehm-gc/configure.host
boehm-gc/linux_threads.c

index 7d0991697f88264b72a28838fbcfbcd5429db6cb..1b28d5ce3a7323a9526908d2fe25b8d4652d1aba 100644 (file)
@@ -1,3 +1,8 @@
+2001-05-19  Hans Boehm  <hans_boehm@hp.com>
+
+       * configure.host: Build with -fexceptions.
+       * linux_threads.c: Remember which thread stopped world for
+
 2001-05-04  Loren J. Rittle  <ljrittle@acm.org>
            with final tuning by Bryce McKinlay
 
index 1903242fec40709f611358ae2ac9dd1776ee9f53..323668dd33a64d9e48a136951895eff11fdbf6fa 100644 (file)
@@ -17,7 +17,7 @@
 # It sets the following shell variables:
 #   boehm_gc_cflags    Special CFLAGS to use when building
 
-boehm_gc_cflags=
+boehm_gc_cflags=-fexceptions
 
 case "${target_optspace}:${host}" in
   yes:*)
index 2c856f567a093f45daa9f9245f64c706b70ef885..92da410e3da2a0299dc367f1afe67302a45ff2fb 100644 (file)
@@ -326,6 +326,11 @@ GC_thread GC_lookup_thread(pthread_t id)
     return(p);
 }
 
+/* There seems to be a very rare thread stopping problem.  To help us  */
+/* debug that, we save the ids of the stopping thread.                         */
+pthread_t GC_stopping_thread;
+int GC_stopping_pid;
+
 /* Caller holds allocation lock.       */
 void GC_stop_world()
 {
@@ -335,6 +340,8 @@ void GC_stop_world()
     register int n_live_threads = 0;
     register int result;
 
+    GC_stopping_thread = my_thread;    /* debugging only.      */
+    GC_stopping_pid = getpid();                /* debugging only.      */
     for (i = 0; i < THREAD_TABLE_SZ; i++) {
       for (p = GC_threads[i]; p != 0; p = p -> next) {
         if (p -> id != my_thread) {
@@ -403,6 +410,7 @@ void GC_start_world()
     #if DEBUG_THREADS
       GC_printf0("World started\n");
     #endif
+    GC_stopping_thread = 0;  /* debugging only */
 }
 
 # ifdef IA64