GNU bug report logs - #39361
continuation and gc performance

Previous Next

Package: guile;

Reported by: Stefan Israelsson Tampe <stefan.itampe <at> gmail.com>

Date: Thu, 30 Jan 2020 21:12:01 UTC

Severity: normal

Full log


Message #8 received at 39361 <at> debbugs.gnu.org (full text, mbox):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Stefan Israelsson Tampe <stefan.itampe <at> gmail.com>
Cc: 39361 <at> debbugs.gnu.org
Subject: Re: bug#39361: continuation and gc performance
Date: Sat, 21 Mar 2020 18:33:41 +0100
Hi Stefan,

Stefan Israelsson Tampe <stefan.itampe <at> gmail.com> skribis:

> I think I found a gc leak in guile 3.0
>
> Isn't it so that so the continuation keep a copy of the stack. The issue is
> that in the stack a raw integer or float may be present and so the gc
> properties is less then ideal as those may be interpreted as pointers by
> the GC and lead to parts of the heap being kept from garnage collecting.
>
> The information about a slot being a raw value or a scm value is
> available as we do the correct gc updating of the stack inside guile 3.0.
> May I propose that we add a bitvector to the continuation that indicate
> that if a lslot is raw or not. Then add a pass that collect the rawness
> information in the creation of the closure. Finally a custom made mark
> procedure for closures can be made that uses all this information to make
> sure to mark only scm slots in the stored continuation therby improving gc
> perfromance.

I believe what you describe is already what happens in
‘scm_i_vm_mark_stack’.  Or am I missing something?

Thanks,
Ludo’.




This bug report was last modified 5 years and 84 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.