X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fcode%2Ftarget-signal.lisp;h=bea8892e2bd3d08d22819169b5e1fbf02da7e31b;hb=65b5ab7e713d04e0d76bc0ee196374f6e57b922f;hp=f23f2a4b0ac354e3034f95f16ab13e44199139fa;hpb=d4a07c5481b3a0692963e018753089f1e5203d10;p=sbcl.git diff --git a/src/code/target-signal.lisp b/src/code/target-signal.lisp index f23f2a4..bea8892 100644 --- a/src/code/target-signal.lisp +++ b/src/code/target-signal.lisp @@ -179,9 +179,13 @@ (flet ((interrupt-it () (with-alien ((context (* os-context-t) context)) (with-interrupts - (%break 'sigint 'interactive-interrupt - :context context - :address (sap-int (sb!vm:context-pc context))))))) + (let ((int (make-condition 'interactive-interrupt + :context context + :address (sap-int (sb!vm:context-pc context))))) + ;; First SIGNAL, so that handlers can run. + (signal int) + ;; Then enter the debugger like BREAK. + (%break 'sigint int)))))) (sb!thread:interrupt-thread (sb!thread::foreground-thread) #'interrupt-it)))