[Openmcl-devel] Handling SIGTERM in applications
Max Rottenkolber
max at mr.gy
Tue Oct 25 18:59:50 PDT 2016
On Wed, 26 Oct 2016 01:09:28 +0000, Max Rottenkolber wrote:
> D'oh. I meant SIGINT. SIGTERM works just fine. To reprodcuce:
>
> (save-application
> "sigint-test"
> :toplevel-function (lambda () (loop do (sleep 1)))
> :error-handler :quit
> :purify t
> :prepend-kernel t)
>
> $ ./sigint-test # send it SIGINT
> C-c C-c> Break: interrupt signal
>> While executing: CCL::%NANOSLEEP, in process toplevel(2).
>> Type :GO to continue, :POP to abort, :R for a list of available restarts.
>> If continued: Return from BREAK.
>> Type :? for other options.
> 1 >
>
> (Note that there is no actual break loop, it just prints the above and gets
> stuck, ignoring input, or a subsequent SIGINT.)
I was able to work around this by setting two internal special variables:
(setf ccl::*invoke-debugger-hook-on-interrupt* t)
(setf ccl::*debugger-hook*
(lambda (condition hook)
(declare (ignore hook))
(etypecase condition
(ccl::interrupt-signal-condition (quit 130)))))
More information about the Openmcl-devel
mailing list