diff --git a/test/script-support.lisp b/test/script-support.lisp index e4104481d3cd080b305d64f6f3c259ffb128ef74..6b9f344a5430aaa02b61188acda530f6b85441c7 100644 --- a/test/script-support.lisp +++ b/test/script-support.lisp @@ -375,7 +375,13 @@ is bound, write a message and exit on an error. If (let ((result (catch :asdf-test-done (handler-bind - ((serious-condition + ( + #+ccl + (ccl:process-reset + (lambda (c) + (declare (ignore c)) + nil)) + (serious-condition (lambda (c) (ignore-errors (format *error-output* "~&TEST ABORTED: ~A~&" c)) diff --git a/uiop/image.lisp b/uiop/image.lisp index 6b53acb04381e9f1b53f8decf5b9a03d082c1ab2..3affc7140d3bcea6fca0f9fe8cfdd8caa571b2b4 100644 --- a/uiop/image.lisp +++ b/uiop/image.lisp @@ -49,9 +49,13 @@ before the image dump hooks are called and before the image is dumped.") (defvar *image-dump-hook* nil "Functions to call (in order) when before an image is dumped") - (defvar *fatal-conditions* '(error) + (defvar *fatal-conditions* '(SERIOUS-CONDITION) "conditions that cause the Lisp image to enter the debugger if interactive, -or to die if not interactive")) +or to die if not interactive") + (defvar *fatal-condition-exceptions* + (list #+ccl 'ccl:process-reset) + "Subclasses of condition that would match *FATAL-CONDITIONS* but that +should not be treated as fatal.")) ;;; Exiting properly or im- @@ -170,7 +174,9 @@ This is designed to abstract away the implementation specific quit forms." (defun fatal-condition-p (condition) "Is the CONDITION fatal? It is if it matches any in *FATAL-CONDITIONS*" - (match-any-condition-p condition *fatal-conditions*)) + (and + (not (match-any-condition-p condition *fatal-condition-exceptions*)) + (match-any-condition-p condition *fatal-conditions*))) (defun handle-fatal-condition (condition) "Handle a fatal CONDITION: