GNU bug report logs - #9900
Using a guardian on a value in a weak hash

Previous Next

Package: guile;

Reported by: Ian Price <ianprice90 <at> googlemail.com>

Date: Fri, 28 Oct 2011 20:47:02 UTC

Severity: normal

Done: Andy Wingo <wingo <at> pobox.com>

Bug is archived. No further changes may be made.

Full log


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

From: Andy Wingo <wingo <at> pobox.com>
To: ludo <at> gnu.org (Ludovic Courtès)
Cc: 9900 <at> debbugs.gnu.org
Subject: Re: bug#9900: local vars not cleaned
Date: Tue, 01 Nov 2011 20:53:54 +0100
Hi,

On Tue 01 Nov 2011 01:20, ludo <at> gnu.org (Ludovic Courtès) writes:

> Stefan Israelsson Tampe <stefan.itampe <at> gmail.com> skribis:
>
>> A program is executed and a set of locals is allocated on the stack for the
>> duration of the loading, this means that during the
>> whole execution of the loaded file the locals variables are below the stack
>> pointer and hence always contains a reference from the stack to the last
>> used objects in the local variables.
>
> Normally the GC will only scan the relevant part of the VM stack–see
> ‘VM_ENABLE_PRECISE_STACK_GC_SCAN’ in vm.c.

I think Stefan's analysis is right.  VM marking is working as
advertised.  The problem is that the slot corresponding to the lexical
`f' has not been nulled out.  We can probably fix this by doing a
local-set of the slot to `undefined' after leaving a `let', `letrec', or
`fix' binding in non-tail context.

Andy
-- 
http://wingolog.org/




This bug report was last modified 13 years and 156 days ago.

Previous Next


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