Hello,

while trying to migrate our codebase from cmucl 18e to 19c, I have 
encountered
two problems; the first one (foo1) looks to me like a bug somewhere deep 
in the
compiler, and the second one (foo2) seems to be just an unhelpful error 
message
triggered by buggy code on our side.

To reproduce the errors, get the sources (51KB) from
http://www.ags.uni-sb.de/~afranke/lisp/cmucl19c-problems.tgz
unpack them with 'tar zxf', cd into the toplevel dir, and run
        bin/Make foo1
or      bin/Make foo2

The output is attached for both cases (see foo1.txt and foo2.txt).

Besides the defsystem stuff, the lisp code in question is:
(foo1):
               (defun foo (&key (test #'oddp))
                 (remove-if #'(lambda (x)
                                       (apply test (list x)))
                  nil))

(foo2):
               (defun foo ()
                 (let (a)
                  (declare (type (simple-array list 1) a))
                  (mapc #'(lambda (x)
                                  (bar a))
                   nil)))

The second error can be fixed easily by quoting the list symbol
in the type declaration, but the first one is non-obvious to me.

Thanks for your time,
Andreas



-- Attached file included as plaintext by Listar --
-- File: foo1.txt

/tmp/cmucl19c-problems> bin/Make foo1
; Compiling LAMBDA (.PV-CELL. .NEXT-METHOD-CALL. OBJECT STREAM):
; Compiling Top-Level Form:
; Compiling LAMBDA (.PV-CELL. .NEXT-METHOD-CALL. OBJECT STREAM):
; Compiling Top-Level Form:
; Loading #P"/tmp/cmucl19c-problems/src/sys/foo1.system".
; Loading #P"/tmp/cmucl19c-problems/src/share/foo1.lisp".


; Python version 1.1, VM version Intel x86 on 09 JAN 06 04:26:55 pm.
; Compiling: /tmp/cmucl19c-problems/src/share/foo1.lisp 06 JAN 06 05:46:50 am

; Converted FOO.
; Compiling DEFUN FOO:

;
;
; File: /tmp/cmucl19c-problems/src/share/foo1.lisp

; In: DEFUN FOO

