GNU bug report logs - #5662
flet not undone on lisp nesting error

Previous Next

Package: emacs;

Reported by: Dan Davison <davison <at> stats.ox.ac.uk>

Date: Mon, 1 Mar 2010 02:34:02 UTC

Severity: normal

Found in versions 24.3, 23.4, 24.5

Fixed in version 25.0.94

Done: Noam Postavsky <npostavs <at> users.sourceforge.net>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: Stefan Monnier <monnier <at> iro.umontreal.ca>
To: Dan Davison <davison <at> stats.ox.ac.uk>
Cc: 5662 <at> debbugs.gnu.org
Subject: bug#5662: flet not undone on lisp nesting error
Date: Fri, 05 Mar 2010 15:30:45 -0500
> If I trigger a lisp nesting error with an infinite recursion inside a
> let and an flet binding, then the effects of the flet are not undone,
> resulting in a change of binding at the top-level.

> (defun g () 'g-orig)
> (setq a 'a-orig)

> (defun h ()
>   (let ((a 'a-new))
>     (flet ((g () 'g-new))
>       (h))))
> (h)   ;; <-- Lisp nesting exceeds `max-lisp-eval-depth'
> (g)   ;; g-new ! 
> a     ;; a-orig 

I can indeed reproduce it.  I'm not sure yet what's going on, but it
might be due to the "Lisp nesting exceeds `max-lisp-eval-depth'" error
happening in the unwind-protect code (i.e. while undoing the `g'
binding).  The explanation can't be quite so simple, but my gut feeling
tells me it's got to do with it.


        Stefan




This bug report was last modified 8 years and 352 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.