bug-guile
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#19415: Compiler shares storage for assoc-lists even if some of them


From: Mark H Weaver
Subject: bug#19415: Compiler shares storage for assoc-lists even if some of them are mutated
Date: Mon, 22 Dec 2014 02:08:31 -0500
User-agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4 (gnu/linux)

tags 19415 + notabug
close 19415
merge 19415 19417
thanks

Panicz Maciej Godek <address@hidden> writes:

> This bug was traced by Matt Wette and described here:
>
> http://lists.gnu.org/archive/html/guile-user/2014-12/msg00023.html
>
> In short, the bug manifests itself when at least two consecutive let
> forms are used with an assoc list argument which starts with identical
> elements, and the first appearance gets mutated before the second:
>
> (begin
> (let ((l '((a . X)(b . Y)(c . 7))))
> (assoc-set! l 'b 'Z))
> (let ((l '((a . X)(b . Y))))
> l))
> ===> ((a . X) (b . Z))
>
> The issue is known to appear in guile 2.0.11 and 2.0.5

As later explained on guile-user, mutating literal data is not permitted
in scheme and leads to unspecified behavior.  Our compiler aggressively
shares data between literals in the same compilation unit.

See <http://bugs.gnu.org/16060> for a related wishlist item.

     Thanks,
       Mark





reply via email to

[Prev in Thread] Current Thread [Next in Thread]