[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: recursive debuggers



Miles Bader <miles@edinburgh.cogsci> writes:
> When you turn off the debugger "flush-errors" property, and then get an error
> which puts you into a recursive debugger, the stack-top-hint isn't set
> correctly. This seems to be because error et al. binds *stack-top-hint* to
> NIL [how come?] around the signal which the debugger catches to decide
> whether it's going to flush it or not (and then the debugger is invoked from
> inside the signal handler instead of from error)...

Simply deleting the explicit invoke-debugger from the handler in debug
(letting error do the invoking) seems to fix this...

-Miles

--
Miles Bader  --  HCRC, University of Edinburgh  --  miles@cogsci.ed.ac.uk
Kodomo-tachi ga raion ni taberaremashita.

*** debug.lisp.~2~	Mon Apr  6 01:18:21 1992
--- debug.lisp	Sat Apr 11 04:52:09 1992
***************
*** 382,389 ****
  				      (clear-input *debug-io*)
  				      (princ condition)
  				      (format t "~&Error flushed ...")
! 				      (throw 'debug-loop-catcher nil))
! 				    (invoke-debugger condition))))
  	    ;; Must bind level for restart function created by
  	    ;; WITH-SIMPLE-RESTART.
  	    (let ((level *debug-command-level*)
--- 382,388 ----
  				      (clear-input *debug-io*)
  				      (princ condition)
  				      (format t "~&Error flushed ...")
! 				      (throw 'debug-loop-catcher nil)))))
  	    ;; Must bind level for restart function created by
  	    ;; WITH-SIMPLE-RESTART.
  	    (let ((level *debug-command-level*)