GNU bug report logs -
#78917
feature/igc [PATCH] Avoid chaining finalizers together
Previous Next
Full log
Message #17 received at 78917 <at> debbugs.gnu.org (full text, mbox):
[Message part 1 (text/plain, inline)]
On Sat, Jun 28 2025, Pip Cet wrote:
> "Helmut Eller" <eller.helmut <at> gmail.com> writes:
>
>> Lisp_Finalizers are currently chained together in a doubly linked list.
>> This prevents them from being collected. I propose that we simply don't
>> use this list with MPS.
>
> See https://lists.gnu.org/archive/html/emacs-devel/2025-05/msg00468.html
:-)
> and bug#77338.
It seems that the problem with finalizers as value in a weak hashtable
could be fixed by calling mark_and_sweep_weak_table_contents before
queue_doomed_finalizers as in the patch below.
> The way finalizers are currently run on the master branch when they
> appear in weak tables, even if there is no chance that the entry that
> references them is ever collected, makes them pretty much unusable on
> that branch, in my book. Making them usable with --with-mps=yes isn't
> much of a priority for me, TBH, as code using them would break when we
> compile without MPS support.
Putting finalizers in a weak hashtable sounds exotic. I suppose there
should be tests for this.
> (I considered using finalizers for font finalization; it works, but
> would break if a strong reference to the font is mistaken for a weak one
> and fails to keep alive the font).
There is some "hardcoded" finalization code in cleanup_vector for
PVEC_FONT. Maybe you could use that instead of Lisp_Finalizers.
Helmut
[alloc.diff (text/x-diff, attachment)]
This bug report was last modified 30 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.