X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=BUGS;h=d7ecde8dabd4f75f2770419e017052a8b4f4ee45;hb=53f576d7d796e37a9c51c3c3296341458f046c44;hp=e36c391919e7e687c4824f27c4ee966949463a07;hpb=37200d73dfca16507809778574092cfb998711d5;p=sbcl.git diff --git a/BUGS b/BUGS index e36c391..d7ecde8 100644 --- a/BUGS +++ b/BUGS @@ -1133,25 +1133,6 @@ WORKAROUND: in the wrapper, and then to update the instance just run through all the old wrappers in order from oldest to newest. -332: "fasl stack inconsistency in structure redefinition" - (reported by Tim Daly Jr sbcl-devel 2004-05-06) - Even though structure redefinition is undefined by the standard, the - following behaviour is suboptimal: running - (defun stimulate-sbcl () - (let ((filename (format nil "/tmp/~A.lisp" (gensym)))) - ;;create a file which redefines a structure incompatibly - (with-open-file (f filename :direction :output :if-exists :supersede) - (print '(defstruct astruct foo) f) - (print '(defstruct astruct foo bar) f)) - ;;compile and load the file, then invoke the continue restart on - ;;the structure redefinition error - (handler-bind ((error (lambda (c) (continue c)))) - (load (compile-file filename))))) - (stimulate-sbcl) - and choosing the CONTINUE restart yields the message - debugger invoked on a SB-INT:BUG in thread 27726: - fasl stack not empty when it should be - 336: "slot-definitions must retain the generic functions of accessors" reported by Tony Martinez: (defclass foo () ((bar :reader foo-bar))) @@ -1396,30 +1377,6 @@ WORKAROUND: Expected: ERROR Got: # -369: unlike-an-intersection behavior of VALUES-TYPE-INTERSECTION - In sbcl-0.8.18.2, the identity $(x \cap y \cap y)=(x \cap y)$ - does not hold for VALUES-TYPE-INTERSECTION, even for types which - can be intersected exactly, so that ASSERTs fail in this test case: - (in-package :cl-user) - (let ((types (mapcar #'sb-c::values-specifier-type - '((values (vector package) &optional) - (values (vector package) &rest t) - (values (vector hash-table) &rest t) - (values (vector hash-table) &optional) - (values t &optional) - (values t &rest t) - (values nil &optional) - (values nil &rest t) - (values sequence &optional) - (values sequence &rest t) - (values list &optional) - (values list &rest t))))) - (dolist (x types) - (dolist (y types) - (let ((i (sb-c::values-type-intersection x y))) - (assert (sb-c::type= i (sb-c::values-type-intersection i x))) - (assert (sb-c::type= i (sb-c::values-type-intersection i y))))))) - 370: reader misbehaviour on large-exponent floats (read-from-string "1.0s1000000000000000000000000000000000000000") causes the reader to attempt to create a very large bignum (which it @@ -1457,19 +1414,6 @@ WORKAROUND: 379: TRACE :ENCAPSULATE NIL broken on ppc/darwin See commented-out test-case in debug.impure.lisp. -380: Accessor redefinition fails because of old accessor name - When redefining an accessor, SB-PCL::FIX-SLOT-ACCESSORS may try to - find the generic function named by the old accessor name using - ENSURE-GENERIC-FUNCTION and then remove the old accessor's method in - the GF. If the old name does not name a function, or if the old name - does not name a generic function, no attempt to find the GF or remove - any methods is made. - - However, if an unrelated GF with an incompatible lambda list exists, - the class redefinition will fail when SB-PCL::REMOVE-READER-METHOD - tries to find and remove a method with an incompatible lambda list - from the unrelated generic function. - 382: externalization unexpectedly changes array simplicity COMPILE-FILE and LOAD (defun foo () @@ -1818,7 +1762,7 @@ WORKAROUND: (ASSERT (EQUAL (BUG419 42) '(1 2 3 4 5 6))) => failure - Note: as of SBCL 1.0.26.29 this bug no longer affects user code, as + Note: as of SBCL 1.0.16.29 this bug no longer affects user code, as SB-INT:TRULY-DYNAMIC-EXTENT needs to be used instead of DYNAMIC-EXTENT for this to happen. Proper fix for this bug requires (Nikodemus thinks) storing the relevant LAMBDA-VARs in a @@ -1857,30 +1801,6 @@ generally try to check returns in safe code, so we should here too.) (Test-case adapted from CL-PPCRE.) -426: inlining failure involving multiple nested calls - - (declaim (inline foo)) - (defun foo (x y) - (cons x y)) - (defun bar (x) - (foo (foo x x) (foo x x))) - ;; shows a full call to FOO - (disassemble 'bar) - ;; simple way to test this programmatically - (let ((code (sb-c::fun-code-header #'bar)) - (foo (sb-impl::fdefinition-object 'foo nil))) - (loop for i from sb-vm:code-constants-offset below (sb-kernel:get-header-data code) - do (assert (not (eq foo (sb-kernel:code-header-ref code i)))))) - - This appears to be an ancient bug, inherited from CMUCL: reportedly - 18c does the same thing. RECOGNIZE-KNOWN-CALL correctly picks up only - one of the calls, but local call analysis fails to inline the call - for the second time. Nikodemus thinks (but is not 100% sure based on - very brief investigation) that the call that is not inlined is the - second nested one. A trivial fix is to call CHANGE-REF-LEAF in known - call for functions already inline converted there, but he is not sure - if this has adverse effects elsewhere. - 428: TIMER SCHEDULE-STRESS and PARALLEL-UNSCHEDULE in timer.impure.lisp fails @@ -1902,19 +1822,5 @@ generally try to check returns in safe code, so we should here too.) (setf (aref nodes 0) 2) (assert (every #'~= (apply #'concatenate 'list nodes) '(2 3 6 9))))) -430: nested structure constructors do not stack allocate - - (defun nada (x) (declare (ignore x)) nil) - - (declaim (inline make-foo)) - (defstruct foo bar) - - (defun foo () - (let ((x (list (make-foo)))) - (declare (dynamic-extent x)) - (nada x))) - - Result of MAKE-FOO not stack allocated in FOO, because the function - HANDLE-NESTED-DYNAMIC-EXTENT-LVARS sees is not - %MAKE-STRUCTURE-INSTANCE, but no-yet-eliminated (VARARGS-ENTRY - MAKE-FOO). +431: alien strucure redefinition doesn't work as expected + fixed in 1.0.21.29