From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.org!.POSTED!not-for-mail From: Paul Eggert Newsgroups: gmane.emacs.bugs Subject: bug#30855: 25.3; temacs fails with bus error during garbage collection Date: Tue, 20 Mar 2018 09:58:12 -0700 Organization: UCLA Computer Science Department Message-ID: <23993a7d-08e3-2c23-ace1-25850620e59e@cs.ucla.edu> References: <23215.54774.152043.418244@a1i15.kph.uni-mainz.de> <834llboouy.fsf@gnu.org> <23217.5116.912173.630464@a1i15.kph.uni-mainz.de> <83y3imls72.fsf@gnu.org> <83tvtalmy4.fsf@gnu.org> NNTP-Posting-Host: blaine.gmane.org Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="------------636A01569630334D17C14756" X-Trace: blaine.gmane.org 1521565035 21602 195.159.176.226 (20 Mar 2018 16:57:15 GMT) X-Complaints-To: usenet@blaine.gmane.org NNTP-Posting-Date: Tue, 20 Mar 2018 16:57:15 +0000 (UTC) User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 Cc: ulm@gentoo.org, 30855@debbugs.gnu.org, gentoo-bug@opensource.sf-tec.de To: Eli Zaretskii , Andreas Schwab Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane.org@gnu.org Tue Mar 20 17:57:11 2018 Return-path: Envelope-to: geb-bug-gnu-emacs@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 1eyKZT-0005VC-35 for geb-bug-gnu-emacs@m.gmane.org; Tue, 20 Mar 2018 17:57:11 +0100 Original-Received: from localhost ([::1]:50707 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eyKbU-0006Jw-Gu for geb-bug-gnu-emacs@m.gmane.org; Tue, 20 Mar 2018 12:59:16 -0400 Original-Received: from eggs.gnu.org ([2001:4830:134:3::10]:41232) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1eyKbJ-0006Ij-Vy for bug-gnu-emacs@gnu.org; Tue, 20 Mar 2018 12:59:06 -0400 Original-Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1eyKbG-0005VX-3k for bug-gnu-emacs@gnu.org; Tue, 20 Mar 2018 12:59:06 -0400 Original-Received: from debbugs.gnu.org ([208.118.235.43]:36248) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1eyKbF-0005VQ-Vc for bug-gnu-emacs@gnu.org; Tue, 20 Mar 2018 12:59:02 -0400 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1eyKbF-0006w2-Nw for bug-gnu-emacs@gnu.org; Tue, 20 Mar 2018 12:59:01 -0400 X-Loop: help-debbugs@gnu.org Resent-From: Paul Eggert Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 20 Mar 2018 16:59:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 30855 X-GNU-PR-Package: emacs X-GNU-PR-Keywords: Original-Received: via spool by 30855-submit@debbugs.gnu.org id=B30855.152156510226609 (code B ref 30855); Tue, 20 Mar 2018 16:59:01 +0000 Original-Received: (at 30855) by debbugs.gnu.org; 20 Mar 2018 16:58:22 +0000 Original-Received: from localhost ([127.0.0.1]:44145 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eyKab-0006v7-OW for submit@debbugs.gnu.org; Tue, 20 Mar 2018 12:58:21 -0400 Original-Received: from zimbra.cs.ucla.edu ([131.179.128.68]:34050) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1eyKaa-0006ur-Bu for 30855@debbugs.gnu.org; Tue, 20 Mar 2018 12:58:20 -0400 Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 49649161769; Tue, 20 Mar 2018 09:58:14 -0700 (PDT) Original-Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10032) with ESMTP id YhT1GEmtcIpB; Tue, 20 Mar 2018 09:58:13 -0700 (PDT) Original-Received: from localhost (localhost [127.0.0.1]) by zimbra.cs.ucla.edu (Postfix) with ESMTP id 7429A16176C; Tue, 20 Mar 2018 09:58:13 -0700 (PDT) X-Virus-Scanned: amavisd-new at zimbra.cs.ucla.edu Original-Received: from zimbra.cs.ucla.edu ([127.0.0.1]) by localhost (zimbra.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10026) with ESMTP id ebS-276yWdGc; Tue, 20 Mar 2018 09:58:13 -0700 (PDT) Original-Received: from Penguin.CS.UCLA.EDU (Penguin.CS.UCLA.EDU [131.179.64.200]) by zimbra.cs.ucla.edu (Postfix) with ESMTPSA id 55435161769; Tue, 20 Mar 2018 09:58:13 -0700 (PDT) In-Reply-To: <83tvtalmy4.fsf@gnu.org> Content-Language: en-US X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-detected-operating-system: by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic] X-Received-From: 208.118.235.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" Xref: news.gmane.org gmane.emacs.bugs:144458 Archived-At: This is a multi-part message in MIME format. --------------636A01569630334D17C14756 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Even with the fix the code assumes that Lisp_Object is aligned at least as strictly as void *; this should be verified. Plus, if the alignments are the same Emacs can avoid a runtime check each time through the loop, which should help branch prediction. I installed the attached into master; if it fixes Ulrich's problem I think this should be backported to emacs-26. Thanks to Ulrich, Eli, and Andreas for reporting this and suggesting the fix. --------------636A01569630334D17C14756 Content-Type: text/x-patch; name="0001-Port-to-32-bit-sparc64.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="0001-Port-to-32-bit-sparc64.patch" >From 59abd64e9a448bbc5e375a9238d55074d3c9ba11 Mon Sep 17 00:00:00 2001 From: Paul Eggert Date: Tue, 20 Mar 2018 09:54:20 -0700 Subject: [PATCH] Port to 32-bit sparc64 Problem reported by Ulrich Mueller; fix suggested by Eli Zaretskii and Andreas Schwab (Bug#30855). * src/alloc.c (mark_memory): Call mark_maybe_object only on pointers that are properly aligned for Lisp_Object. --- src/alloc.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/src/alloc.c b/src/alloc.c index f97b99c0f3..da01173fba 100644 --- a/src/alloc.c +++ b/src/alloc.c @@ -4981,7 +4981,11 @@ mark_memory (void *start, void *end) for (pp = start; (void *) pp < end; pp += GC_POINTER_ALIGNMENT) { mark_maybe_pointer (*(void **) pp); - mark_maybe_object (*(Lisp_Object *) pp); + + verify (alignof (Lisp_Object) % GC_POINTER_ALIGNMENT == 0); + if (alignof (Lisp_Object) == GC_POINTER_ALIGNMENT + || (uintptr_t) pp % alignof (Lisp_Object) == 0) + mark_maybe_object (*(Lisp_Object *) pp); } } -- 2.14.3 --------------636A01569630334D17C14756--