[Ecls-list] Ecl does not react on SIGINT on Linux
Juan Jose Garcia-Ripoll
juanjose.garciaripoll at googlemail.com
Mon Mar 8 08:31:03 UTC 2010
On Mon, Mar 8, 2010 at 12:41 AM, Tobias C. Rittweiler <tcr at freebits.de>wrote:
> We overwrite si:terminal-interrupt in Slime. May there be a better
> solution involving that servicing thread in case ECL was built with
> threads?
No, there is none. The servicing thread is not a normal lisp thread. It runs
with interrupts disabled and polls for asynchronous signals using sigwait().
This is mandated by POSIX. Any other way is deemed unsafe, for signal
handlers can not execute almost any C function -- and by that rule, they can
not execute arbitrary lisp code.
Indeed the problem is the single-threaded version of ECL, which is not POSIX
compliant in this respect. And from what I know about other lisps, they are
also not POSIX compliant, even in the multithreaded case. This includes the
whole process-interrupt business which is available in lisp implementations,
including ECL: it is a nasty function and should be banned completely, as it
causes a lot of problems from the implementation point of view, leading to
horrible hacks and performance sinks.
Juanjo
--
Instituto de Física Fundamental, CSIC
c/ Serrano, 113b, Madrid 28006 (Spain)
http://juanjose.garciaripoll.googlepages.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.common-lisp.net/pipermail/ecl-devel/attachments/20100308/63fa0dda/attachment.html>
More information about the ecl-devel
mailing list