0.9.1.29:
A number of signal handling cleanup/fixes:
* fix gencgc/maybe_defer_handler race (thanks to Thiemo)
* interrupt_maybe_gc (on cheneygc platforms): check for already
pending handler before calling maybe_defer_handler in order
not to lose interrupts
* interrupt_handle_pending: check for the pending handler being
null
* run_deferred_handler: set the pending handler to null, before
calling it to guard against the handler enabling interrupts ...
* more defensiveness: enforce invariants: checks for signal masks,
interrupts
* refactoring: undoably_install_low_level_interrupt_handler wraps
blockable handlers in low_level_maybe_now_maybe_later
* don't unblock signals unconditionally in interrupt_maybe_gc_int just
restore the sigmask from the interrupted context (kludge removed)
* removed misguided sigprocmask calls from mips, hppa and sparc
sig{trap,ill} handlers
* removed non-x86 version of handle_breakpoint (interrupts are enabled
in now common handle_breakpoint)
* fixed arrange_return_to_lisp_function/post_signal_tramp to save and
restore eflags (interrupt-threads seems to work)
18 files changed: