[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#33034: `unwind-protect' cleanup form is not executed if body dies in
From: |
Paul Pogonyshev |
Subject: |
bug#33034: `unwind-protect' cleanup form is not executed if body dies in stack overflow |
Date: |
Sat, 13 Oct 2018 12:07:48 +0200 |
To reproduce:
(defun overflow ()
(overflow))
(defun test ()
(interactive)
(message "BEFORE")
(unwind-protect
(overflow)
(message "CLEANUP")))
Invocation of `test' never issues message "CLEANUP", whether it is run
interactively or non-interactively.
By comparison, if you _catch_ the error with `condition-case':
(defun test-2 ()
(interactive)
(message "BEFORE")
(unwind-protect
(ignore-errors (overflow))
(message "CLEANUP")))
then cleanup form is executed properly.
But if your error catcher is "above" the `unwind-protect' form, the
cleanup is not executed again, even though the error is eaten as
expected:
(defun test-3 ()
(interactive)
(message "BEFORE")
(ignore-errors
(unwind-protect
(overflow)
(message "CLEANUP"))))
This is a perfect way to screw up your Emacs permanently (until full
restart): when some `unwind-protect' cleanups are not run, you can be
left with unexpected function advices, permanently altered global
state etc., without any good way to undestand what's wrong.
Paul
- bug#33034: `unwind-protect' cleanup form is not executed if body dies in stack overflow,
Paul Pogonyshev <=
- bug#33034: `unwind-protect' cleanup form is not executed if body dies in stack overflow, Eli Zaretskii, 2018/10/13
- bug#33034: `unwind-protect' cleanup form is not executed if body dies in stack overflow, Paul Pogonyshev, 2018/10/13
- bug#33034: `unwind-protect' cleanup form is not executed if body dies in stack overflow, Eli Zaretskii, 2018/10/13
- bug#33034: `unwind-protect' cleanup form is not executed if body dies in stack overflow, Paul Pogonyshev, 2018/10/13
- bug#33034: `unwind-protect' cleanup form is not executed if body dies in stack overflow, Eli Zaretskii, 2018/10/13
- bug#33034: `unwind-protect' cleanup form is not executed if body dies in stack overflow, Eli Zaretskii, 2018/10/13
- bug#33034: `unwind-protect' cleanup form is not executed if body dies in stack overflow, Paul Pogonyshev, 2018/10/13
- bug#33034: `unwind-protect' cleanup form is not executed if body dies in stack overflow, Eli Zaretskii, 2018/10/13
- bug#33034: `unwind-protect' cleanup form is not executed if body dies in stack overflow, Paul Pogonyshev, 2018/10/13
bug#33034: `unwind-protect' cleanup form is not executed if body dies in stack overflow, Paul Eggert, 2018/10/14