;   (APPLY TEST (LIST X))
; --> MULTIPLE-VALUE-CALL LET IF
; ==>
;   (KERNEL:%COERCE-TO-FUNCTION #:OO-3)
; Note: Unable to optimize because:
;     Might be a symbol, so must call FDEFINITION at runtime.
;
;   #'(LAMBDA (X) (APPLY TEST #))
; Note: Return type not fixed values, so can't use known return convention:
;   *
;
;   (DEFUN FOO (&KEY #) (REMOVE-IF #'# NIL))
; Note: Return type not fixed values, so can't use known return convention:
;   *

Type-error in KERNEL::OBJECT-NOT-TYPE-ERROR-HANDLER:
   NIL is not of type C::CONTINUATION
   [Condition of type TYPE-ERROR]

Restarts:
  0: [ABORT] Skip remaining initializations.

Debug  (type H for help)

(C::FIND-PUSHED-CONTINUATIONS #<C::CBLOCK Start = c1 {58A819BD}>)
Source: Error finding source:
Error in function DEBUG::GET-FILE-TOP-LEVEL-FORM:  Source file no longer exists:
  target:compiler/stack.lisp.
0] d
(C::STACK-ANALYZE #<C:COMPONENT #x58A85B9D  NAME= "DEFUN FOO">)
1] d
(C::NATIVE-COMPILE-COMPONENT #<C:COMPONENT #x58A85B9D  NAME= "DEFUN FOO">)
2] d
(C::COMPILE-COMPONENT #<C:COMPONENT #x58A85B9D  NAME= "DEFUN FOO">)
3] d
(C::COMPILE-TOP-LEVEL
    (#<LAMBDA #x58A61005
         NAME= "Top-Level Form"
         TYPE= #
         WHERE-FROM= :DEFINED
         VARS= NIL>)
    NIL)
4] d
(C::CONVERT-AND-MAYBE-COMPILE
    (C::%DEFUN 'FOO #'(LAMBDA # #) NIL '(DEFUN FOO # #))
    ((C::%DEFUN 'FOO #'# NIL '#) C::ORIGINAL-SOURCE-START 0 1))
5] d
(C::PROCESS-FORM (C::%DEFUN 'FOO #'(LAMBDA # #) NIL '(DEFUN FOO # #))
                    (C::ORIGINAL-SOURCE-START 0 1))
6] d
(C::PROCESS-FORM (DEFUN FOO (&KEY #) (REMOVE-IF #'# NIL))
                    (C::ORIGINAL-SOURCE-START 0 1))
7] d
(C::PROCESS-FORM 2
                    (DEFUN FOO (&KEY #) (REMOVE-IF #'# NIL))
                    (C::ORIGINAL-SOURCE-START 0 1))[:EXTERNAL]
8] d
(C::PROCESS-SOURCES #<Source-Info>)
9] d
((FLET #:G0
      C::SUB-COMPILE-FILE))
10] d
(C::SUB-COMPILE-FILE #<Source-Info> NIL)
11] d
(C::SUB-COMPILE-FILE 1 #<Source-Info> NIL)[:EXTERNAL]
12] d
(COMPILE-FILE "/tmp/cmucl19c-problems/src/share/foo1.lisp"
                  :OUTPUT-FILE 
"/tmp/cmucl19c-problems/binaries/I486-CMU-19/share/foo1.fasl"
                  :ERROR-FILE ...)
13] d
((FLET #:G1
       ))
14] d
(MAKE::COMPILE-FILE-OPERATION #<FILE: foo1> :NEW-SOURCE-AND-DEPENDENTS)
15] d
(MAKE::COMPILE-FILE-OPERATION #<FILE: foo1> :NEW-SOURCE-AND-DEPENDENTS)
16] d
(MAKE::COMPILE-AND-LOAD-OPERATION #<FILE: foo1> :NEW-SOURCE-AND-DEPENDENTS)
17] d
(MAKE::OPERATE-ON-COMPONENT #<FILE: foo1>
                                :COMPILE :NEW-SOURCE-AND-DEPENDENTS)
18] d
(MAKE::OPERATE-ON-COMPONENT #<FILE: foo1>
                                :COMPILE :NEW-SOURCE-AND-DEPENDENTS)
19] d
(MAKE::OPERATE-ON-COMPONENTS #<DEFSYSTEM: foo1>
                                 :COMPILE :NEW-SOURCE-AND-DEPENDENTS
                                 NIL)
20] d
(MAKE::OPERATE-ON-COMPONENT #<DEFSYSTEM: foo1>
                                :COMPILE :NEW-SOURCE-AND-DEPENDENTS)
21] d
(MAKE::OPERATE-ON-COMPONENT #<DEFSYSTEM: foo1>
                                :COMPILE :NEW-SOURCE-AND-DEPENDENTS)
22] d
(OPERATE-ON-SYSTEM FOO1 :COMPILE :FORCE :NEW-SOURCE-AND-DEPENDENTS 
...)[:OPTIONAL]
23] d
(OPERATE-ON-SYSTEM FOO1 :COMPILE :FORCE :NEW-SOURCE-AND-DEPENDENTS 
...)[:OPTIONAL]
24] d
(EVAL
     (PROGN
       (MAKE::COMPILE-SYS 'FOO1)
       (MAKE::DUMP-SYSTEM 'FOO1)
       (EXIT)))


-- Attached file included as plaintext by Listar --
-- File: foo2.txt

/tmp/cmucl19c-problems> bin/Make foo2
; Compiling LAMBDA (.PV-CELL. .NEXT-METHOD-CALL. OBJECT STREAM):
; Compiling Top-Level Form:
; Compiling LAMBDA (.PV-CELL. .NEXT-METHOD-CALL. OBJECT STREAM):
; Compiling Top-Level Form:
; Loading #P"/tmp/cmucl19c-problems/src/sys/foo2.system".
; Loading #P"/tmp/cmucl19c-problems/src/share/foo2.lisp".


; Python version 1.1, VM version Intel x86 on 09 JAN 06 04:29:59 pm.
; Compiling: /tmp/cmucl19c-problems/src/share/foo2.lisp 06 JAN 06 06:42:24 am


; In: LAMBDA NIL

;   #'(LAMBDA (X) (BAR A))
; Note: Variable X defined but never used.
;
; Converted FOO.
; Compiling DEFUN FOO:

;
;
; File: /tmp/cmucl19c-problems/src/share/foo2.lisp

; In: DEFUN FOO

;   #'(LAMBDA (X) (BAR A))
; Note: Variable X defined but never used.
;
;   (LET (A)
;     (DECLARE #)
;     (MAPC #'# NIL))
; Warning: The binding of A is not a (VALUES &OPTIONAL (SIMPLE-ARRAY LIST #) 
&REST T):
;   NIL
;
; Note: Deleting unreachable code.
;
;   (DEFUN FOO ()
;     (LET #
;       #
;       #))
; Note: Return type not fixed values, so can't use known return convention:
;   *


Error in function LISP::ASSERT-ERROR:
   The assertion (EQ C::ENV
                     (C::LAMBDA-ENVIRONMENT
                      (C::LAMBDA-VAR-HOME C::THING))) failed.
   [Condition of type SIMPLE-ERROR]

Restarts:
  0: [CONTINUE] Retry assertion.
  1: [ABORT   ] Skip remaining initializations.

Debug  (type H for help)

(LISP::ASSERT-ERROR (EQ C::ENV (C::LAMBDA-ENVIRONMENT #)) NIL NIL)
Source: Error finding source:
Error in function DEBUG::GET-FILE-TOP-LEVEL-FORM:  Source file no longer exists:
  target:code/macros.lisp.
0] d
(C::FIND-IN-ENVIRONMENT #<C::LAMBDA-VAR #x58A7529D  NAME= #:G3>
                           #<C::ENVIRONMENT #x58A8C7DD
                               FUNCTION= #<LAMBDA #x58A7360D
                                             NAME= FOO
                                             TYPE= #<FUNCTION-TYPE #>
                                             WHERE-FROM= :DEFINED
                                             VARS= NIL>
                               NLX-INFO= (#<C::NLX-INFO 58AA1025>
                                          #<C::NLX-INFO 58A8C81D>)>)
1] d
(C::IR2-CONVERT-REF
    #<C::REF #x58A76715  LEAF= #<C::LAMBDA-VAR #x58A7529D  NAME= #:G3>>
    #<C::IR2-BLOCK #x58AA4E4D>)
2] d
(C::IR2-CONVERT-BLOCK #<C::CBLOCK Start = c2 {58A7FD35}>)
3] d
(C:IR2-CONVERT #<C:COMPONENT #x58A7B79D  NAME= "DEFUN FOO">)
4] d
(C::NATIVE-COMPILE-COMPONENT #<C:COMPONENT #x58A7B79D  NAME= "DEFUN FOO">)
5] d
(C::COMPILE-COMPONENT #<C:COMPONENT #x58A7B79D  NAME= "DEFUN FOO">)
6] d
(C::COMPILE-TOP-LEVEL
    (#<LAMBDA #x58A61245
         NAME= "Top-Level Form"
         TYPE= #
         WHERE-FROM= :DEFINED
         VARS= NIL>)
    NIL)
7] d
(C::CONVERT-AND-MAYBE-COMPILE
    (C::%DEFUN 'FOO #'(LAMBDA # #) NIL '(DEFUN FOO # #))
    ((C::%DEFUN 'FOO #'# NIL '#) C::ORIGINAL-SOURCE-START 0 1))
8] d
(C::PROCESS-FORM (C::%DEFUN 'FOO #'(LAMBDA # #) NIL '(DEFUN FOO # #))
                    (C::ORIGINAL-SOURCE-START 0 1))
9] d
(C::PROCESS-FORM
    (DEFUN FOO ()
      (LET #
        #
        #))
    (C::ORIGINAL-SOURCE-START 0 1))
10] d
(C::PROCESS-FORM 2
                     (DEFUN FOO ()
                       (LET #
                         #
                         #))
                     (C::ORIGINAL-SOURCE-START 0 1))[:EXTERNAL]
11] d
(C::PROCESS-SOURCES #<Source-Info>)
12] d
((FLET #:G0
       C::SUB-COMPILE-FILE))
13] d
(C::SUB-COMPILE-FILE #<Source-Info> NIL)
14] d
(C::SUB-COMPILE-FILE 1 #<Source-Info> NIL)[:EXTERNAL]
15] d
(COMPILE-FILE "/tmp/cmucl19c-problems/src/share/foo2.lisp"
                  :OUTPUT-FILE 
"/tmp/cmucl19c-problems/binaries/I486-CMU-19/share/foo2.fasl"
                  :ERROR-FILE ...)
16] d
((FLET #:G1
       ))
17] d
(MAKE::COMPILE-FILE-OPERATION #<FILE: foo2> :NEW-SOURCE-AND-DEPENDENTS)
18] d
(MAKE::COMPILE-FILE-OPERATION #<FILE: foo2> :NEW-SOURCE-AND-DEPENDENTS)
19] d
(MAKE::COMPILE-AND-LOAD-OPERATION #<FILE: foo2> :NEW-SOURCE-AND-DEPENDENTS)
20] d
(MAKE::OPERATE-ON-COMPONENT #<FILE: foo2>
                                :COMPILE :NEW-SOURCE-AND-DEPENDENTS)
21] d
(MAKE::OPERATE-ON-COMPONENT #<FILE: foo2>
                                :COMPILE :NEW-SOURCE-AND-DEPENDENTS)
22] d
(MAKE::OPERATE-ON-COMPONENTS #<DEFSYSTEM: foo2>
                                 :COMPILE :NEW-SOURCE-AND-DEPENDENTS
                                 NIL)
23] d
(MAKE::OPERATE-ON-COMPONENT #<DEFSYSTEM: foo2>
                                :COMPILE :NEW-SOURCE-AND-DEPENDENTS)
24] d
(MAKE::OPERATE-ON-COMPONENT #<DEFSYSTEM: foo2>
                                :COMPILE :NEW-SOURCE-AND-DEPENDENTS)
25] d
(OPERATE-ON-SYSTEM FOO2 :COMPILE :FORCE :NEW-SOURCE-AND-DEPENDENTS 
...)[:OPTIONAL]
26] d
(OPERATE-ON-SYSTEM FOO2 :COMPILE :FORCE :NEW-SOURCE-AND-DEPENDENTS 
...)[:OPTIONAL]
27] d
(EVAL
     (PROGN
       (MAKE::COMPILE-SYS 'FOO2)
       (MAKE::DUMP-SYSTEM 'FOO2)
       (EXIT)))



Reply via email to