0.9.3.64:
authorGabor Melis <mega@hotpop.com>
Fri, 19 Aug 2005 13:45:40 +0000 (13:45 +0000)
committerGabor Melis <mega@hotpop.com>
Fri, 19 Aug 2005 13:45:40 +0000 (13:45 +0000)
  * scavenge thread->interrupt_fun (one less memory fault in
    INTERRUPT-THREAD again, heh)

NEWS
src/runtime/gencgc.c
version.lisp-expr

diff --git a/NEWS b/NEWS
index dde7081..3e62313 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -45,6 +45,7 @@ changes in sbcl-0.9.4 relative to sbcl-0.9.3:
     ** bug fix: lockup when compiled with gcc4
     ** bug fix: race that allows the gc to be triggered when gc is
        inhibited
+    ** buf fix: one less memory fault in INTERRUPT-THREAD, again
   * fixed some bugs revealed by Paul Dietz' test suite:
     ** CALL-NEXT-METHOD signals an error (in safe code) when the call
        has arguments with a different set of applicable methods from
index a5904df..b8df9f4 100644 (file)
@@ -3623,26 +3623,30 @@ garbage_collect_generation(int generation, int raise)
      * care to avoid SIG_DFL and SIG_IGN. */
     for_each_thread(th) {
         struct interrupt_data *data=th->interrupt_data;
-    for (i = 0; i < NSIG; i++) {
+        for (i = 0; i < NSIG; i++) {
             union interrupt_handler handler = data->interrupt_handlers[i];
-        if (!ARE_SAME_HANDLER(handler.c, SIG_IGN) &&
-            !ARE_SAME_HANDLER(handler.c, SIG_DFL)) {
+            if (!ARE_SAME_HANDLER(handler.c, SIG_IGN) &&
+                !ARE_SAME_HANDLER(handler.c, SIG_DFL)) {
                 scavenge((lispobj *)(data->interrupt_handlers + i), 1);
             }
         }
     }
+    /* Scavenge the function list for INTERRUPT-THREAD. */
+    for_each_thread(th) {
+        scavenge(&th->interrupt_fun,1);
+    }
     /* Scavenge the binding stacks. */
- {
-     struct thread *th;
-     for_each_thread(th) {
-         long len= (lispobj *)SymbolValue(BINDING_STACK_POINTER,th) -
-             th->binding_stack_start;
-         scavenge((lispobj *) th->binding_stack_start,len);
+    {
+        struct thread *th;
+        for_each_thread(th) {
+            long len= (lispobj *)SymbolValue(BINDING_STACK_POINTER,th) -
+                th->binding_stack_start;
+            scavenge((lispobj *) th->binding_stack_start,len);
 #ifdef LISP_FEATURE_SB_THREAD
-         /* do the tls as well */
-         len=fixnum_value(SymbolValue(FREE_TLS_INDEX,0)) -
-             (sizeof (struct thread))/(sizeof (lispobj));
-         scavenge((lispobj *) (th+1),len);
+            /* do the tls as well */
+            len=fixnum_value(SymbolValue(FREE_TLS_INDEX,0)) -
+                (sizeof (struct thread))/(sizeof (lispobj));
+            scavenge((lispobj *) (th+1),len);
 #endif
         }
     }
index 5b4ffe1..0281078 100644 (file)
@@ -17,4 +17,4 @@
 ;;; checkins which aren't released. (And occasionally for internal
 ;;; versions, especially for internal versions off the main CVS
 ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.9.3.63"
+"0.9.3.64"