[Ecls-list] ECL-generated executables and restarts

Matthew Mondor mm_lists at pulsar-zone.net
Fri Jan 21 22:45:03 UTC 2011


On Fri, 21 Jan 2011 14:45:04 +0100
Juan Jose Garcia-Ripoll <juanjose.garciaripoll at googlemail.com> wrote:

> I tried to reproduce what you are experiencing, without success

With your exact test case, there is indeed no problem for me.  So I
tried two other tests, related to reception of SIGINT, since it's when
interrupting my software from the terminal while it was reading from a
socket:

(format t "~%Let's wait~%")
(restart-case
    (sleep 10) ; Non-IO sleep
  (my-restart ()
    (format t "~%ABORTING!")
    (ext:quit)))
(ext:quit)

$ ./program
Let's wait
^C			Imediately exits upon reception of interactive CTRL-C
$


(format t "~%Let's read~%")
(restart-case
    (read-line) ; IO sleep
  (my-restart ()
    (format t "~%ABORTING!")
    (ext:quit)))
(ext:quit)

$ ./program

Let's read
efe^M
$ ./program

Let's read
^C
;;; Suspending process #<process SIGNAL-SERVICING>
;;; Suspending process #<process TOP-LEVEL>
Condition of type: INTERACTIVE-INTERRUPT
Console interrupt

Available restarts:

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

Top level in: #<process HANDLE-SIGNAL>.
> ^D
Debugger received error of type: SEGMENTATION-VIOLATION
Detected access to an invalid or protected memory address.
Error flushed.
> 
Debugger received error of type: SEGMENTATION-VIOLATION
Detected access to an invalid or protected memory address.
Error flushed.
> 
Debugger received error of type: SEGMENTATION-VIOLATION
Detected access to an invalid or protected memory address.
Error flushed.
> 
Debugger received error of type: SEGMENTATION-VIOLATION
Detected access to an invalid or protected memory address.
Error flushed.
> 
Debugger received error of type: SEGMENTATION-VIOLATION
Detected access to an invalid or protected memory address.
Error flushed.
> 
Debugger received error of type: SEGMENTATION-VIOLATION
Detected access to an invalid or protected memory address.
Error flushed.
> 
Debugger received error of type: SEGMENTATION-VIOLATION
Detected access to an invalid or protected memory address.
Error flushed.
> 
Debugger received error of type: SEGMENTATION-VIOLATION
Detected access to an invalid or protected memory address.
Error flushed.
> 
Debugger received error of type: SEGMENTATION-VIOLATION
Detected access to an invalid or protected memory address.
Error flushed.
> 
Debugger received error of type: SEGMENTATION-VIOLATION
Detected access to an invalid or protected memory address.
Error flushed.
> 
$ 

$ ./program

Let's read
^C
;;; Suspending process #<process SIGNAL-SERVICING>
;;; Suspending process #<process TOP-LEVEL>
Condition of type: INTERACTIVE-INTERRUPT
Console interrupt

Available restarts:

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

Top level in: #<process HANDLE-SIGNAL>.
> :r1

Condition of type: SIMPLE-ERROR
Cannot interrupt the inactive process #<process SIGNAL-SERVICING>

No restarts available.

Top level in: #<process HANDLE-SIGNAL>.
> (ext:quit)


I suspect that the issue could be related to the (admitedly
non-trivial) problem of SIGINT handling...

Thanks,
-- 
Matt




More information about the ecl-devel mailing list