[Ecls-list] Error: macro form was not expanded successfully.

Waldek Hebisch hebisch at math.uni.wroc.pl
Sat Dec 17 16:58:19 UTC 2011


It seems that recent changes to ECL broke FriCAS build.
Below is minimized version of the problem.  Create
two files, tttm.lisp and tttf.lisp as below:

---------------<tttm.lisp cut here>------------
(defmacro MUST (dothis &optional (this-is nil) (in-rule nil))
  `(or ,dothis (meta-syntax-error ,this-is ,in-rule)))
--------------------<cut here>-----------------
---------------<tttf.lisp cut here>------------
(DEFUN |parse_With| ()
  (PROG ()
    (RETURN
     (COND ((NULL (|match_symbol| '|with|)) NIL)
           ('T
            (PROGN
             (MUST (|parse_Category|))
             (|push_form1| '|with| (|pop_stack_1|))))))))
--------------------<cut here>-----------------


Then do:

(require :cmp)
(proclaim '(optimize (speed 3) (safety 1)))
(load (compile-file "tttm.lisp"))
(compile-file "tttf.lisp")

which gives me:

;;;
;;; Compiling tttf.lisp.
;;; OPTIMIZE levels: Safety=1, Space=0, Speed=3, Debug=0
;;;
;;; Compiling (DEFUN |parse_With| ...).
;;; Error:
;;;   in file tttf.lisp, position 0
;;;   at (DEFUN parse_With ...)
;;;   * The macro form (MUST (|parse_Category|)) was not expanded successfully.
;;; Error detected:
;;; Detected access to an invalid or protected memory address.
NIL
T
T

That is on 64-bit Core 2 running Debian 6.0.

Note: there is no problem at default optimization level or
if the MUST macro is in the same file.

-- 
                              Waldek Hebisch
hebisch at math.uni.wroc.pl 




More information about the ecl-devel mailing list