I have gotten into some compiler troubles with 18d which is somewhat
over my head, and I hope somebody can give me some hints to what is wrong.

I am working with debian cmucl package version 3.1.3. When this starts
up it displays the following banner:

    situla:~> lisp
    ; Loading #p"/n/knud/export/home/tedchly/init.lisp".
    CMU Common Lisp release x86-linux 3.1.2 18d+ 29 August 2002 build 4186, running on 
situla
    For support see http://www.cons.org/cmucl/support.html Send bug reports to the 
debian BTS.
    or to [EMAIL PROTECTED]
    type (help) for help, (quit) to exit, and (demo) to see the demos

    Loaded subsystems:
        Python 1.0, target Intel x86
        CLOS based on PCL version:  September 16 92 PCL (f)
    * 

Previous versions, at least including 18c+ (which I believe had debian
package version 3.0.9) did not have the problem.

The problem arises when I compile `eclipse', the CL based window
manager.

I get the following error:


    Error in function COMMON-LISP::ASSERT-ERROR:
       The assertion (EQ C::ENV
                         (C::LAMBDA-ENVIRONMENT
                          (C::LAMBDA-VAR-HOME C::THING))) failed.

    Restarts:
      0: [CONTINUE] Retry assertion.
      1:            Return NIL from load of "compile.lisp".
      2: [ABORT   ] Skip remaining initializations.

    Debug  (type H for help)

    (COMMON-LISP::ASSERT-ERROR (EQ C::ENV (C::LAMBDA-ENVIRONMENT #)) NIL NIL)
    Source: 
    ; File: target:code/macros.lisp
    (RESTART-CASE (ERROR COND) (CONTINUE NIL :REPORT (LAMBDA # #) NIL))
    0] 

The function I believe triggers the problem looks like this (the trace
below seems to suggest that it is the loop construct at the end):

(defun eclipse-internal-loop (root-window)
  (let ((exit-p 0)
        (exit-x11-p t))

    ;; Sets the root window pop-up menu
    (nconc *menu-1-items*
           (acons "Exit WM"  (lambda (&rest) (setf exit-p 1 exit-x11-p nil))
                  (acons "Exit X11" (lambda (&rest) (setf exit-p 1)) '())))
    (with-slots (menu1 menu3) *root*
      (setf menu1 (apply #'make-pop-up *root* *menu-1-items*)
            menu3 (apply #'make-pop-up *root* 
                         (list (cons "move" (menu-3-function :move))
                               (cons "close" (menu-3-function :close))
                               (cons "resize" (menu-3-function :resize))
                               (cons "destroy" (menu-3-function :destroy))))))

    ;; Queue event for dressing already present-window when wm start.
    (flet ((ignorable-window-p (window)
             (let ((wm-hints (xlib:wm-hints window)))
               (or
                (eql (xlib:window-override-redirect window) :ON)
                (eql (xlib:window-map-state window) :UNMAPPED)
                (and wm-hints 
                     (eql (xlib:wm-hints-initial-state wm-hints) 
                          :WITHDRAWN))))))
           
      (xlib:with-event-queue (*display*)
        (mapcar #'(lambda (window)
                    (unless (ignorable-window-p window)
                      (xlib:queue-event *display* 
                                        :map-request
                                        :event-window root-window
                                        :window window)))
                (xlib:query-tree root-window))))

    ;; Main loop
    (loop with time = nil
          for event = (get-next-event *display* :discard-p t :timeout 2)
          when event do
            (catch 'general-error
              (handler-bind ((xlib::x-error #'handle-general-error-condition)
                             (end-of-file #'handle-end-of-file-condition)
                             (error #'handle-general-error-condition))
                (with-slots (event-window) event
                  (event-process event (gethash event-window *object-table*)))))
          when (zerop *nb-vscreen*) do (setf *nb-vscreen* 4)
          when pt:preprogrammed-tasks do (pt:execute-preprogrammed-tasks)
          unless (= (nb-vscreen (root-vscreens *root*)) *nb-vscreen*) do
            (adjust-vscreens (root-vscreens *root*))
          when (and (= exit-p 1) (not exit-x11-p)) do (extensions:quit)
          when (and (= exit-p 1) exit-x11-p) do
            (loop for val being each hash-value in *object-table*
                  do (close-window val))
            (setf time 10 exit-p 2)
          while (< exit-p 2))))

and the top of the stack with locals looks like this:

0] l
COMMON-LISP::ARGUMENTS  =  NIL
COMMON-LISP::ASSERTION  =  (EQ C::ENV
                               (C::LAMBDA-ENVIRONMENT
                                (C::LAMBDA-VAR-HOME C::THING)))
COMMON-LISP::DATUM  =  NIL
#:G1  =  NIL
#:OO-3  =  #<SIMPLE-ERROR {48228ADD}>
COMMON-LISP::PLACES  =  NIL

0] u

Top of stack.
0] d
(C::FIND-IN-ENVIRONMENT #<C::LAMBDA-VAR #x480E553D  NAME= EVENT>
                           #<C::ENVIRONMENT #x4821EE55
                               FUNCTION= #<LAMBDA #x4803B70D
                                             NAME= ECLIPSE-INTERNAL-LOOP
                                             TYPE= #<FUNCTION-TYPE #>
                                             WHERE-FROM= :DEFINED
                                             VARS= #>
                               NLX-INFO= (#<C::NLX-INFO 4821EE75>)>)
1] l
C::ENV  =  #<C::ENVIRONMENT #x4821EE55
                  FUNCTION= #<LAMBDA #x4803B70D
                                NAME= ECLIPSE-INTERNAL-LOOP
                                TYPE= #<FUNCTION-TYPE (FUNCTION # NULL)>
                                WHERE-FROM= :DEFINED
                                VARS= (ROOT-WINDOW)>
                  NLX-INFO= (#<C::NLX-INFO #x4821EE75
                                 CONTINUATION= #<Continuation c1>
                                 TARGET= #
                                 INFO= #<C::IR2-NLX-INFO 482207D5>>)>
C::THING  =  #<C::LAMBDA-VAR #x480E553D  NAME= EVENT>

1] d
(C::IR2-CONVERT-SET
    #<SET #x480E64D5
        VAR= #<C::LAMBDA-VAR #x480E553D  NAME= EVENT>
        VALUE= #<C::COMBINATION #x480E60BD  FUN= #<C::REF 480E608D>  ARGS= #>>
    #<C::IR2-BLOCK #x482224A5
        START-VOP= #<C::VOP #x482280B5
                       INFO= SYMBOL-VALUE
                       ARGS= #<C:TN-REF 48228065>
                       RESULTS= #<C:TN-REF 4822808D>>
        LAST-VOP= #<C::VOP #x48228A7D
                      INFO= C:MOVE
                      ARGS= #<C:TN-REF 48228A2D>
                      RESULTS= #<C:TN-REF 48228A55>>
        %LABEL= #<NEW-ASSEM:LABEL 1>>)
2] l
BLOCK  =  #<C::IR2-BLOCK #x482224A5
                 START-VOP= #<C::VOP #x482280B5
                                INFO= SYMBOL-VALUE
                                ARGS= #<C:TN-REF #x48228065
                                          TN= #<TN '*DISPLAY*!1[Const17]>
                                          WRITE-P= NIL
                                          VOP= SYMBOL-VALUE>
                                RESULTS= #<C:TN-REF #x4822808D
                                             TN= #<TN t2>
                                             WRITE-P= T
                                             VOP= SYMBOL-VALUE>>
                 LAST-VOP= #<C::VOP #x48228A7D
                               INFO= C:MOVE
                               ARGS= #<C:TN-REF #x48228A2D
                                         TN= #<TN t3[EDX]>
                                         WRITE-P= NIL
                                         VOP= C:MOVE>
                               RESULTS= #<C:TN-REF #x48228A55
                                            TN= #<TN t4>
                                            WRITE-P= T
                                            VOP= C:MOVE>>
                 %LABEL= #<NEW-ASSEM:LABEL 1>>
C::CONT  =  #<Continuation c3>
C::LEAF  =  #<C::LAMBDA-VAR #x480E553D  NAME= EVENT>
C::LOCS  =  NIL
C::NODE  =  #<SET #x480E64D5
                VAR= #<C::LAMBDA-VAR #x480E553D  NAME= EVENT>
                VALUE= #<C::COMBINATION #x480E60BD
                           FUN= #<C::REF #x480E608D
                                    LEAF= #<C::GLOBAL-VAR 480E602D>>
                           ARGS= (#<C::REF 480E6135> #<C::REF 480E61F5>
                                  #<C::REF 480E626D> #<C::REF 480E632D>
                                  #<C::REF 480E63F5>)>>
C::VAL  =  #<TN t4>

2] 


------------------------+-----------------------------------------------------
Christian Lynbech       | Ericsson Telebit, Skanderborgvej 232, DK-8260 Viby J
Phone: +45 8938 5244    | email: [EMAIL PROTECTED]
Fax:   +45 8938 5101    | web:   www.ericsson.com
------------------------+-----------------------------------------------------
Hit the philistines three times over the head with the Elisp reference manual.
                                        - [EMAIL PROTECTED] (Michael A. Petonic)

Reply via email to