GNU bug report logs - #78917
feature/igc [PATCH] Avoid chaining finalizers together

Previous Next

Package: emacs;

Reported by: Helmut Eller <eller.helmut <at> gmail.com>

Date: Sat, 28 Jun 2025 04:44:01 UTC

Severity: normal

Tags: patch

Full log


View this message in rfc822 format

From: Helmut Eller <eller.helmut <at> gmail.com>
To: Pip Cet <pipcet <at> protonmail.com>
Cc: 78917 <at> debbugs.gnu.org
Subject: bug#78917: feature/igc [PATCH] Avoid chaining finalizers together
Date: Sat, 28 Jun 2025 22:21:59 +0200
[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.