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

To reply to this bug, email your comments to 24321 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to bug-guile <at> gnu.org:
bug#24321; Package guile. (Sat, 27 Aug 2016 19:33:02 GMT) Full text and rfc822 format available.

Acknowledgement sent to Robin Templeton <robin <at> terpri.org>:
New bug report received and forwarded. Copy sent to bug-guile <at> gnu.org. (Sat, 27 Aug 2016 19:33:02 GMT) Full text and rfc822 format available.

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

From: Robin Templeton <robin <at> terpri.org>
To: bug-guile <at> gnu.org
Subject: Guardian fails to protect procedure properties
Date: Sat, 27 Aug 2016 15:32:20 -0400
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?

-- 
Inteligenta persono lernas la lingvon Esperanton rapide kaj facile.
Esperanto estas moderna, kultura lingvo por la mondo. Simpla, fleksebla,
belsona, Esperanto estas la praktika solvo de la problemo de universala
interkompreno. Lernu la interlingvon Esperanton!





Information forwarded to bug-guile <at> gnu.org:
bug#24321; Package guile. (Fri, 02 Sep 2016 08:12:01 GMT) Full text and rfc822 format available.

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 286 days ago.

Previous Next


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