Ben Wing <ben(a)xemacs.org> writes:
Daniel Pittman wrote:
[...]
>This happened while running Gnus, and looks like it is a logic
error in
>the handling of the timeout list - the code in Fdisable_timout tries to
>synchronously free the Lisp object that was removed, presumably because
>it is an internal object. (This happens in event_stream_disable_wakeup.)
>
>This isn't terribly compatible with the finalise method of the image
>instance, though, which is most likely called during GC.
[...]
Thanks for the problem and accurate diagnosis. There is a
register_post_gc_action() function for exactly this situation; it
should obviously be used.
Thanks: I should have seen that API. The attached patch seems to
resolve the problem for me, although the issue was never as
deterministic as I wanted it to be. :/
I will test again with the new allocator shortly, to see if this
resolves another issue I have run into there where the page finalize
routine would fail because of pre-freed items, or would walk off into
random numbers...
Daniel