b. The same for CSUBTYPEP.
262: "yet another bug in inline expansion of local functions"
- Compiler fails on
-
- (defun foo (x y)
- (declare (integer x y))
- (+ (block nil
- (flet ((xyz (u)
- (declare (integer u))
- (if (> (1+ (the unsigned-byte u)) 0)
- (+ 1 u)
- (return (+ 38 (cos (/ u 78)))))))
- (declare (inline xyz))
- (return-from foo
- (* (funcall (eval #'xyz) x)
- (if (> x 30)
- (funcall (if (> x 5) #'xyz #'identity)
- (+ x 13))
- 38)))))
- (sin (* x y))))
-
- Urgh... It's time to write IR1-copier.
+ During inline expansion of a local function Python can try to
+ reference optimized away objects (functions, variables, CTRANs from
+ tags and blocks), which later may lead to problems. Some of the
+ cases are worked around by forbidding expansion in such cases, but
+ the better way would be to reimplement inline expansion by copying
+ IR1 structures.
266:
David Lichteblau provided (sbcl-devel 2003-06-01) a patch to fix
gives the error
failed AVER: "(NOT (AND (NOT EQUALP) CERTAINP))"
-302: Undefined type messes up DATA-VECTOR-REF expansion.
- Compiling this file
- (defun dis (s ei x y)
- (declare (type (simple-array function (2)) s) (type ei ei))
- (funcall (aref s ei) x y))
- on sbcl-0.8.7.36/X86/Linux causes a BUG to be signalled:
- full call to SB-KERNEL:DATA-VECTOR-REF
-
303: "nonlinear LVARs" (aka MISC.293)
(defun buu (x)
(multiple-value-call #'list
collect `(array ,(sb-vm:saetp-specifier x)))))
=> NIL, T (when it should be T, T)
-308: "Characters without names"
- (reported by Bruno Haible sbcl-devel "character names are missing"
- 2004-04-19)
- (graphic-char-p (code-char 255))
- => NIL
- (char-name (code-char 255))
- => NIL
-
- SBCL is unsure of what to do about characters with codes in the
- range 128-255. Currently they are treated as non-graphic, but don't
- have names, which is not compliant with the standard. Various fixes
- are possible, such as
- * giving them names such as NON-ASCII-128;
- * reducing CHAR-CODE-LIMIT to 127 (almost certainly unpopular);
- * making the characters graphic (makes a certain amount of sense);
- * biting the bullet and implementing Unicode (probably quite hard).
-
309: "Dubious values for implementation limits"
(reported by Bruno Haible sbcl-devel "Incorrect value of
multiple-values-limit" 2004-04-19)
pprinter and only truncated at output? (So that indenting by 1/2
then 3/2 would indent by two spaces, not one?)
-350: heap overflow when printing bignums
- (reported by Bruno Haible 2004-10-08)
- In sbcl-0.8.15.18,
- * (DEFPARAMETER *BIG* (ASH 1 1000000))
- *BIG*
- * (PRINT *BIG*)
- Argh! gc_find_freeish_pages failed (restart_page), nbytes=110152.
- It should be straightforward to push the heap overflow threshold
- up to much larger bignums; Paul Dietz pointed out it would help to
- use a bignum-printing algorithm which bisected the printed number,
- rather than stripping off digits one by one, and CSR suggested using
- iteration rather than recursion to encourage intermediate results
- to be GCed.
-
-351: suboptimal error handling/reporting when compiling (PUSH (LET ...))
- In sbcl-0.8.15.18,
- * (defvar *b*)
- *B*
- * (defun oops ()
- (push *b*
- (let ((b *b*))
- (aref b 1))))
- causes the compiler to die with a TYPE-ERROR in SB-C::EXTRACT-LET-VARS,
- The value #:G4 is not of type LIST.
- Since the (LET ...) expression is being misused in PUSH as a
- SETFable place, it would be more helpful to fail as in
- * (defun oops2 () (setf (let ((b *b*)) (aref b 1)) *b*))
- with compilation errors and warnings like
- ; in: LAMBDA NIL
- ; ((B *B*))
- ; caught ERROR:
- ; illegal function call
- and
- ; caught WARNING:
- ; The function (SETF LET) is undefined, and its name is reserved
- ; by ANSI CL so that even if it were defined later, the code
- ; doing so would not be portable.
+352: forward-referenced-class trouble
+ reported by Bruno Haible on sbcl-devel
+ (defclass c (a) ())
+ (setf (class-name (find-class 'a)) 'b)
+ (defclass a () (x))
+ (defclass b () (y))
+ (make-instance 'c)
+ Expected: an instance of c, with a slot named x
+ Got: debugger invoked on a SIMPLE-ERROR in thread 78906:
+ While computing the class precedence list of the class named C.
+ The class named B is a forward referenced class.
+ The class named B is a direct superclass of the class named C.