From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Vibhav Pant Newsgroups: gmane.emacs.devel Subject: Critical bytecode bug with hash tables while dumping emacs. Date: Thu, 26 Jan 2017 18:33:33 +0530 Message-ID: NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary=94eb2c03632c0888870546fefaec X-Trace: blaine.gmane.org 1485435914 22012 195.159.176.226 (26 Jan 2017 13:05:14 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Thu, 26 Jan 2017 13:05:14 +0000 (UTC) To: "emacs-devel@gnu.org" Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Thu Jan 26 14:05:06 2017 Return-path: Envelope-to: ged-emacs-devel@m.gmane.org Original-Received: from lists.gnu.org ([208.118.235.17]) by blaine.gmane.org with esmtp (Exim 4.84_2) (envelope-from ) id 1cWjjE-0003MO-DA for ged-emacs-devel@m.gmane.org; Thu, 26 Jan 2017 14:04:40 +0100 Original-Received: from localhost ([::1]:38472 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWjjJ-0000jI-Ew for ged-emacs-devel@m.gmane.org; Thu, 26 Jan 2017 08:04:45 -0500 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:56210) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1cWjiD-0000iA-Qe for emacs-devel@gnu.org; Thu, 26 Jan 2017 08:03:38 -0500 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1cWjiC-0007DF-T2 for emacs-devel@gnu.org; Thu, 26 Jan 2017 08:03:37 -0500 Original-Received: from mail-yb0-x231.google.com ([2607:f8b0:4002:c09::231]:34461) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1cWjiC-0007Cj-PD for emacs-devel@gnu.org; Thu, 26 Jan 2017 08:03:36 -0500 Original-Received: by mail-yb0-x231.google.com with SMTP id j82so39511787ybg.1 for ; Thu, 26 Jan 2017 05:03:35 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:from:date:message-id:subject:to; bh=wjjtXUQRg0LWe0mqhPDmEuoLf8hTFi6qYc9ulCw3fY8=; b=M79Onbn4O9KSuVT3f27rssbylQ3cbx2HFxV1Bokd+FnZFEmmnwGGFeo0WqxTNsV1DL 6+nKPANbUPhyJrvFUGExUWmRIXC/LSI03rVz3+cPPQekP/jvhKXNvisPBiR1OHIsFvOr DruXaP/+zETs/AV5YADih30yDcKCEucGJptlsY4xZ7McJfII5euCLf/ytENiZRbeqtdI g/YR+7pIjGcpzoRraqwIGE4OV5l2sX/bSIwfkjMjloh/vCmnVxSQpZ+ItbUspf0f4cyq V0dPycsdrfwgv+vmtOmn+OmGdtOia7t96Pi3Y0UQoaf4z6AkbzHD+ajXUdXjrzFPS7Lx loLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=wjjtXUQRg0LWe0mqhPDmEuoLf8hTFi6qYc9ulCw3fY8=; b=aLq7m56Q5Ar8cbYGEsPbPNg6joJBk3HnXTpQ1UqLFlUWoNvlWAE4WtGOuSpwilFJSL bIvZzpkN8puBOzQu39rilk26Hh6l4odpBo9ooy0o+HSLS/nrCh50POZOPGySKUtaaa/k NYytnnMzmKEWJ4XrYWRRo53J+razHbRUVaLZhlGveMn4T+1RBuuJ8oo8AHbTsQaa5Ery ix3pFFLnBxM9GdE54ZTZzPIxmbSI9dBsbZh4EOkjLOARHomXZWNVMC0rUPB6No2Mes6F e0X87PvvH1yG0b+Cyngi2za3IcSn5iXLZk9hUffRvL5lmv8zMMLn5ZuOmnylr+6MI4Hp vwwQ== X-Gm-Message-State: AIkVDXKJQP6E5Wr0mSX+1DFBknDIOJTkuIhV6kQjQgDq9nKbRcHI5TzB3cdkvWDE1/rIfxKs4fMNYp69IWg3Iw== X-Received: by 10.13.244.1 with SMTP id d1mr1998096ywf.139.1485435814044; Thu, 26 Jan 2017 05:03:34 -0800 (PST) Original-Received: by 10.129.153.77 with HTTP; Thu, 26 Jan 2017 05:03:33 -0800 (PST) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 2607:f8b0:4002:c09::231 X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.org gmane.emacs.devel:211612 Archived-At: --94eb2c03632c0888870546fefaec Content-Type: text/plain; charset=UTF-8 While, working on `byte-switch`, I discovered a critical bug when a hash table is present in the constant vector of a bytecode function. If such a function is called when temacs dumps a binary during the biuld process, all keys and their corresponding values change to that of a different hash table. The following patch demonstrates this by testing the value of 'foo` in a table mapping 'foo to 'bar, and erroring out if the test fails. This causes temacs to error out, failing the build. Since the current elisp codebase, doesn't use printed representation anywhere to represent hash tables, this bug doesn't come up. However, this may fail builds in the future, if future code does that. -- Vibhav Pant vibhavp@gmail.com --94eb2c03632c0888870546fefaec Content-Type: text/x-patch; charset=US-ASCII; name="wrong-hash-table.patch" Content-Disposition: attachment; filename="wrong-hash-table.patch" Content-Transfer-Encoding: base64 X-Attachment-Id: f_iyee4mk90 ZGlmZiAtLWdpdCBhL2xpc3AvY3VzdG9tLmVsIGIvbGlzcC9jdXN0b20uZWwKaW5kZXggNzBiNjgz OWRiMy4uNDkzMzBiYjFhNCAxMDA2NDQKLS0tIGEvbGlzcC9jdXN0b20uZWwKKysrIGIvbGlzcC9j dXN0b20uZWwKQEAgLTE0Niw2ICsxNDYsMTAgQEAgY3VzdG9tLWRlY2xhcmUtdmFyaWFibGUKIHNl dCB0byBuaWwsIGFzIHRoZSB2YWx1ZSBpcyBubyBsb25nZXIgcm9ndWUuIgogICAocHV0IHN5bWJv bCAnc3RhbmRhcmQtdmFsdWUgKHB1cmVjb3B5IChsaXN0IGRlZmF1bHQpKSkKICAgOzsgTWF5YmUg dGhpcyBvcHRpb24gd2FzIHJvZ3VlIGluIGFuIGVhcmxpZXIgdmVyc2lvbi4gIEl0IG5vIGxvbmdl ciBpcy4KKyAgKGxldCAoKGh0ICNzKGhhc2gtdGFibGUgc2l6ZSA2NSB0ZXN0IGVxbCByZWhhc2gt c2l6ZSAxLjUgcmVoYXNoLXRocmVzaG9sZCAwLjggZGF0YQorICAgICAgICAgICAgICAgICAgICAg ICAgICAoZm9vIGJhcikpKSkKKyAgICAodW5sZXNzIChlcSAnYmFyIChnZXRoYXNoICdmb28gaHQp KQorICAgICAgKGVycm9yIChmb3JtYXQgIlRoaXMgc2hvdWxkbid0IGJlIGhhcHBlbmluZy4gSGFz aCB0YWJsZTogJXMiIGh0KSkpKQogICAod2hlbiAoZ2V0IHN5bWJvbCAnZm9yY2UtdmFsdWUpCiAg ICAgKHB1dCBzeW1ib2wgJ2ZvcmNlLXZhbHVlIG5pbCkpCiAgIChpZiAoa2V5d29yZHAgZG9jKQo= --94eb2c03632c0888870546fefaec--