From unknown Mon Sep 22 22:25:28 2025 X-Loop: help-debbugs@gnu.org Subject: bug#19415: Compiler shares storage for assoc-lists even if some of them are mutated Resent-From: Panicz Maciej Godek Original-Sender: "Debbugs-submit" Resent-CC: bug-guile@gnu.org Resent-Date: Fri, 19 Dec 2014 23:54:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 19415 X-GNU-PR-Package: guile X-GNU-PR-Keywords: To: 19415@debbugs.gnu.org X-Debbugs-Original-To: bug-guile@gnu.org Received: via spool by submit@debbugs.gnu.org id=B.141903320331347 (code B ref -1); Fri, 19 Dec 2014 23:54:02 +0000 Received: (at submit) by debbugs.gnu.org; 19 Dec 2014 23:53:23 +0000 Received: from localhost ([127.0.0.1]:51975 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Y27MI-00089W-Py for submit@debbugs.gnu.org; Fri, 19 Dec 2014 18:53:23 -0500 Received: from eggs.gnu.org ([208.118.235.92]:33314) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Y27MG-00089O-5p for submit@debbugs.gnu.org; Fri, 19 Dec 2014 18:53:20 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Y27MF-0004QX-2r for submit@debbugs.gnu.org; Fri, 19 Dec 2014 18:53:19 -0500 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=0.8 required=5.0 tests=BAYES_50,FREEMAIL_FROM, HTML_MESSAGE,T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:45752) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y27ME-0004QP-Vb for submit@debbugs.gnu.org; Fri, 19 Dec 2014 18:53:19 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:35034) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y27MD-0003bQ-T2 for bug-guile@gnu.org; Fri, 19 Dec 2014 18:53:18 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Y27M9-0004Ny-8B for bug-guile@gnu.org; Fri, 19 Dec 2014 18:53:17 -0500 Received: from mail-lb0-x233.google.com ([2a00:1450:4010:c04::233]:65101) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Y27M9-0004Nk-0R for bug-guile@gnu.org; Fri, 19 Dec 2014 18:53:13 -0500 Received: by mail-lb0-f179.google.com with SMTP id z11so1591512lbi.24 for ; Fri, 19 Dec 2014 15:53:12 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:date:message-id:subject:from:to:content-type; bh=IJvn2MuajKGbOMAHtMlwuKKIOpnHW7B1wPvXmjuzhGg=; b=z2vRwMtXfMGJ4G5GCX/PTv753edEAeRj3cbITzV+NbIiMxyjgj/MgNSoCtIf3i13mE sEoR2YIJwGoPM/SYa42NDbpL9cMnwE5omojXChYEQLLEj+5dIC5lbNS3hw+ncDM2rz9/ TgeP5H+WXjpCr38PbeSg9Izn7aovYV1MXJ/r+7QA3nyCWpCXc5i3gwtpItxuWnDmUSOU kygC9UzbHFRQMIYmvZ90ApyvG1QirrhFYUnxajC+wQWdtWBPLPJPoIqeOt/UnimP/6yb GrHtAFBH62Czg/LVgwbQsMuOaAPqIRzk631synUS3miXmtHEAFwVio9S33vKQtulkzZ8 k5Vw== MIME-Version: 1.0 X-Received: by 10.112.219.98 with SMTP id pn2mr8332942lbc.74.1419033192004; Fri, 19 Dec 2014 15:53:12 -0800 (PST) Received: by 10.152.4.226 with HTTP; Fri, 19 Dec 2014 15:53:11 -0800 (PST) Date: Sat, 20 Dec 2014 00:53:11 +0100 Message-ID: From: Panicz Maciej Godek Content-Type: multipart/alternative; boundary=001a11c31306558463050a9a6937 X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.0 (----) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -4.0 (----) --001a11c31306558463050a9a6937 Content-Type: text/plain; charset=UTF-8 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 --001a11c31306558463050a9a6937 Content-Type: text/html; charset=UTF-8 Content-Transfer-Encoding: quoted-printable
This bug was traced by Matt Wette and described here:
=

In short, the bug manifests its= elf=C2=A0when at least two consecutive let f= orms are used with an assoc list argument which starts with identical eleme= nts, and the first appearance gets mutated before the second:
<= div style=3D"font-size:13px">
(begin=
=C2=A0 (let ((l '((a . X)(b . Y)(c = . 7))))
=C2=A0 =C2=A0 (assoc-set! l '= ;b 'Z))
=C2=A0 (let ((l '((a . X= )(b . Y))))
=C2=A0 =C2=A0 l))
=3D=3D=3D> ((a . X) (b . Z))

The issue is known= to appear in guile 2.0.11 and 2.0.5
--001a11c31306558463050a9a6937-- From unknown Mon Sep 22 22:25:28 2025 X-Loop: help-debbugs@gnu.org Subject: bug#19415: Compiler shares storage for assoc-lists even if some of them are mutated Resent-From: Mark H Weaver Original-Sender: "Debbugs-submit" Resent-CC: bug-guile@gnu.org Resent-Date: Mon, 22 Dec 2014 07:11:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 19415 X-GNU-PR-Package: guile X-GNU-PR-Keywords: To: Panicz Maciej Godek Cc: request@debbugs.gnu.org, 19415@debbugs.gnu.org Received: via spool by 19415-submit@debbugs.gnu.org id=B19415.141923224217197 (code B ref 19415); Mon, 22 Dec 2014 07:11:01 +0000 Received: (at 19415) by debbugs.gnu.org; 22 Dec 2014 07:10:42 +0000 Received: from localhost ([127.0.0.1]:54207 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Y2x8c-0004TE-48 for submit@debbugs.gnu.org; Mon, 22 Dec 2014 02:10:42 -0500 Received: from world.peace.net ([50.252.239.5]:58776) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Y2x8X-0004Sy-IX; Mon, 22 Dec 2014 02:10:37 -0500 Received: from [10.1.10.10] (helo=yeeloong.lan) by world.peace.net with esmtpsa (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.72) (envelope-from ) id 1Y2x8Q-0003UB-CB; Mon, 22 Dec 2014 02:10:30 -0500 From: Mark H Weaver References: Date: Mon, 22 Dec 2014 02:08:31 -0500 In-Reply-To: (Panicz Maciej Godek's message of "Sat, 20 Dec 2014 00:53:11 +0100") Message-ID: <87ioh417rk.fsf@yeeloong.lan> User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/24.4 (gnu/linux) MIME-Version: 1.0 Content-Type: text/plain X-Spam-Score: 0.0 (/) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: 0.0 (/) tags 19415 + notabug close 19415 merge 19415 19417 thanks Panicz Maciej Godek 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 for a related wishlist item. Thanks, Mark