From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!not-for-mail From: Paul Eggert Newsgroups: gmane.emacs.bugs Subject: bug#8546: fix for Emacs pseudovector incompatibility with GCC 4.6.0 Date: Mon, 25 Apr 2011 00:41:58 -0700 Organization: UCLA Computer Science Department Message-ID: <4DB525C6.5020705@cs.ucla.edu> NNTP-Posting-Host: lo.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------030407000307040607010209" X-Trace: dough.gmane.org 1303718864 22156 80.91.229.12 (25 Apr 2011 08:07:44 GMT) X-Complaints-To: usenet@dough.gmane.org NNTP-Posting-Date: Mon, 25 Apr 2011 08:07:44 +0000 (UTC) To: 8546@debbugs.gnu.org Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Mon Apr 25 10:07:40 2011 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane.org Original-Received: from lists.gnu.org ([140.186.70.17]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1QEGpX-0001B6-U0 for geb-bug-gnu-emacs@m.gmane.org; Mon, 25 Apr 2011 10:07:40 +0200 Original-Received: from localhost ([::1]:55402 helo=lists2.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QEGpX-0005X0-Br for geb-bug-gnu-emacs@m.gmane.org; Mon, 25 Apr 2011 04:07:39 -0400 Original-Received: from eggs.gnu.org ([140.186.70.92]:44970) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QEGpT-0005Se-11 for bug-gnu-emacs@gnu.org; Mon, 25 Apr 2011 04:07:35 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QEGpR-00030F-Vs for bug-gnu-emacs@gnu.org; Mon, 25 Apr 2011 04:07:34 -0400 Original-Received: from debbugs.gnu.org ([140.186.70.43]:38876) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QEGpR-00030B-So for bug-gnu-emacs@gnu.org; Mon, 25 Apr 2011 04:07:33 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.69) (envelope-from ) id 1QEGRi-0006zb-MQ; Mon, 25 Apr 2011 03:43:02 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Paul Eggert Original-Sender: debbugs-submit-bounces@debbugs.gnu.org Resent-To: owner@debbugs.gnu.org Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 25 Apr 2011 07:43:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: report 8546 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: X-Debbugs-Original-To: bug-gnu-emacs@gnu.org Original-Received: via spool by submit@debbugs.gnu.org id=B.130371733226815 (code B ref -1); Mon, 25 Apr 2011 07:43:02 +0000 Original-Received: (at submit) by debbugs.gnu.org; 25 Apr 2011 07:42:12 +0000 Original-Received: from localhost ([127.0.0.1] helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QEGQu-0006yS-0m for submit@debbugs.gnu.org; Mon, 25 Apr 2011 03:42:12 -0400 Original-Received: from eggs.gnu.org ([140.186.70.92]) by debbugs.gnu.org with esmtp (Exim 4.69) (envelope-from ) id 1QEGQr-0006yG-Jt for submit@debbugs.gnu.org; Mon, 25 Apr 2011 03:42:10 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QEGQl-0007tf-Ma for submit@debbugs.gnu.org; Mon, 25 Apr 2011 03:42:04 -0400 Original-Received: from lists.gnu.org ([140.186.70.17]:41521) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QEGQl-0007tZ-Kj for submit@debbugs.gnu.org; Mon, 25 Apr 2011 03:42:03 -0400 Original-Received: from eggs.gnu.org ([140.186.70.92]:47419) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QEGQk-0002Ob-OF for bug-gnu-emacs@gnu.org; Mon, 25 Apr 2011 03:42:03 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1QEGQj-0007s1-PJ for bug-gnu-emacs@gnu.org; Mon, 25 Apr 2011 03:42:02 -0400 Original-Received: from smtp.cs.ucla.edu ([131.179.128.62]:36980) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1QEGQj-0007py-3u for bug-gnu-emacs@gnu.org; Mon, 25 Apr 2011 03:42:01 -0400 Original-Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id C9A9239E80E0 for ; Mon, 25 Apr 2011 00:41:59 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Original-Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 1ubayBcy-WST for ; Mon, 25 Apr 2011 00:41:58 -0700 (PDT) Original-Received: from [192.168.1.10] (pool-71-189-109-235.lsanca.fios.verizon.net [71.189.109.235]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id D0AEE39E8083 for ; Mon, 25 Apr 2011 00:41:58 -0700 (PDT) User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.2.14) Gecko/20110223 Thunderbird/3.1.8 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.11 Precedence: list Resent-Date: Mon, 25 Apr 2011 03:43:02 -0400 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.6 (newer, 3) X-Received-From: 140.186.70.43 X-BeenThere: bug-gnu-emacs@gnu.org List-Id: "Bug reports for GNU Emacs, the Swiss army knife of text editors" List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Original-Sender: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Xref: news.gmane.org gmane.emacs.bugs:45983 Archived-At: This is a multi-part message in MIME format. --------------030407000307040607010209 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 7bit Emacs's pseudovector implementation occasionally runs afoul of optimizations introduced by version 4.6.0 of GCC, and this can break Emacs. Luckily there's a fix, which I would like to install after some more testing. I'm publishing it here now for a heads-up. Another possible fix would be to disable the GCC optimizations. However, this would no doubt make Emacs slower overall, and anyway the optimizations are valid according to the rules of C which means that non-GCC compilers may well be doing them too. It's better to alter Emacs to avoid the problem, since this is not too much trouble. Here are more details about the problem. Building Emacs 23.3 (as well as the Emacs trunk) on Ubuntu 10.10 x86 and GCC 4.6.0, with Emacs configured by "configure --enable-checking=all", fails with the following symptoms: `/bin/pwd`/temacs --batch --load loadup bootstrap /home/eggert/junk/emacs-23.3/src/buffer.c:5177: Emacs fatal error: assertion failed: (XVECTOR (Vbuffer_defaults)->size & (PSEUDOVECTOR_FLAG | PVEC_TYPE_MASK)) == (PSEUDOVECTOR_FLAG | (PVEC_BUFFER)) Aborted I tracked this down to an incompatibility between Emacs and GCC 4.6.0 on the x86 with -O2 optimization. GCC does a type-based aliasing optimization, and reorders stores and loads to locations that cannot possibly be the same location if the types are as the program says they are. Unfortunately, Emacs's pseudovector implementation dissembles about the types and therefore runs afoul of the optimization. Possibly there are subtle bugs induced by this, even when --enable-checking is not used, but --enable-checking makes the problem obvious. Here's the source code, in buffer.c's init_buffer_once: reset_buffer_local_variables (&buffer_local_symbols, 1); /* Prevent GC from getting confused. */ buffer_defaults.text = &buffer_defaults.own_text; buffer_local_symbols.text = &buffer_local_symbols.own_text; BUF_INTERVALS (&buffer_defaults) = 0; BUF_INTERVALS (&buffer_local_symbols) = 0; XSETPVECTYPE (&buffer_defaults, PVEC_BUFFER); XSETBUFFER (Vbuffer_defaults, &buffer_defaults); Here are the relevant definitions in lisp.h: #define XSETPVECTYPE(v,code) ((v)->size |= PSEUDOVECTOR_FLAG | (code)) #define XSETBUFFER(a, b) (XSETPSEUDOVECTOR (a, b, PVEC_BUFFER)) #define XSETPSEUDOVECTOR(a, b, code) \ (XSETVECTOR (a, b), \ eassert ((XVECTOR (a)->size & (PSEUDOVECTOR_FLAG | PVEC_TYPE_MASK)) \ == (PSEUDOVECTOR_FLAG | (code)))) Here's the generated x86 code, with the problem highlighted: movl $buffer_local_symbols, %eax movl $1, %edx call reset_buffer_local_variables movl $buffer_defaults, %eax orl $5, %eax movl %eax, Vbuffer_defaults andl $-8, %eax 0=> movl (%eax), %eax 1=> orl $1073872896, buffer_defaults movl $buffer_defaults+8, buffer_defaults+76 andl $1082129920, %eax 2=> cmpl $1073872896, %eax movl $buffer_local_symbols+8, buffer_local_symbols+76 movl $0, buffer_defaults+64 movl $0, buffer_local_symbols+64 je .L2396 movl suppress_checking, %eax testl %eax, %eax je .L2398 .L2396: The code marked (1) implements the expansion of XSETPVECTYPE, and sets buffer_defaults.size to 0x40020000, the mark for a buffer. The code marked (2) is part of the expansion of the eassert, and it checks that XVECTOR (Vbuffer_defaults)->size has the proper flag and code. But (2) is relying on a *cached* copy of the size, which was loaded in (0), and (0) precedes (1). So, the assertion fails. The patch is attached. It's against my copy of Emacs, which has a few other fixes that I haven't had time to merge to the trunk yet. But it should give a good feel for what's involved. --------------030407000307040607010209 Content-Type: application/x-gzip; name="pseudovec.txt.gz" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="pseudovec.txt.gz" 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 8L8XOWeXoeAAAA== --------------030407000307040607010209--