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

From: Uday S Reddy <[email-masked]>
Date: Mon, 25 Apr 2011 14:02:40 +0100

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".

Cheers,
Uday

In GNU Emacs 23.3.1 (i386-mingw-nt5.1.2600)
 of 2011-03-10 on 3249CTO
Windowing system distributor `Microsoft Corp.', version 5.1.2600
configured using `configure --with-gcc (4.5) --no-opt --cflags -Ic:/imagesupport/include'

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: ENU
  value of $XMODIFIERS: nil
  locale-coding-system: cp1252
  default enable-multibyte-characters: t

Major mode: Emacs-Lisp

Minor modes in effect:
  auto-fill-function: do-auto-fill
  savehist-mode: t
  which-function-mode: t
  tooltip-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-encryption-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
C-n C-n C-n C-n C-n C-n C-n C-n C-n C-n C-o TAB ( s 
e t q SPC e v a l - e x p r e s i o n - d e b u g - 
o n - e r r o r SPC n i l ) <down-mouse-1> <mouse-1> 
<escape> C-x C-x b * s c SPC <return> ( d e b u g ) 
C-j e ( + 1 SPC n i l ) <return> e e v a l - e x p 
r e s s i o n - d e b u g - o n - e r r o r <return> 
q C-p C-j C-e C-j e e v a l - e x p r e s s i o n - 
d e b u g - o n - e r r o r <return> c C-p C-p C-e 
C-j e ( s e t q SPC d <backspace> e v a l - e x p r 
e s s i o n - d e b u g - o n - e r r o r SPC n i l 
) <return> e ( + SPC 1 SPC n i l ) <return> q C-x b 
<return> C-h v d e b u g g e r - m o d e - h o o k 
<return> C-v C-p q C-h v d e b u g g e r - m o d e 
- h o o k <return> C-v C-x , q q C-x k <return> C-h 
C-g C-x o C-x C-s C-h m q C-x m <down-mouse-1> <mouse-1> 
C-x k <return> M-x r e p o r t - e m a c s SPC SPC 
<return>

Recent messages:
Loading d:/Home/udr/share/dotfiles/.vm.preferences...done
Adding vm-rfaddons-option `check-recipients'.
Adding vm-rfaddons-option `check-for-empty-subject'.
Adding vm-rfaddons-option `encode-headers'.
Adding vm-rfaddons-option `shrunken-headers'.
VM-RFADDONS: Options loaded.
Counting messages in d:/Home/udr/mail/drafts... done
Parsing d:/Home/udr/.mailrc...
Parsing d:/Home/udr/share/dotfiles/.mailrc... done
Parsing d:/Home/udr/.mailrc... done

