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#61847: debug-early-backtrace only works some of the time. Date: Tue, 28 Feb 2023 09:12:08 +0000 Message-ID: References: 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="28197"; mail-complaints-to="usenet@ciao.gmane.io" Cc: 61847@debbugs.gnu.org To: Stefan Monnier Original-X-From: bug-gnu-emacs-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Tue Feb 28 10:13:37 2023 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 1pWw3E-000796-6m for geb-bug-gnu-emacs@m.gmane-mx.org; Tue, 28 Feb 2023 10:13:36 +0100 Original-Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1pWw2p-0008SB-Ir; Tue, 28 Feb 2023 04:13:11 -0500 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1pWw2h-0008RS-Qx for bug-gnu-emacs@gnu.org; Tue, 28 Feb 2023 04:13:03 -0500 Original-Received: from debbugs.gnu.org ([209.51.188.43]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1pWw2g-00071j-Q4 for bug-gnu-emacs@gnu.org; Tue, 28 Feb 2023 04:13:03 -0500 Original-Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1pWw2g-0006UY-7L for bug-gnu-emacs@gnu.org; Tue, 28 Feb 2023 04:13:02 -0500 X-Loop: help-debbugs@gnu.org Resent-From: Alan Mackenzie Original-Sender: "Debbugs-submit" Resent-CC: bug-gnu-emacs@gnu.org Resent-Date: Tue, 28 Feb 2023 09:13:02 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 61847 X-GNU-PR-Package: emacs Original-Received: via spool by 61847-submit@debbugs.gnu.org id=B61847.167757554024903 (code B ref 61847); Tue, 28 Feb 2023 09:13:02 +0000 Original-Received: (at 61847) by debbugs.gnu.org; 28 Feb 2023 09:12:20 +0000 Original-Received: from localhost ([127.0.0.1]:49690 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pWw20-0006Tb-Cw for submit@debbugs.gnu.org; Tue, 28 Feb 2023 04:12:20 -0500 Original-Received: from mx3.muc.de ([193.149.48.5]:11796) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1pWw1w-0006TK-Iv for 61847@debbugs.gnu.org; Tue, 28 Feb 2023 04:12:19 -0500 Original-Received: (qmail 97450 invoked by uid 3782); 28 Feb 2023 10:12:09 +0100 Original-Received: from acm.muc.de (pd953a9ed.dip0.t-ipconnect.de [217.83.169.237]) (using STARTTLS) by colin.muc.de (tmda-ofmipd) with ESMTP; Tue, 28 Feb 2023 10:12:09 +0100 Original-Received: (qmail 4467 invoked by uid 1000); 28 Feb 2023 09:12:09 -0000 Content-Disposition: inline In-Reply-To: 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-bounces+geb-bug-gnu-emacs=m.gmane-mx.org@gnu.org Xref: news.gmane.io gmane.emacs.bugs:256937 Archived-At: Hello, Stefan. On Mon, Feb 27, 2023 at 14:15:22 -0500, Stefan Monnier wrote: > > The cause of the problem was patch > > commit 08108a856a544a80d11b1e9e437fe6c45e25adec > > Author: Stefan Monnier > > Date: Fri Apr 29 22:18:09 2022 -0400 > > debug-early: Print bytecode in a more manageable way > > * lisp/emacs-lisp/debug-early.el (debug-early-backtrace): > > Escape newlines to and bytecodes to make backtraces slightly more > > readable. Use `cl-prin1` when available. > > , which made debug-early.el dependent on arbitrarily nested Lisp code, in > > violation of its explicitly stated design goal to have _no_ dependence on > > Lisp code. Some of this Lisp simply fails to load. > Indeed (fboundp 'cl-prin1) was too optimistic a test since it just > checks whether we're before loading `loaddef.el` or after it, but > `cl-prin1` uses more (preloaded) features such as those provided by > `cl-generic` which is only loaded later. It violates the design goal of having no Lisp dependencies. It was those dependencies which broke the rock solid dependability of the original code. > > It's not clear why the patch was applied. > To get more readable backtraces when used after bootstrapping (as well as > in the later phases of bootstrapping). More readable? Just how is a backtrace produced using cl-prin1 more readable than one using prin1? They both look pretty much the same. But cl-prin1 only outputs partial information for some things, such as compiled functions, so it is not a good choice. debug-early-backtrace should produce _complete_ backtraces. > > I propose fixing the bug by restoring the code to having no such > > dependencies with the following patch: > How 'bout the patch below instead. > Maybe we should instead try and check whether we're after the bootstrap > (not sure what would be the corresponding test). It might work. It might work now, and fail in future releases of Emacs should the loading mechanism get changed. The original code using prin1 was rock solid, by design. What if there was some bug in the loading mechanism, or a bug in cl-print.el which prevented it loading cleanly, yet without triggering the condition-case you suggest below? Again, what's so readable about cl-prin1's output that makes it worth the compromise in debug-early-backtrace's design? And how will the contition-case you suggest help? (require 'cl-print nil t) returns non-nil in the pertinent circumstances. Putting a condition-case around that isn't going to change this. Have you actually tried out your patch? What happened when you did? > Stefan > diff --git a/lisp/emacs-lisp/debug-early.el b/lisp/emacs-lisp/debug-early.el > index 395498f2206..65770a9c1d9 100644 > --- a/lisp/emacs-lisp/debug-early.el > +++ b/lisp/emacs-lisp/debug-early.el > @@ -46,10 +46,13 @@ 'debug-early-backtrace > (print-escape-control-characters t) > (print-escape-nonascii t) > (prin1 (if (and (fboundp 'cl-prin1) > + (fboundp 'cl-defmethod) > ;; If we're being called while > ;; bootstrapping, we won't be able to load > ;; cl-print. > - (require 'cl-print nil t)) > + (condition-case nil > + (require 'cl-print nil t) > + (error nil))) > #'cl-prin1 > #'prin1))) > (mapbacktrace -- Alan Mackenzie (Nuremberg, Germany).