Index: /trunk/ccl/level-1/l1-lisp-threads.lisp
===================================================================
--- /trunk/ccl/level-1/l1-lisp-threads.lisp	(revision 5606)
+++ /trunk/ccl/level-1/l1-lisp-threads.lisp	(revision 5607)
@@ -402,5 +402,5 @@
 	(cons function args)))
 
-(defun thread-enable (thread activation-semaphore allocation-quantum &optional (timeout most-positive-fixnum))
+(defun thread-enable (thread termination-semaphore allocation-quantum &optional (timeout most-positive-fixnum))
   (let* ((tcr (or (lisp-thread.tcr thread) (new-tcr-for-thread thread))))
     (with-macptrs (s)
@@ -410,5 +410,5 @@
          tcr
          (lisp-thread.startup-function thread))
-        (%activate-tcr tcr activation-semaphore allocation-quantum)
+        (%activate-tcr tcr termination-semaphore allocation-quantum)
         thread))))
 			      
@@ -424,9 +424,10 @@
 
 (defun kill-lisp-thread (thread)
-  (let* ((pthread (lisp-thread-os-thread thread)))
-    (when pthread
-      (setf (lisp-thread.tcr thread) nil
-	    (lisp-thread.state thread) :exit)
-      (#_pthread_cancel pthread))))
+  (unless (eq thread initial-thread)
+    (let* ((pthread (lisp-thread-os-thread thread)))
+      (when pthread
+        (setf (lisp-thread.tcr thread) nil
+              (lisp-thread.state thread) :exit)
+        (#_pthread_kill pthread #$SIGQUIT)))))
 
 ;;; This returns the underlying pthread, whatever that is.
