ECL now implements asynchronous signal handlers through a secondary thread and these handlers can now be customized. The interface is given by the functions
(EXT:SET-SIGNAL-HANDLER signal-code closure-or-symbol)
where the signal handler function should have the signature (LAMBDA (&KEY PROCESS)).
On a multithreaded ECL, instead of having a thread that relies on sigwait(), we have a thread that gets messages from other threads, which are the ones that received the signals. In principle we could optionally add a feature such that these threads get suspended until the signal is processed. This does not seem critical to me, but it might help cope with the problem of synchronous signals (SIGSEGV, SIGFPE, etc) which are not allowed to execute arbitrary code.
In any case, these are refinements for the future. I would like to ask you to help debugging and perfect the changes I just introduced, and which for me are the final milestone for a release (apart from testing and integrating the ASDF extensions).