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:
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"
(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.
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 <http://alfa.s145.xrea.com/sbcl/solaris-x86.html>, the
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)
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.
+ 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
+ :DYNAMIC-EXTENT cleanup, and teaching stack analysis how to deal
+ with them.
421: READ-CHAR-NO-HANG misbehaviour on Windows Console:
(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)
- #<SB-SYS:FD-STREAM for "file /home/cassou/.bashrc" {A6ADFC9}>
- * (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))
- (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.
-
-427: ANY-REG not good for primitive type T
-
- ...which is true, of course, but the following should not complain
- about it (on x86 and x86-64):
-
- (sb-alien:with-alien ((buf (array (sb-alien:signed 8) 16))))
-
- reported by Stelian Ionescu on sbcl-devel.
-
-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)))))
+
+431: alien strucure redefinition doesn't work as expected
+ fixed in 1.0.21.29