X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=BUGS;h=4b009c11566065249bb7475e8b3deb9b1f886643;hb=15d89af9d084fd35b8698c84cd4a454816bfb9cf;hp=ac698a4c37b6f378d605f48d5a53be7f8c4b8232;hpb=2fb5b174f6acb88a85c86aa4cd753ddefaccc987;p=sbcl.git diff --git a/BUGS b/BUGS index ac698a4..4b009c1 100644 --- a/BUGS +++ b/BUGS @@ -1928,25 +1928,6 @@ WORKAROUND: #.SB-EXT:SINGLE/DOUBLE-FLOAT-POSITIVE-INFINITY. These tests have been disabled on Darwin for now. -375: MISC.555 - (compile nil '(lambda (p1) - (declare (optimize (speed 1) (safety 2) (debug 2) (space 0)) - (type keyword p1)) - (keywordp p1))) - - fails on hairy type check in IR2. - - 1. KEYWORDP is MAYBE-INLINE expanded (before TYPEP-like - transformation could eliminate it). - - 2. From the only call of KEYWORDP the type of its argument is - derived to be KEYWORD. - - 2. Type check for P1 is generated; it uses KEYWORDP to perform the - check, and so references the local function; from the KEYWORDP - argument type new CAST to KEYWORD is generated. The compiler - loops forever. - 377: Memory fault error reporting On those architectures where :C-STACK-IS-CONTROL-STACK is in *FEATURES*, we handle SIG_MEMORY_FAULT (SEGV or BUS) on an altstack, @@ -2074,9 +2055,6 @@ WORKAROUND: the right fix is to remove the abstraction violation in the compiler's type deriver. -392: slot-accessor for subclass misses obsoleted superclass - (fixed in sbcl-0.9.7.9) - 393: Wrong error from methodless generic function (DEFGENERIC FOO (X)) (FOO 1 2) @@ -2100,3 +2078,73 @@ WORKAROUND: instead errors. (reported on sbcl-help by "tichy") + +396: block-compilation bug + (let ((x 1)) + (dotimes (y 10) + (let ((y y)) + (when (funcall (eval #'(lambda (x) (eql x 2))) y) + (defun foo (z) + (incf x (incf y z)))))) + (defun bar (z) + (foo z) + (values x))) + (bar 1) => 11, should be 4. + +397: SLEEP accuracy + The more interrupts arrive the less accurate SLEEP's timing gets. + (time (sb-thread:terminate-thread + (prog1 (sb-thread:make-thread (lambda () + (loop + (princ #\!) + (force-output) + (sb-ext:gc)))) + (sleep 1)))) + +398: GC-unsafe SB-ALIEN string deporting + Translating a Lisp string to an alien string by taking a SAP to it + as done by the :DEPORT-GEN methods for C-STRING and UTF8-STRING + is not safe, since the Lisp string can move. For example the + following code will fail quickly on both cheneygc and pre-0.9.8.19 + GENCGC: + + (setf (bytes-consed-between-gcs) 4096) + (define-alien-routine "strcmp" int (s1 c-string) (s2 c-string)) + + (loop + (let ((string "hello, world")) + (assert (zerop (strcmp string string))))) + + (This will appear to work on post-0.9.8.19 GENCGC, since + the GC no longer zeroes memory immediately after releasing + it after a minor GC. Either enabling the READ_PROTECT_FREE_PAGES + #define in gencgc.c or modifying the example so that a major + GC will occasionally be triggered would unmask the bug.) + + On cheneygc the only solution would seem to be allocating some alien + memory, copying the data over, and arranging that it's freed once we + return. For GENCGC we could instead try to arrange that the string + from which the SAP is taken is always pinned. + + For some more details see comments for (define-alien-type-method + (c-string :deport-gen) ...) in host-c-call.lisp. + +401: "optimizer runaway on bad constant type specifiers in TYPEP" + In 0.9.12.3 (and probably many earlier versions), COMPILE-FILE on + (defun ouch401 () + (etypecase (signum (- x y)) + ((-1 nil)) + ((0 1) (oops "shouldn't happen")))) + or just + (defun foo401 (x) + (typep x '(-1 nil))) + spins emitting what seems to be an endless series of compiler + warnings like + ; --> TYPEP TYPEP TYPEP TYPEP TYPEP TYPEP TYPEP TYPEP TYPEP TYPEP + ; --> TYPEP TYPEP TYPEP TYPEP TYPEP TYPEP TYPEP TYPEP TYPEP TYPEP + ; --> TYPEP + ; ==> + ; (TYPEP SB-C::OBJECT '(-1 NIL)) + ; + ; caught WARNING: + ; illegal type specifier for TYPEP: (-1 NIL)