GNU bug report logs - #24321
Guardian fails to protect procedure properties

Previous Next

Package: guile;

Reported by: Robin Templeton <robin <at> terpri.org>

Date: Sat, 27 Aug 2016 19:33:02 UTC

Severity: normal

Full log


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

From: Andy Wingo <wingo <at> pobox.com>
To: Robin Templeton <robin <at> terpri.org>
Cc: 24321 <at> debbugs.gnu.org
Subject: Re: bug#24321: Guardian fails to protect procedure properties
Date: Fri, 02 Sep 2016 10:10:53 +0200
On Sat 27 Aug 2016 21:32, Robin Templeton <robin <at> terpri.org> writes:

> The following expression produces possibly erroneous results in Guile
> 2.1.3.104-8f2f8 (with Debian's libgc1c2 version 1:7.4.2-8):
>
> (let ((guardian (make-guardian))
>       (foo (eval '(lambda () #f) (interaction-environment))))
>   (set-procedure-property! foo 'wibbly 'wobbly)
>   (guardian foo)
>   (format #t "~S~%" (procedure-properties foo))
>   (set! foo #f)
>   (gc)
>   (do ((foo (guardian) (guardian)))
>       ((not foo))
>     (format #t "~S~%" (procedure-properties foo))))
>
> First it prints "((wibbly . wobbly))" as expected, but after the
> procedure is retrieved from the guardian the list of properties is
> empty. The properties are stored in a weak hash table, but shouldn't
> they be protected from GC while the procedure is in the guardian?

Related to https://debbugs.gnu.org/cgi/bugreport.cgi?bug=10836.

Andy




This bug report was last modified 8 years and 288 days ago.

Previous Next


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