From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Alan Mackenzie Newsgroups: gmane.emacs.bugs Subject: bug#53164: (After an ELC+ELN build, don't load the source file into a buffer.) fixed. Date: Mon, 10 Jan 2022 19:34:58 +0000 Message-ID: References: <83v8yr8o0t.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="28884"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 53164@debbugs.gnu.org To: Eli Zaretskii Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Mon Jan 10 20:36:40 2022 Return-path: Envelope-to: geb-bug-gnu-emacs@m.gmane-mx.org Original-Received: from lists.gnu.org ([209.51.188.17]) by ciao.gmane.io with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.92) (envelope-from ) id 1n70TA-0007GQ-Cf for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 10 Jan 2022 20:36:40 +0100 Original-Received: from localhost ([::1]:41042 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1n70T9-0006i4-Ch for geb-bug-gnu-emacs@m.gmane-mx.org; Mon, 10 Jan 2022 14:36:39 -0500 Original-Received: from eggs.gnu.org ([209.51.188.92]:49368) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1n70SY-0006eX-D9 for bug-gnu-emacs@gnu.org; Mon, 10 Jan 2022 14:36:04 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]:60428) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1n70SX-00082p-Rs for bug-gnu-emacs@gnu.org; Mon, 10 Jan 2022 14:36:01 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1n70SX-0007Zb-I5 for bug-gnu-emacs@gnu.org; Mon, 10 Jan 2022 14:36:01 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Alan Mackenzie Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Mon, 10 Jan 2022 19:36:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 53164 X-GNU-PR-Package: emacs Original-Received: via spool by 53164-submit@debbugs.gnu.org id=B53164.164184331229048 (code B ref 53164); Mon, 10 Jan 2022 19:36:01 +0000 Original-Received: (at 53164) by debbugs.gnu.org; 10 Jan 2022 19:35:12 +0000 Original-Received: from localhost ([127.0.0.1]:53331 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1n70Rj-0007YR-GN for submit@debbugs.gnu.org; Mon, 10 Jan 2022 14:35:11 -0500 Original-Received: from colin.muc.de ([193.149.48.1]:22355 helo=mail.muc.de) by debbugs.gnu.org with smtp (Exim 4.84_2) (envelope-from ) id 1n70Re-0007Xk-1R for 53164@debbugs.gnu.org; Mon, 10 Jan 2022 14:35:10 -0500 Original-Received: (qmail 54895 invoked by uid 3782); 10 Jan 2022 19:34:59 -0000 Original-Received: from acm.muc.de (p4fe15a8e.dip0.t-ipconnect.de [79.225.90.142]) (using STARTTLS) by colin.muc.de (tmda-ofmipd) with ESMTP; Mon, 10 Jan 2022 20:34:59 +0100 Original-Received: (qmail 4147 invoked by uid 1000); 10 Jan 2022 19:34:58 -0000 Content-Disposition: inline In-Reply-To: <83v8yr8o0t.fsf@gnu.org> X-Submission-Agent: TMDA/1.3.x (Ph3nix) X-Primary-Address: acm@muc.de X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list 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-mx.org@gnu.org Original-Sender: "bug-gnu-emacs" Xref: news.gmane.io gmane.emacs.bugs:223895 Archived-At: Hello, Eli. On Mon, Jan 10, 2022 at 20:05:22 +0200, Eli Zaretskii wrote: > > Date: Mon, 10 Jan 2022 17:15:34 +0000 > > From: Alan Mackenzie > > Bug fixed in the emacs-28 branch. > I reverted that commit. Please don't make any non-trivial changes on > the release branch without asking first, and definitely not without > explaining the problem and the solution in much more detail than you > did. It seemed to me like such an obvious fix for a non-obvious bug which can cause serious amounts of time to be lost (see below), and with a negligible chance of doing any damage. But after reading the following, please consider putting it back. It will make building Emacs faster, even if only a little bit. > FTR, I didn't see any build problems due to this issue, not even > once. So I wonder what exactly did you see and in what scenario. > Please elaborate. It took me practically three days solid to diagnose this bug. The symptom, whilst bootstrapping the scratch/correct-warning-pos, was the following message on stderr: Error: (invalid-function #) .. I quickly tracked down the source of the `=' symbol to lisp/subr.el, in the code for `zerop'. Further progress was elusive. In the course of debugging it, I ended up writing my own backtrace routine, free of dependencies, which can work early in the bootstrap, unlike the standard backtrace. The course of events which led to that error message is this: 1. During the bootstrap with native compile, ELC+ELN compiles subr.el. It does so by getting the LAP code from bytecomp.el via a side channel. It completes the compilation. 2. bootstrap-emacs now contains the native-compiled version of subr.el. Unfortunately, the macro `zerop--anon-cmacro' a complier macro for `zerop', still contains symbols with position. 3. Having finished the native compilation, ELC+ELN visited subr.el in a buffer, due to this bug. 4. As part of visiting subr.el, Emacs calls after-find-file, which invokes find-file-hook. 5. One of the entries in find-file-hook is vc-refresh-state, which gets called. 6. This causes vc-git.elc to be loaded. Eventually, vc-git--out-ok gets called. 7. vc-git--out-ok invokes `zerop', or more precisely the code generated by the macro `zerop--anon-cmacro'. This contains #. 8. eval signals an error, since symbols-with-pos-enabled is nil and it thus can't handle the symbol with position. This error gets blocked from reaching a backtrace function by an inconsiderate condition-case, which just dumps the message onto stderr. The most obvious cause of the error seems to be at step 3, where bootstrap-emacs spuriously visits the source file. As I said above, please consider putting the fix to this bug back. I do not want anybody else to have to go through what I had to to track the bug down. Leaving stale arguments on the command line, later to be visited, cannot possibly be the Right Thing. I'm pretty sure it was not done deliberately, it was just a minor oversight which didn't seem to matter. Thanks. > Thanks. -- Alan Mackenzie (Nuremberg, Germany).