GNU bug report logs - #19417
let, assq-set optimization gone wrong?

Previous Next

Package: guile;

Reported by: Matt Wette <mwette <at> alumni.caltech.edu>

Date: Sat, 20 Dec 2014 05:53:02 UTC

Severity: normal

Tags: notabug

Merged with 19415

Done: Mark H Weaver <mhw <at> netris.org>

Bug is archived. No further changes may be made.

Full log


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

From: Mark H Weaver <mhw <at> netris.org>
To: Panicz Maciej Godek <godek.maciek <at> gmail.com>
Cc: request <at> debbugs.gnu.org, 19415 <at> debbugs.gnu.org
Subject: Re: bug#19415: Compiler shares storage for assoc-lists even if some
 of them are mutated
Date: Mon, 22 Dec 2014 02:08:31 -0500
tags 19415 + notabug
close 19415
merge 19415 19417
thanks

Panicz Maciej Godek <godek.maciek <at> gmail.com> 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




This bug report was last modified 10 years and 150 days ago.

Previous Next


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