GNU bug report logs -
#24321
Guardian fails to protect procedure properties
Previous Next
Full log
Message #8 received at 24321 <at> debbugs.gnu.org (full text, mbox):
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.