dhawkins(a)rmas.com writes:
M-x doctor
[snip]
bash$ Fatal error: assertion failed, file bytecode.c, line 532,
specpdl_ptr->func == 0
I can reproduce that and have investigated a little bit. I have a
pretty good idea what is causing it, but am too afraid to touch the
marzilla stuff. :-)
first of all a smaller recipe for the crash:
- create a file test.el containing: (defun foo (bar) bar)
- byte-compile and load this file
- in *scratch* eval: (foo 7)
OK, '7' is printed
- make bar buffer-local: (make-local-variable 'bar)
- eval (foo 7) again
CRASH
The problem is that funcall_compiled_function() correctly creates the
specbinding for the local variable bar:
$27 = {symbol = 139220936,
old_value = 138893388,
func = 0x80bdbec <specbind_unwind_local>}
but at eval.c:532 UNBIND_TO_GCPRO_VARIABLES_ONLY is used which assumes
that all bindings are 'normal' variables (i.e. func==0).
I'm pretty sure that all this can be cured by using UNBIND_TO_GCPRO
instead but maybe there is a smarter way. Martin?
HTH
Gunnar
--
Gunnar Evermann
Speech, Vision & Robotics Group
Engineering Department
Cambridge University