[Ecls-list] how to prevent ECL entering debugger when C compiler fails?

Anton Vodonosov avodonosov at yandex.ru
Thu Jan 12 01:57:23 UTC 2012


Hello.

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"))

Available restarts:

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
;;
>  compiler:*compiler-break-enable*

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.

Best regards,
- Anton 




More information about the ecl-devel mailing list