internal error, failed AVER:
"(COMMON-LISP:EQ (SB!C::TN-ENVIRONMENT SB!C:TN) SB!C::TN-ENV)"
+ This examples better illustrates the problem:
+
+ (defun tst ()
+ (declare (optimize (speed 2) (debug 3)))
+ (flet ((m1 ()
+ (bar (if (foo) 1 2))
+ (let ((x (foo)))
+ (bar x (list x)))))
+ (if (catch nil)
+ (m1)
+ (m1))))
+
+ (X is allocated in the physical environment of M1; X is :WRITE in
+ the call of LET [convert-to-global]; IF makes sure that a block
+ exists in M1 before this call.)
+
+ Because X is :DEBUG-ENVIRONMENT, it is :LIVE by default in all
+ blocks in the environment, particularly it is :LIVE in the start of
+ M1 (where it is not yet :WRITE) [setup-environment-tn-conflicts].
+
+ Then :LIVE is propagated backwards, i.e. into the caller of M1
+ where X does not exist [lifetime-flow-analysis].
+
+ (CATCH NIL) causes all TNs to be saved; Python fails on saving
+ non-existent variable; if it is replaced with (FOO), the problem
+ appears when debugging TST: LIST-LOCALS says
+
+ debugger invoked on condition of type SB-DI:UNKNOWN-DEBUG-VAR:
+
+ #<SB-DI::COMPILED-DEBUG-VAR X 0
+ {905FF7D}> is not in #<SB-DI::COMPILED-DEBUG-FUNCTION TST>.
+
+ (in those old versions, in which debugger worked :-().
+
117:
When the compiler inline expands functions, it may be that different
kinds of return values are generated from different code branches.
(see bug 203)
-193: "unhelpful CLOS error reporting when the primary method is missing"
- In sbcl-0.7.7, when
- (defmethod foo :before ((x t)) (print x))
- is the only method defined on FOO, the error reporting when e.g.
- (foo 12)
- is relatively unhelpful:
- There is no primary method for the generic function
- #<STANDARD-GENERIC-FUNCTION FOO (1)>.
- with the offending argument nowhere visible in the backtrace. This
- continues even if there *are* primary methods, just not for the
- specified arg type, e.g.
- (defmethod foo ((x character)) (print x))
- (defmethod foo ((x string)) (print x))
- (defmethod foo ((x pathname)) ...)
- In that case it could be very helpful to know what argument value is
- falling through the cracks of the defined primary methods, but the
- error message stays the same (even BACKTRACE doesn't tell you what the
- bad argument value is).
-
194: "no error from (THE REAL '(1 2 3)) in some cases"
fixed parts:
a. In sbcl-0.7.7.9,