Index: /trunk/ccl/level-1/l1-lisp-threads.lisp
===================================================================
--- /trunk/ccl/level-1/l1-lisp-threads.lisp	(revision 885)
+++ /trunk/ccl/level-1/l1-lisp-threads.lisp	(revision 886)
@@ -1020,6 +1020,5 @@
             ;; This is terribly complicated, should probably write some LAP
             (let ((typecode (typecode x)))
-                  (not (or (memq x *heap-ivectors*)
-                           (case typecode
+                  (not (or (case typecode
                              (#.ppc32::tag-list
                               (temporary-cons-p x))
@@ -1029,5 +1028,6 @@
                               (on-any-vstack x))
                              (t
-                              (on-any-tsp-stack x)))))))))))
+                              (on-any-tsp-stack x)))
+                           (%heap-ivector-p x)))))))))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -1138,9 +1138,10 @@
     (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)))))
+     (with-lock-grabbed (*termination-population-lock*)
+       (without-gcing
+        (let ((list (population-termination-list population)))
+          (unless list (return))
+          (setf cell (car list)
+                (population-termination-list population) (cdr list))))))
       (funcall (cdr cell) (car cell)))))
 
