[Ecls-list] Internal error when compiling the Snark theorem prover with ECL 12.7.1
Matthias Hölzl
tc at xantira.com
Wed Oct 31 00:17:04 UTC 2012
Hello,
when compiling the Snark theorem prover (<http://www.ai.sri.com/~stickel/snark.html>, or with ASDF system definition at <https://github.com/hoelzl/Snark>), ECL (version 12.7.1 on OSX 10.8.2, installed using homebrew) fails with an internal error:
silverbird:Snark tc$ ecl
;;; Loading "/Users/tc/Prog/Lisp/Quicklisp/setup.lisp"
;;; Loading #P"/usr/local/Cellar/ecl/12.7.1/lib/ecl-12.7.1/cmp.fas"
;;; Loading #P"/usr/local/Cellar/ecl/12.7.1/lib/ecl-12.7.1/asdf.fas"
ECL (Embeddable Common-Lisp) 12.7.1 (git:UNKNOWN)
Copyright (C) 1984 Taiichi Yuasa and Masami Hagiya
Copyright (C) 1993 Giuseppe Attardi
Copyright (C) 2000 Juan J. Garcia-Ripoll
ECL is free software, and you are welcome to redistribute it
under certain conditions; see file 'Copyright' for details.
Type :h for Help.
Top level in: #<process TOP-LEVEL>.
> (asdf:compile-system :snark)
;;; Loading "/Users/tc/Prog/Lisp/Hacking/Snark/snark.asd"
;;; Loading "/Users/tc/Prog/Lisp/Hacking/Snark/src/snark-implementation.asd"
[...]
;;; Emitting code for UNIFY-IDENTITY.
;;; Emitting code for #:G1290.
/Users/tc/.cache/common-lisp/ecl-12.7.1-unknown-macosx-x86/Users/tc/Prog/Lisp/Hacking/Snark/src/ASDF-TMP-unify-bag.c:7252:10: error:
use of undeclared identifier 'aux_closure'
value0=(aux_c...
^
/Users/tc/.cache/common-lisp/ecl-12.7.1-unknown-macosx-x86/Users/tc/Prog/Lisp/Hacking/Snark/src/ASDF-TMP-unify-bag.c:7252:26: error:
use of undeclared identifier 'env0'
value0=(aux_closure.env=e...
^
[...]
/Users/tc/.cache/common-lisp/ecl-12.7.1-unknown-macosx-x86/Users/tc/Prog/Lisp/Hacking/Snark/src/ASDF-TMP-unify-bag.c:7276:65: error:
use of undeclared identifier 'aux_closure'
value0=(aux_closure.env=env0,cl_env_copy->function=(cl_object)&aux_c...
^
9 errors generated.
;;; Internal error:
;;; ** Error code 1 when executing
;;; (RUN-PROGRAM "cc" ("-I." "-I/usr/local/Cellar/ecl/12.7.1/include/" "-g" "-O2" "-fPIC" "-fno-common" "-D_THREAD_SAFE" "-Ddarwin" "-O2" "-w" "-c" "/Users/tc/.cache/common-lisp/ecl-12.7.1-unknown-macosx-x86/Users/tc/Prog/Lisp/Hacking/Snark/src/ASDF-TMP-unify-bag.c" "-o" "/Users/tc/.cache/common-lisp/ecl-12.7.1-unknown-macosx-x86/Users/tc/Prog/Lisp/Hacking/Snark/src/ASDF-TMP-unify-bag.o"))
Condition of type: COMPILE-ERROR
Error while invoking #<compile-op NIL 000000010de0f690> on #<cl-source-file "snark-implementation" "unify-bag">
The first offending function in unify-bag.c is the following
/* local function G1253 */
/* optimize speed 3, debug 0, space 0, safety 2 */
static cl_object LC39__g1253(cl_object V1)
{ VT46 VLEX46 CLSR46 STCK46
const cl_env_ptr cl_env_copy = ecl_process_env();
cl_object value0;
ecl_cs_check(cl_env_copy,value0);
{
TTL:
value0=(aux_closure.env=env0,cl_env_copy->function=(cl_object)&aux_closure,LC49bind_yterm(2,ecl_make_fixnum(0),V1)) /* BIND-YTERM */;
return value0;
}}
where the problem seems to be that the definition of STCK46 in unify-bag.eclh is
#define STCK46
static cl_object LC40__g1254(cl_object );
which does not include the definition of aux_closure. As far as I can tell by looking at the C output, LC39__g1253 is part of the definition of the BIND-XTERM function, which is pretty hairy and defined inside a LABELS form. Unfortunately I have no simple test case that triggers the error, so this is probably not be a particularly useful bug report. Sorry about that.
Best regards,
Matthias
More information about the ecl-devel
mailing list