X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=BUGS;h=dd4c15b1d95168af01fae0623f6bed943b3ca38e;hb=138316f3ffc98856be1f63ad29f8b28b7e89547f;hp=0dbe1e1dd308ad5d66bc7d340ad0ede9287fbf77;hpb=367316f5f21281204393853910848fea7fb9a6ab;p=sbcl.git diff --git a/BUGS b/BUGS index 0dbe1e1..dd4c15b 100644 --- a/BUGS +++ b/BUGS @@ -416,6 +416,8 @@ WORKAROUND: isn't too surprising since there are many differences in stack implementation and GC conservatism between the X86 and other ports.) + (Can't reproduce on x86 linux as of 1.0.20.23 - MGL) + This is probably the same bug as 216 173: @@ -627,6 +629,8 @@ WORKAROUND: the bad VECTOR-PUSH-EXTEND frame causes GC problems, though that may not be the actual problem. (CMU CL 18c doesn't have problems with this.) + (Can't reproduce on x86 linux as of 1.0.20.22 - MGL) + This is probably the same bug as 162 235: "type system and inline expansion" @@ -1046,7 +1050,7 @@ WORKAROUND: (open "/dev/zero" :element-type '(unsigned-byte 1025)) gives an error in sbcl-0.8.10. -325: "CLOSE :ABORT T on supeseding streams" +325: "CLOSE :ABORT T on superseding streams" Closing a stream opened with :IF-EXISTS :SUPERSEDE with :ABORT T leaves no file on disk, even if one existed before opening. @@ -1511,6 +1515,8 @@ WORKAROUND: 385: (format nil "~4,1F" 0.001) => "0.00" (should be " 0.0"); (format nil "~4,1@F" 0.001) => "+.00" (should be "+0.0"). + (format nil "~E" 0.01) => "10.e-3" (should be "1.e-2"); + (format nil "~G" 0.01) => "10.e-3" (should be "1.e-2"); 386: SunOS/x86 stack exhaustion handling broken According to , the @@ -1773,13 +1779,6 @@ WORKAROUND: implementation of read circularity, using a symbol as a marker for the previously-referenced object. -415: Issues creating large arrays on x86-64/Linux and x86/Darwin - - (make-array (1- array-dimension-limit)) - - causes a GC invariant violation on x86-64/Linux, and - an unhandled SIGILL on x86/Darwin. - 416: backtrace confusion (defun foo (x) @@ -1805,27 +1804,26 @@ WORKAROUND: 419: stack-allocated indirect closure variables are not popped - (locally (declare (optimize sb-c::stack-allocate-dynamic-extent - sb-c::stack-allocate-value-cells)) (defun bug419 (x) (multiple-value-call #'list (eval '(values 1 2 3)) (let ((x x)) - (declare (dynamic-extent x)) + (declare (sb-int:truly-dynamic-extent x)) (flet ((mget (y) (+ x y)) (mset (z) (incf x z))) (declare (dynamic-extent #'mget #'mset)) - ((lambda (f g) (eval `(progn ,f ,g (values 4 5 6)))) #'mget #'mset)))))) + ((lambda (f g) (eval `(progn ,f ,g (values 4 5 6)))) #'mget #'mset))))) (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 - SB-C::STACK-ALLOCATE-VALUE-CELLS needs to be explicitly turned on for - that to happen. Proper fix for this bug requires (Nikodemus thinks) - storing the relevant LAMBDA-VARs in a :DYNAMIC-EXTENT cleanup, and - teaching stack analysis how to deal with them. + 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 + :DYNAMIC-EXTENT cleanup, and teaching stack analysis how to deal + with them. 421: READ-CHAR-NO-HANG misbehaviour on Windows Console: @@ -1859,30 +1857,6 @@ generally try to check returns in safe code, so we should here too.) (Test-case adapted from CL-PPCRE.) -425: reading from closed streams - - Reported by Damien Cassou on sbcl-devel. REPL transcript follows: - - * (open ".bashrc" :direction :input) - # - * (defparameter *s* *) - *S* - * (read-line *s*) - "# -*- Mode: Sh -*-" - * (read-line *s*) - "# Files you make look like rw-r--r--" - * (open-stream-p *s*) - T - * (close *s*) - T - * (open-stream-p *s*) - NIL - * (read-line *s*) - "umask 022" - - The problem is with the fast path using ansi-stream-cin-buffer not hitting - closed-flame. - 426: inlining failure involving multiple nested calls (declaim (inline foo)) @@ -1907,7 +1881,23 @@ generally try to check returns in safe code, so we should here too.) call for functions already inline converted there, but he is not sure if this has adverse effects elsewhere. -428: TIMER SCHEDULE-STRESS in timer.impure.lisp fails +428: TIMER SCHEDULE-STRESS and PARALLEL-UNSCHEDULE in + timer.impure.lisp fails Failure modes vary. Core problem seems to be (?) recursive entry to RUN-EXPIRED-TIMERS. + +429: compiler hangs + + Compiling a file with this contents makes the compiler loop in + ORDER-UVL-SETS: + + (declaim (inline storage)) + (defun storage (x) + (the (simple-array flt (*)) (unknown x))) + + (defun test1 (lumps &key cg) + (let ((nodes (map 'list (lambda (lump) (storage lump)) + lumps))) + (setf (aref nodes 0) 2) + (assert (every #'~= (apply #'concatenate 'list nodes) '(2 3 6 9)))))