Subject: Re: bug#30373: [PATCH] Implement finalizers for module functions (Bug#30373)

From: Philipp Stephani <[email-masked]>
Date: Sat, 4 Jan 2020 20:56:37 +0100

Am Fr., 3. Jan. 2020 um 21:50 Uhr schrieb Pip Cet <[email-masked]>:
>
> On Fri, Jan 3, 2020 at 8:13 PM Eli Zaretskii <[email-masked]> wrote:
> > > From: Pip Cet <[email-masked]>
> > > Date: Fri, 3 Jan 2020 18:53:46 +0000
> > > Cc: Philipp Stephani <[email-masked]>, [email-masked], [email-masked]
> > >
> > > If I'm reading the test correctly, it depends on garbage-collect
> > > actually collecting an unreferenced vector; since our GC's
> > > conservative, that might not be working for you, if a word that
> > > happens to look like a reference to the vector is still on the stack.
> > > (Or it might be something else entirely, but I don't think the test as
> > > it stands is correct).
> >
> > You are probably right, because I see the same failure on GNU/Linux,
> > in an x86_64 unoptimized build:
>
> I see it too. Fprogn keeps the value of the first sub-form alive while
> evaluating the second one.
>
> We can "fix" Fprogn to discard val early in unoptimized builds, and
> that might make GC behavior slightly less surprising.
>
> But it won't properly fix this test.

Ah yeah, looks like the test was too brittle. (For some reason, it
worked fine on macOS.) I've now installed a patch that creates 100
dangling functions; hopefully that increases the likelihood of at
least one getting garbage-collected.