X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Finterr.lisp;h=8fb4657fe01d0db730fc89f107a5e9170abb85f9;hb=da8cb4801a3ab35070f380e22aea3d260f9df8aa;hp=282e1df5627289df1b502f67237f67b8a0256f53;hpb=52cbc0e7a1fb50470995a6d27bc512a77557998d;p=sbcl.git diff --git a/src/code/interr.lisp b/src/code/interr.lisp index 282e1df..8fb4657 100644 --- a/src/code/interr.lisp +++ b/src/code/interr.lisp @@ -421,6 +421,14 @@ (multiple-value-bind (name sb!debug:*stack-top-hint*) (find-interrupted-name-and-frame) (/show0 "back from FIND-INTERRUPTED-NAME") + ;; Unblock trap signal here, we unwound the stack and can't return. + ;; FIXME: Should we not reset the _entire_ mask, but just + ;; restore it to the state before we got the condition? + ;; FIXME 2: Signals are currently unblocked in + ;; interrupt.c:internal_error before we do stack unwinding, can this + ;; introduce a race condition? + #!+(and linux mips) + (sb!unix::reset-signal-mask) (let ((fp (int-sap (sb!vm:context-register alien-context sb!vm::cfp-offset))) (handler (and (< -1 error-number (length *internal-errors*))