From: Alan Mackenzie <acm@muc.de>
To: Stefan Monnier <monnier@iro.umontreal.ca>
Cc: Eli Zaretskii <eliz@gnu.org>, larsi@gnus.org, emacs-devel@gnu.org
Subject: Re: Redisplay hook error bactraces [Was: Fontification error backtrace]
Date: Wed, 13 Jul 2022 19:58:13 +0000 [thread overview]
Message-ID: <Ys8j1eCDyaig/3g+@ACM> (raw)
In-Reply-To: <jwvfsj4al3c.fsf-monnier+emacs@gnu.org>
Hello, Stefan.
On Wed, Jul 13, 2022 at 15:13:41 -0400, Stefan Monnier wrote:
> > + /* If an error is signalled during a Lisp hook in redisplay, write a
> > + backtrace into the buffer *Backtrace*. */
> > + if (!debugger_called && !NILP (error_symbol)
> > + && redisplay_lisping
> > + && backtrace_on_redisplay_lisp_error
> > + && (!backtrace_yet || !NILP (Vredisplay_last_error))
> > + && (NILP (clause) || h == redisplay_deep_handler)
> > + && NILP (Vinhibit_debugger)
> > + && !NILP (Ffboundp (Qdebug_early)))
> > + {
> > + max_ensure_room (&max_lisp_eval_depth, lisp_eval_depth, 100);
> > + specpdl_ref count = SPECPDL_INDEX ();
> > + ptrdiff_t counti = specpdl_ref_to_count (count);
> > + AUTO_STRING (backtrace, "*Backtrace*");
> > + Lisp_Object backtrace_buffer;
> > + AUTO_STRING (gap, "\n\n\n\n"); /* Separates backtraces in *Backtrace* */
> I really think that printing the backtrace right when the error is
> signaled is a bad idea. Better just copy the whole specpdl (or just the
> backtrace part of it) and leave the buffer manipulation and printing for
> later when we're back in a normal&sane context.
What you suggest would imply a _lot_ of coding to make it happen. Does
there exist anywhere any support for copyging a specpdl, and somehow
making a lisp object out of it? Why do you think that copying the
specpdl would be less work or less risky than directly generating a
backtrace, as the current code does?
The advantage of directly generating the backtrace is that all the
infrastructure is already there. We've got mapbacktrace which
encapsulates the formats of the specpdl. And debug-early.el, whose two
functions total 60 lines (including doc strings and comments) and don't
use any other Lisp whatsoever.
> It would be worthwhile doing all this work in the context of the error
> if there was an upside such as the ability to do the debugging "live",
> but since this is for the case where we'll be doing a "post-mortem
> debugging" anyway, we're much better off doing as little as possible in
> the context of the error: too many things can go wrong when running in
> the context of the error, it's asking for trouble.
Again, why is copying the pdl less risky than generating the backtrace?
> Stefan
--
Alan Mackenzie (Nuremberg, Germany).
next prev parent reply other threads:[~2022-07-13 19:58 UTC|newest]
Thread overview: 54+ messages / expand[flat|nested] mbox.gz Atom feed top
2022-06-25 13:42 Why is it so difficult to get a Lisp backtrace? Alan Mackenzie
2022-06-25 15:26 ` Alan Mackenzie
2022-06-25 15:30 ` Stefan Kangas
2022-06-25 15:52 ` Alan Mackenzie
2022-06-25 16:27 ` Stefan Kangas
2022-06-25 15:35 ` Lars Ingebrigtsen
2022-06-25 15:59 ` Alan Mackenzie
2022-06-25 16:51 ` Eli Zaretskii
2022-06-25 19:45 ` Alan Mackenzie
2022-06-26 5:20 ` Eli Zaretskii
2022-06-27 19:48 ` Fontification error backtrace [Was: Why is it so difficult to get a Lisp backtrace?] Alan Mackenzie
2022-06-28 11:43 ` Lars Ingebrigtsen
2022-06-28 11:57 ` Eli Zaretskii
2022-06-28 17:28 ` Alan Mackenzie
2022-06-28 18:17 ` Eli Zaretskii
2022-06-28 19:31 ` Alan Mackenzie
2022-06-29 19:00 ` Eli Zaretskii
2022-07-12 19:48 ` Redisplay hook error bactraces [Was: Fontification error backtrace] Alan Mackenzie
2022-07-13 12:33 ` Eli Zaretskii
2022-07-13 18:41 ` Redisplay hook error backtraces Alan Mackenzie
2022-07-13 19:00 ` Eli Zaretskii
2022-07-13 20:12 ` Alan Mackenzie
2022-07-13 20:49 ` Stefan Monnier
2022-07-14 5:12 ` Eli Zaretskii
2022-07-14 9:01 ` Alan Mackenzie
2022-07-14 9:10 ` Eli Zaretskii
2022-07-14 13:42 ` Alan Mackenzie
2022-07-14 13:59 ` Eli Zaretskii
2022-07-14 16:07 ` Alan Mackenzie
2022-07-14 16:18 ` Stefan Monnier
2022-07-14 19:47 ` Alan Mackenzie
2022-07-14 20:48 ` Stefan Monnier
2022-07-15 5:50 ` Eli Zaretskii
2022-07-15 18:18 ` Alan Mackenzie
2022-07-16 6:03 ` Eli Zaretskii
2022-07-14 17:09 ` Eli Zaretskii
2022-07-14 19:33 ` Alan Mackenzie
2022-07-16 6:12 ` Eli Zaretskii
2022-07-16 15:45 ` Alan Mackenzie
2022-07-13 19:13 ` Redisplay hook error bactraces [Was: Fontification error backtrace] Stefan Monnier
2022-07-13 19:24 ` Eli Zaretskii
2022-07-13 19:58 ` Alan Mackenzie [this message]
2022-07-13 20:45 ` Stefan Monnier
2022-06-30 20:34 ` Fontification error backtrace [Was: Why is it so difficult to get a Lisp backtrace?] Stefan Monnier
2022-07-01 5:39 ` Eli Zaretskii
2022-07-01 15:34 ` Juri Linkov
2022-07-01 16:04 ` Eli Zaretskii
2022-07-01 19:14 ` Juri Linkov
2022-07-01 19:26 ` Stefan Monnier
2022-07-02 5:53 ` Eli Zaretskii
2022-07-02 21:15 ` Stefan Monnier
2022-07-02 20:27 ` Alan Mackenzie
2022-07-02 21:12 ` Stefan Monnier
2022-06-26 8:45 ` Why is it so difficult to get a Lisp backtrace? Stefan Monnier
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=Ys8j1eCDyaig/3g+@ACM \
--to=acm@muc.de \
--cc=eliz@gnu.org \
--cc=emacs-devel@gnu.org \
--cc=larsi@gnus.org \
--cc=monnier@iro.umontreal.ca \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).