[gambit-list] Interrupted in wait-for-io
Christian
christian at pflanze.mine.nu
Tue Jan 3 09:15:00 EST 2006
Hello
Why aren't interrupts (ctl-c in particular) running the current
exception handler, but instead enter the debugger unconditionally?
$ cat testinterrupt.scm
(with-exception-catcher
(lambda (e)
(display "Catched an exception: ")
(write e)
(newline)
(##repl))
(lambda ()
(read)))
$ gsi
> (load "testinterrupt.scm")
*** INTERRUPTED IN ##wait-for-io!
1> fooo
Catched an exception: #<unbound-global-exception #2>
1> foo
*** ERROR IN (console)@3.1 -- Unbound variable: foo
2>
Note that inside the debugger, my exception handler is still active,
as shown after entering |fooo|. So it's not that ##wait-for-io or some
other function would install another handler, but that the
current-exception-handler is simply ignored.
Same thing in compiled code, except that there's no handler catching
exceptions when inside mine:
$ gsc -warnings testinterrupt
$ gcc -O3 -fomit-frame-pointer -mpreferred-stack-boundary=2 -Wdisabled-optimization testinterrupt.c testinterrupt_.c -I/usr/local/Gambit-C/include -L/usr/local/Gambit-C/lib -lgambc -lm -lutil -ldl -o testinterrupt
$ ./testinterrupt
*** INTERRUPTED IN ##wait-for-io!
> foo
Catched an exception: #<unbound-global-exception #2>
> foo
*** ERROR IN (console)@2.1 -- Unbound variable: foo
$
The real problem with this is: how can I create a standalone Gambit
program that exits when it gets SIGINT ?
Thanks
Christian.
More information about the Gambit-list
mailing list