[Ecls-list] [PATCH RESEND] Fix the value of the print-function depth parameter in defstruct.

Juan Jose Garcia-Ripoll juanjose.garciaripoll at googlemail.com
Wed Oct 7 09:30:24 UTC 2009


On Wed, Oct 7, 2009 at 11:19 AM, Alexander Gavrilov
<angavrilov at gmail.com> wrote:
>> I was not really interested in a piece of the backtrace (which indeed
>> does not show the offending code, just an infinite recursion due to
>> problems that originated much earlier), but rather _how_ you cause the
>> Ctrl-C to break ECL. Just typing (loop) at the prompt and issuing
>> Ctrl-C? Or does it happen inside a more complicated piece of code.
>
> I just start it and immediately press Ctrl-C as soon as I see the
> prompt. In fact, if it is actually running any kind of loop, it just
> enters the debugger and then hangs when I tell it to :continue.
> It also crashes if I enter (read) and then press Ctrl-C.
> If ecl-readline is used, it does not crash even while doing (read).

I do not know about ecl-readline, but I think I have found the cause
to the other problems. We installed the signal handlers too late. That
meant they overwrote the ones needed by the garbage collector. In
addition to this, (continue) did not work because it did not resume
the processes that got suspended due to the Ctrl-C. This should have
been fixed in CVS/git. I am verifying other platforms right now.

Let me now add a kind of transcript of a typical session with Ctrl-C
and ask you to reproduce it. Note that processes do not get
interrupted immediately, they only get suspended. If you want to
interrupt a given thread, you have to use a restart (:r2) Could you
(and anybody else reading this) try it?

Juanjo

jjgarcia at quinfog:~/tmp/intel64.all$ ./bin/ecl -norc
ECL (Embeddable Common-Lisp) 9.10.1
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 SI:TOP-LEVEL 000000000121df60>.
> (loop)
^C
;;; Suspending process #<process TOP-LEVEL 000000000121df60>
Console interrupt

Available restarts:

1. (CONTINUE) CONTINUE
2. (INTERRUPT-PROCESS) Interrupt a certain process.

Broken at NIL. In: #<process SI:HANDLE-SIGNAL 000000000121db40>.
>> :w


Debugger's waiting list:

   >1: #<process SI:HANDLE-SIGNAL 000000000121db40>
    2: #<process SI:TOP-LEVEL 000000000121df60>

>> :r2

Choose the integer code of process to interrupt.
Use special code 0 to cancel this operation.
   1: #<process SI:HANDLE-SIGNAL 000000000121dba0>
   2: #<process SI:TOP-LEVEL 000000000121df60>
>> 2

Console interrupt

Available restarts:

1. (RESTART-TOPLEVEL) Go back to Top-Level REPL.

Broken at SI:BYTECODES. [Evaluation of: (LOOP)] In: #<process
SI:TOP-LEVEL 000000000121df60>.
>> :b

Backtrace:
  > SI:BYTECODES [Evaluation of: (LOOP)]
  > si:bytecodes [Evaluation of: (si:top-level)]

>> :q

Top level in: #<process SI:TOP-LEVEL 000000000121df60>.
> (quit)


-- 
Instituto de Física Fundamental, CSIC
c/ Serrano, 113b, Madrid 28006 (Spain)
http://juanjose.garciaripoll.googlepages.com




More information about the ecl-devel mailing list