Commit fdb4f6635351b3f3b15b5e948c39e9efcdd615df causing Emacs to crash for me
Vegard Øye
vegard_oye at hotmail.com
Thu Aug 25 19:12:20 CEST 2011
On 2011-08-24 19:55 +0200, Timothy Harper wrote:
> How do you think would we could best describe this bug to the
> emacs-devel mailing list? Creating self-referential keycaps
> causes emacs to crash in certain cases?
Well, not that there's much reason to create self-referential keymaps
in any case. (Ahem.) But there are some issues that should be fixed,
one of them being a conflict between the backquote and the read syntax
for self-referential structures. For an example straight out of the
Emacs Lisp Reference Manual, you can write a list that has itself as
the second element like this:
(setq x '#1=(a #1#))
Substitute the quote with a backquote, though, and Emacs signals
the error "Variable binding depth exceeds max-specpdl-size":
(setq x `#1=(a #1#))
Then there's the case of self-referential lambda functions. If you
write the function below, how will it byte-compile?
'#1=(lambda () #1#)
As it turns out, it won't: instead of a byte-compiled function that
somehow returns itself, we get the max-specpdl-size error again.
I think the difficulty with implementing self-referential structures
is that they are contrary to a lot of naïve assumptions one would
otherwise make about the code. Therefore, no implementation is likely
to get it right "by accident"; the implementer has to be consciously
aware of the numerous situations that may arise.
--
Vegard
More information about the implementations-list
mailing list