Subject: bug#7825: Cannot return from the debugger

From: Štěpán Němec <[email-masked]>
Date: Wed, 12 Jan 2011 10:04:29 +0100

Richard Stallman <[email-masked]> writes:

>     The limitation that we "Cannot return from the debugger in an error",
>     is a bug: we should be able to continue (i.e. run the code of the
>     corresponding error handler), just as if the debugger had not been invoked.
>
> That is fine in theory, but it would imply that any place that can get
> an error can also GC.
>
> If we make GCPRO a no-op on all platforms, allowing those places to GC
> may not require massive changes.  But lots of places in the C code
> would still have to be checked for possible bugs.
>
> I don't remember how string relocation works nowadays.  It used to be
> the case that many places in the C code had char * pointers into Lisp
> strings, which could be invalidated by a GC.  If this is still an
> issue, then keeping such a pointer across something that reports an
> error would be a bug.

I'm not sure I understand what you two are saying or how that relates to
the problem at hand, but what a decent Lisp system usually does when an
error happens inside the debugger is just add another debugging layer on
the stack, i.e. start the debugger on the "newer" error; then when you
exit the inner level, you end up back debugging the outer level. Why is
that not the case in Emacs? The "Cannot return from the debugger in an
error" thing has always annoyed me, too.

  Štěpán