Index: /trunk/ccl/level-1/l1-lisp-threads.lisp
===================================================================
--- /trunk/ccl/level-1/l1-lisp-threads.lisp	(revision 464)
+++ /trunk/ccl/level-1/l1-lisp-threads.lisp	(revision 465)
@@ -1197,7 +1197,8 @@
   (let ((new-cell (list (cons object function)))
         (population *termination-population*))
-    (with-lock-grabbed (*termination-population-lock*)
-     (setf (cdr new-cell) (population-data population)
-           (population-data population) new-cell))
+    (without-interrupts
+     (with-lock-grabbed (*termination-population-lock*)
+       (setf (cdr new-cell) (population-data population)
+	     (population-data population) new-cell)))
     function))
 
@@ -1209,9 +1210,10 @@
         (population *termination-population*))
     (loop
+    (without-interrupts
       (with-lock-grabbed (*termination-population-lock*)
        (let ((list (population-termination-list population)))
          (unless list (return))
          (setf cell (car list)
-               (population-termination-list population) (cdr list))))
+               (population-termination-list population) (cdr list)))))
       (funcall (cdr cell) (car cell)))))
 
@@ -1224,14 +1226,16 @@
                   (setq found-it? t))))
       (declare (dynamic-extent #'test))
-      (with-lock-grabbed (*termination-population-lock*)
-       (setf (population-data *termination-population*)
-             (delete object (population-data *termination-population*)
-                     :test #'test
-                     :count 1)))
+      (without-interrupts
+       (with-lock-grabbed (*termination-population-lock*)
+	 (setf (population-data *termination-population*)
+	       (delete object (population-data *termination-population*)
+		       :test #'test
+		       :count 1))))
       found-it?)))
 
 (defun termination-function (object)
-  (with-lock-grabbed (*termination-population-lock*)
-    (cdr (assq object (population-data *termination-population*)))))
+  (without-interrupts
+   (with-lock-grabbed (*termination-population-lock*)
+     (cdr (assq object (population-data *termination-population*))))))
 
 (defun do-automatic-termination ()
