[Ecls-list] how to prevent ECL entering debugger when C compiler fails?
avodonosov at yandex.ru
Thu Jan 12 01:57:23 UTC 2012
I have code similar to this:
(handler-case (quicklisp:quickload :some-library)
(serious-condition (condition) (my-error-handler))
When I run it on ECL and C compiler returns error from compiling .c file,
I have the following (despite the handler-case):
Error code 2 when executing
(RUN-PROGRAM "cl" ("-I." "-IC:/Users/anton/unpacked/ecl/ecl-11.1.1/bin/" "/EHsc" "/DGC_DLL" "/DGC_BUILD" "/nologo" "/D_CRT_SECURE_NO_DEPRECATE" "/DNDEBUG" "/MD" "/O2" "/O2" "-w" "-c" "C:/Users/anton/AppData/Roaming/common-lisp/cache/ecl-11.1.1-win-x86/C/Users/anton/projects/cl-test-grid/quicklisp/dists/quicklisp/software/babel-20120107-git/src/ASDF-TMP-jpn-table.c" "-FoC:/Users/anton/AppData/Roaming/common-lisp/cache/ecl-11.1.1-win-x86/C/Users/anton/projects/cl-test-grid/quicklisp/dists/quicklisp/software/babel-20120107-git/src/ASDF-TMP-jpn-table.obj"))
1. (CONTINUE) Continues anyway.
2. (ABORT) ABORT
3. (TRY-RECOMPILING) Try recompiling jpn-table
4. (RETRY) Retry compiling component ("babel" "src" "jpn-table").
5. (ACCEPT) Continue, treating compiling component ("babel" "src" "jpn-table") a
s having been successful.
6. (ABORT) Give up on "babel-tests"
7. (CONTINUE) Ignore initialization errors and continue.
8. (ABORT) Quit ECL unsafely, ignoring all existing threads.
Top level in: #<process TOP-LEVEL>.
;; I can then check variable compiler:*compiler-break-enable*, its value is T
How to prevent this situation?
Take into account, that right after ECL startup,
compiler:*compiler-break-enable* is NIL:
So I suppose something sets it to T during compile-file.
The problem is complicated by several facts:
- I want the code to run not only on ECL
- Even on ECL, the lisp-to-c compiler module is not always available
(depending on ECL build options)
- Even if the lisp-to-c compiler enabled during ECL build,
it is not loaded until (require 'cmp) or (compile-file ...)
I am on this problem for some time already, and as you see found
the compiler:*compiler-break-enable* in ECL sources, but still
don't know how to solve this.
I would appreciation help.
More information about the ecl-devel