[Ecls-list] Re: EVAL-WHEN gets out of control

Juan Jose Garcia Ripoll worm at arrakis.es
Sun Oct 21 06:34:02 UTC 2001

[This message is being forwarded to the ecls list, since it may be of interest
for other people]

> Unfortunately it seems that I can't build ECLS anymore.  I can't
> say for sure whether these latest changes did it since my previous
> version was from time before the documentation string/help file
> generation and Symbolics LOOP changes.  I'm doing default
> "./configure && make" build.  Anyway, what happens is that I get
> ecls_min built but then:
> [...]
> /home/azure/projects/software/3rdparty/ecls-compiled/src/lsp/defmacro.lsp
> make[1]: *** [ecls] Error 139

I have solved the problem, which was due to a missing source file 
(helpfile.lsp). Nevertheless, since anybody playing with the ECLS source may 
find a similar type of errors let me explain what happened.

The build of ECLS consists on two steps. The first step builds the 
interpreter and the core library, with the minimal functions to support a 
lisp environment.

The second step is what I call the bootstrap process and consists on 
compiling the lisp source files using this minimal environment. In order to 
do so, all lisp files are loaded into the interpreter and then the compiler 
is used to build the final "ecls" executable.

When ECLS stops during the boot process, without error messages, it means 
that there is some error in the lisp source files. Since "conditions.lsp" can 
only be loaded at the end, ECLS does not know what to do with the error 
message and enters an endless loop which in some platforms leads to memory 
exhaustion. This can only happen during boot process.

A way to detect the precise error is to enter GDB with 'gdb ecls_min' and do 
a 'source .gdbinit'. These two steps set up a minimal set of breakpoints to 
debug the interpreter. Next run the program as usual and type '(load 
"compile.lsp")' when the lisp propmt appears. Typically, "ecls_min" will 
begin to load the source files and at some point it will stop in the 
FEerror() or error() functions, from which you can inspect the error 



More information about the ecl-devel mailing list