On Sat 27 Aug 2016 21:32, Robin Templeton <ro...@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