Subject: bug#8548: 23.3; Lisp debugger can't exit recursive edit level

From: Stefan Monnier <[email-masked]>
Date: Mon, 25 Apr 2011 12:03:27 -0300

> The Lisp debugger is supposed to enter a recursive editing level.  So, one
> would expect that it would be possible to exit each recursive level
> independently.  The original debugger implemented in Elisp used to work
> fine.  But, ever since the debugger was moved to the C implementation
> (probably Emacs 19), the recursive levels cannot be exited.

> To reproduce the problem, do `M-: (debug)' and then type something
> errorneous, e.g.,

>   e RET (car 1) RET

> A second recursive level gets entered.  However, exit-recursive-edit does
> not do its job here.  It says "Cannot return from the debugger in an error".

This part of the C code was changed recently, so now the behavior is
that you get "Wrong type argument: listp, 1" in the minibuffer and
you're back in the first recursive level (which all sounds right).
OTOH the *Backtrace* buffer does not display the stack trace any more
and is in fundamental mode, so there's still something wrong here.

BTW, you get the same result if you hit `c' rather than calling
exit-recursive-edit.

        Stefan