X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=src%2Fcode%2Finterr.lisp;h=b712ad8ffd452a72b9ca28602e740cd1f2041fc9;hb=a160917364f85b38dc0826a5e3dcef87e3c4c62c;hp=232f1a6e21a1d257b2d166f5da788acfc317d73e;hpb=ee3f2e0351674dde7229afdcccfcfaf8ce5b112e;p=sbcl.git diff --git a/src/code/interr.lisp b/src/code/interr.lisp index 232f1a6..b712ad8 100644 --- a/src/code/interr.lisp +++ b/src/code/interr.lisp @@ -260,7 +260,7 @@ :format-arguments (list key-name))) (deferr invalid-array-index-error (array bound index) - (invalid-array-index-error array bound index)) + (invalid-array-index-error array index bound)) (deferr object-not-simple-array-error (object) (error 'type-error @@ -426,14 +426,6 @@ (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*)) @@ -468,6 +460,20 @@ "Control stack guard page temporarily disabled: proceed with caution~%") (error 'control-stack-exhausted)))) +(defun binding-stack-exhausted-error () + (let ((sb!debug:*stack-top-hint* nil)) + (infinite-error-protect + (format *error-output* + "Binding stack guard page temporarily disabled: proceed with caution~%") + (error 'binding-stack-exhausted)))) + +(defun alien-stack-exhausted-error () + (let ((sb!debug:*stack-top-hint* nil)) + (infinite-error-protect + (format *error-output* + "Alien stack guard page temporarily disabled: proceed with caution~%") + (error 'alien-stack-exhausted)))) + ;;; KLUDGE: we keep a single HEAP-EXHAUSTED-ERROR object around, so ;;; that we don't need to allocate it when running out of ;;; memory. Similarly we pass the amounts in special variables as