0.9.3.50:
authorGabor Melis <mega@hotpop.com>
Fri, 12 Aug 2005 19:19:42 +0000 (19:19 +0000)
committerGabor Melis <mega@hotpop.com>
Fri, 12 Aug 2005 19:19:42 +0000 (19:19 +0000)
  * put back WITH-PINNED-OBJECTS into INTERRUPT-THREAD and kill some
    really rare memory faults

src/code/target-thread.lisp
version.lisp-expr

index e24efa0..da38ee8 100644 (file)
@@ -551,11 +551,14 @@ won't like the effect."
   #!+sb-thread
   (let ((function (coerce function 'function)))
     (multiple-value-bind (res err)
-        (sb!unix::syscall ("interrupt_thread"
-                           system-area-pointer sb!alien:unsigned-long)
-                          thread
-                          (thread-%sap thread)
-                          (sb!kernel:get-lisp-obj-address function))
+        ;; protect against gcing just when the ub32 address is ready
+        ;; to be passed to C
+        (sb!sys::with-pinned-objects (function)
+          (sb!unix::syscall ("interrupt_thread"
+                             system-area-pointer sb!alien:unsigned-long)
+                            thread
+                            (thread-%sap thread)
+                            (sb!kernel:get-lisp-obj-address function)))
       (unless res
         (error 'interrupt-thread-error :thread thread :errno err)))))
 
index c3ae8b2..7050b5e 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.49"
+"0.9.3.50"