On Sat, Jun 28 2025, Pip Cet wrote: > "Helmut Eller" 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