Load-path shadows:
d:/Home/udr/share/emacs/sml-mode hides d:/gnu/emacs-23.3/../site-lisp/sml-mode
d:/Home/udr/share/emacs/savehist-20+ hides d:/gnu/emacs-23.3/../site-lisp/savehist-20+
d:/gnu/emacs-23.3/../site-lisp/longlines hides d:/gnu/emacs-23.3/lisp/longlines
d:/gnu/vm/trunk/lisp/cus-load hides d:/gnu/emacs-23.3/lisp/cus-load
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org hides d:/gnu/emacs-23.3/lisp/org/org
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-xoxo hides d:/gnu/emacs-23.3/lisp/org/org-xoxo
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-wl hides d:/gnu/emacs-23.3/lisp/org/org-wl
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-w3m hides d:/gnu/emacs-23.3/lisp/org/org-w3m
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-vm hides d:/gnu/emacs-23.3/lisp/org/org-vm
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-timer hides d:/gnu/emacs-23.3/lisp/org/org-timer
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-table hides d:/gnu/emacs-23.3/lisp/org/org-table
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-src hides d:/gnu/emacs-23.3/lisp/org/org-src
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-rmail hides d:/gnu/emacs-23.3/lisp/org/org-rmail
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-remember hides d:/gnu/emacs-23.3/lisp/org/org-remember
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-publish hides d:/gnu/emacs-23.3/lisp/org/org-publish
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-protocol hides d:/gnu/emacs-23.3/lisp/org/org-protocol
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-plot hides d:/gnu/emacs-23.3/lisp/org/org-plot
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-mouse hides d:/gnu/emacs-23.3/lisp/org/org-mouse
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-mobile hides d:/gnu/emacs-23.3/lisp/org/org-mobile
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-mhe hides d:/gnu/emacs-23.3/lisp/org/org-mhe
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-mew hides d:/gnu/emacs-23.3/lisp/org/org-mew
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-macs hides d:/gnu/emacs-23.3/lisp/org/org-macs
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-mac-message hides d:/gnu/emacs-23.3/lisp/org/org-mac-message
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-list hides d:/gnu/emacs-23.3/lisp/org/org-list
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-latex hides d:/gnu/emacs-23.3/lisp/org/org-latex
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-jsinfo hides d:/gnu/emacs-23.3/lisp/org/org-jsinfo
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-irc hides d:/gnu/emacs-23.3/lisp/org/org-irc
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-install hides d:/gnu/emacs-23.3/lisp/org/org-install
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-inlinetask hides d:/gnu/emacs-23.3/lisp/org/org-inlinetask
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-info hides d:/gnu/emacs-23.3/lisp/org/org-info
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-indent hides d:/gnu/emacs-23.3/lisp/org/org-indent
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-id hides d:/gnu/emacs-23.3/lisp/org/org-id
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-icalendar hides d:/gnu/emacs-23.3/lisp/org/org-icalendar
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-html hides d:/gnu/emacs-23.3/lisp/org/org-html
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-habit hides d:/gnu/emacs-23.3/lisp/org/org-habit
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-gnus hides d:/gnu/emacs-23.3/lisp/org/org-gnus
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-freemind hides d:/gnu/emacs-23.3/lisp/org/org-freemind
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-footnote hides d:/gnu/emacs-23.3/lisp/org/org-footnote
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-feed hides d:/gnu/emacs-23.3/lisp/org/org-feed
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-faces hides d:/gnu/emacs-23.3/lisp/org/org-faces
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-exp hides d:/gnu/emacs-23.3/lisp/org/org-exp
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-exp-blocks hides d:/gnu/emacs-23.3/lisp/org/org-exp-blocks
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-docbook hides d:/gnu/emacs-23.3/lisp/org/org-docbook
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-datetree hides d:/gnu/emacs-23.3/lisp/org/org-datetree
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-crypt hides d:/gnu/emacs-23.3/lisp/org/org-crypt
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-compat hides d:/gnu/emacs-23.3/lisp/org/org-compat
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-colview hides d:/gnu/emacs-23.3/lisp/org/org-colview
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-clock hides d:/gnu/emacs-23.3/lisp/org/org-clock
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-bibtex hides d:/gnu/emacs-23.3/lisp/org/org-bibtex
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-bbdb hides d:/gnu/emacs-23.3/lisp/org/org-bbdb
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-attach hides d:/gnu/emacs-23.3/lisp/org/org-attach
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-ascii hides d:/gnu/emacs-23.3/lisp/org/org-ascii
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-archive hides d:/gnu/emacs-23.3/lisp/org/org-archive
d:/gnu/emacs-23.3/../packages/org-7.4/lisp/org-agenda hides d:/gnu/emacs-23.3/lisp/org/org-agenda
d:/Home/udr/share/emacs/rnews hides d:/gnu/emacs-23.3/lisp/obsolete/rnews

Features:
(shadow sort message ecomplete mml mml-sec password-cache mm-decode
mm-bodies mm-encode mailcap mail-parse rfc2231 rfc2047 rfc2045 qp ietf-drums
nnheader mm-util mail-prsvr gmm-utils wid-edit mailheader canlock hashcash
emacsbug mail-utils mailalias vm-reply u-vm-color my-vm vc-bzr sha1 hex-util
etags ps-print ps-def lpr vm-save vm-ps-print vm-rfaddons vm-menu vm-window
vm-toolbar vm-folder vm-mime vm-undo vm-virtual vm-summary-faces vm-mouse
vm-page vm-minibuf vm-message vm-misc vm-macro bbdb-vm vm-summary vm-motion
vm-autoload bbdb-snarf mail-extr rfc822 bbdb-com mailabbrev vm debug
cus-start cus-load pp multi-isearch help-mode view info easymenu warnings
server w3m-load bbdb-autoloads bbdb timezone vm-autoloads vm-version vm-vars
org-install autopair advice help-fns advice-preload easy-mmode cl cl-19
savehist tex-site tex-mik telnet movement natural-space NatSpeak sendmail
auth-source gnus-util netrc time-date epa-file epa epg epg-config ange-ftp
regexp-opt comint ring echistory chistory ehelp electric derived which-func
imenu edmacro kmacro jka-compr tooltip ediff-hook vc-hooks lisp-float-type
mwheel dos-w32 disp-table ls-lisp w32-win w32-vars tool-bar dnd fontset
image fringe lisp-mode register page menu-bar rfn-eshadow timer select
scroll-bar mldrag mouse jit-lock font-lock syntax facemenu font-core frame
cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao
korean japanese hebrew greek romanian slovak czech european ethiopic indian
cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev
loaddefs button minibuffer faces cus-face files text-properties overlay md5
base64 format env code-pages mule custom widget hashtable-print-readable
backquote make-network-process multi-tty emacs)

--