New ECL with better type propagator finds bug in maxima



I'm helping out on the Sage project, hoping to improve the ease of 
building Sage on Solaris. There have been issues with ECL not building 
on Solaris. The ECL developers (in particular Juan Jose Garcia-Ripoll) 
have been developing ECL and improving Solaris support, but one of the 
things they have added is a "better type propagator".

Anyway, Maxima 5.16.3 fails to build on a CVS snapshot of ECL, and the 
ECL developer is (I believe) suggesting this is a bug in Maxima which 
has been detected by ecl's improved type propagator. (I appreciate this 
is not the latest Maxima, but I thought I'd report it anyway. If it has 
been fixed, I'll use a later Maxima if possible).

A new release of ECL will be made in less that a week, so whilst this 
error will not be seen in the latest official ecl distribution, it might 
be in less than a week.

I don't know lisp at all, and have no idea how to debug this myself. Can 
anyone confirm if this is a bug in maxima? If so, is there a 
work-around/patch I could add?

The comments of Juanjo are:
-------------------------------------------
Ooops, ECL now implements a better type propagator, which has detected
an error in the following function

(defun queue+p (nd lab)
   (cond ((null (setq *db* (+labs nd)))
[...]        (t
          (iorm *db* (logior +lab-high-bit+ (unlab lab))))))

Based on this definition

(defmacro iorm (cell n)
   `(rplaca ,cell (logior (car ,cell) (car ,n))))

the second argument to (IORM *db* ...) should be a cons, not an integer.

Juanjo
-----------------------------------------------

The actual error message I got when building maxima-5.16.3 are

;;; Compiling (DEFUN UNMRKS ...).
;;; Compiling (DEFMACRO +LABZ ...).
;;; Compiling (DEFMACRO -LABZ ...).
;;; Compiling (DEFMACRO =LABZ ...).
;;; Compiling (DEFMACRO NLABZ ...).
;;; Compiling (DEFMACRO ULABZ ...).
;;; Compiling (DEFMACRO SUBP ...).
;;; Note: in file
/export/home/drkirkby/sage/sage-4.1.1.rc0/spkg/build/maxima-5.16.3.p2/src/src/db.lisp, 

position 3650, and form
;;;   (FSET 'SUBP #'(LAMBDA-BLOCK SUBP # ...) ...)
;;; Replacing variable FORM by its value #<form VAR 13B22A0>
;;; Compiling (DEFUN DBNODE ...).
;;; Compiling (DEFUN NODEP ...).
;;; Compiling (DEFUN DBVARP ...).
;;; Compiling (DEFUN LAB ...).
;;; Compiling (DEFUN LPR ...).
;;; Compiling (DEFUN LABEQ ...).
;;; Compiling (DEFUN MARKND ...).
;;; Compiling (DEFUN DBV ...).
;;; Compiling (DEFUN DBA ...).
;;; Compiling (DEFUN PRLAB ...).
;;; Compiling (DEFUN ONP ...).
;;; Compiling (DEFUN OFFP ...).
;;; Compiling (DEFUN ONPU ...).
;;; Compiling (DEFUN VISIBLEP ...).
;;; Compiling (DEFUN CANCEL ...).
;;; Compiling (DEFUN QUEUE+P ...).
;;; Warning: COMPILE-FILE warned while performing
               #<ASDF:COMPILE-OP NIL 8324128> on
               #<ASDF:CL-SOURCE-FILE "db" "maxima" 6596624>.
;;; Warning: COMPILE-FILE failed while performing
               #<ASDF:COMPILE-OP NIL 8324128> on
               #<ASDF:CL-SOURCE-FILE "db" "maxima" 6596624>.
An error occurred during initialization:
erred while invoking #<ASDF:COMPILE-OP NIL 8324128> on
#<ASDF:CL-SOURCE-FILE "db" "maxima" 6596624>.
;;; Error: in file
/export/home/drkirkby/sage/sage-4.1.1.rc0/spkg/build/maxima-5.16.3.p2/src/src/db.lisp, 

position 5563, and form
;;;   (FSET 'QUEUE+P #'(LAMBDA-BLOCK QUEUE+P # ...))
;;; In the argument 1 of a call to CAR, the type of the form (LOGIOR
LAB-HIGH-BIT (UNLAB LAB)) is INTEGER, not LIST.make[3]: ***
[binary-ecl/maxima] Error 1
make[3]: Leaving directory
`/export/home/drkirkby/sage/sage-4.1.1.rc0/spkg/build/maxima-5.16.3.p2/src/src'