New ECL with better type propagator finds bug in maxima
Subject: New ECL with better type propagator finds bug in maxima
From: Dr. David Kirkby
Date: Mon, 03 Aug 2009 10:40:56 +0100
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'