From mboxrd@z Thu Jan 1 00:00:00 1970 Path: news.gmane.io!.POSTED.blaine.gmane.org!not-for-mail From: Stefan Monnier Newsgroups: gmane.emacs.devel Subject: Re: Fontification error backtrace [Was: Why is it so difficult to get a Lisp backtrace?] Date: Thu, 30 Jun 2022 16:34:23 -0400 Message-ID: References: <87edzchi3d.fsf@gnus.org> <83sfnsadow.fsf@gnu.org> <83o7yg9f0w.fsf@gnu.org> <83r1396lvr.fsf@gnu.org> <83edz87ivz.fsf@gnu.org> Mime-Version: 1.0 Content-Type: text/plain Injection-Info: ciao.gmane.io; posting-host="blaine.gmane.org:116.202.254.214"; logging-data="21365"; mail-complaints-to="usenet@ciao.gmane.io" User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux) Cc: Eli Zaretskii , larsi@gnus.org, emacs-devel@gnu.org To: Alan Mackenzie Original-X-From: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Thu Jun 30 22:36:09 2022 Return-path: Envelope-to: ged-emacs-devel@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 1o70tU-0005HK-Cj for ged-emacs-devel@m.gmane-mx.org; Thu, 30 Jun 2022 22:36:08 +0200 Original-Received: from localhost ([::1]:46768 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1o70tS-0007GP-SF for ged-emacs-devel@m.gmane-mx.org; Thu, 30 Jun 2022 16:36:06 -0400 Original-Received: from eggs.gnu.org ([2001:470:142:3::10]:38886) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1o70ry-0006SQ-A0 for emacs-devel@gnu.org; Thu, 30 Jun 2022 16:34:34 -0400 Original-Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:5376) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1o70rt-0000TS-7u; Thu, 30 Jun 2022 16:34:33 -0400 Original-Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 5CE9980677; Thu, 30 Jun 2022 16:34:26 -0400 (EDT) Original-Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1]) by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 034FE80066; Thu, 30 Jun 2022 16:34:25 -0400 (EDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca; s=mail; t=1656621265; bh=5zAWnw/NhTayHChVPxcdIzt1shTThzWTsGCdqcGd/3Y=; h=From:To:Cc:Subject:References:Date:In-Reply-To:From; b=DUpgXN/lCmRuMzyOt5WgN5p9lapFBntzUjeR5ePr1KOH/av3mTfjz2ZQuahjAyYMh EJthZZUBIVxuW7hwSTvA3o2gEv7fy1vri9gwxesCR2CKXQwY1pSV8JuwyBnvIM6tHd sI36QyTlRaHMSka/GkCCGTL/2YbsMXSFcpaBywYVq0lOQgO3y1tJ+VvrOLl/lHk5tC CipmcU7yUmj2eHn7phWf8NFbt36TjCD6PupmZT4kE6gT1ZkqE87FoDGfWsrkSjKv1Y jA5xTWfP5XIEAx1BQayCv8DPIfJVgWbLH7HO1O22v8jQLaXE1lPuBtdG4qog2gFUmM Gr346xo0JtJQw== Original-Received: from alfajor (unknown [45.72.196.165]) by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id AD9FF1202AF; Thu, 30 Jun 2022 16:34:24 -0400 (EDT) In-Reply-To: (Alan Mackenzie's message of "Tue, 28 Jun 2022 19:31:59 +0000") Received-SPF: pass client-ip=132.204.25.50; envelope-from=monnier@iro.umontreal.ca; helo=mailscanner.iro.umontreal.ca X-Spam_score_int: -42 X-Spam_score: -4.3 X-Spam_bar: ---- X-Spam_report: (-4.3 / 5.0 requ) BAYES_00=-1.9, DKIM_SIGNED=0.1, DKIM_VALID=-0.1, DKIM_VALID_AU=-0.1, RCVD_IN_DNSWL_MED=-2.3, SPF_HELO_NONE=0.001, SPF_PASS=-0.001, T_SCC_BODY_TEXT_LINE=-0.01 autolearn=ham autolearn_force=no X-Spam_action: no action X-BeenThere: emacs-devel@gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: "Emacs development discussions." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: emacs-devel-bounces+ged-emacs-devel=m.gmane-mx.org@gnu.org Original-Sender: "Emacs-devel" Xref: news.gmane.io gmane.emacs.devel:291756 Archived-At: >> That's where we currently log all the errors during redisplay, since >> Emacs 21.1. So why this one is different? > > It's not a single line, or a small number of lines. It could potentially > be a stack overflow error, generating a large backtrace, which might have > more lines than message-log-max. How 'bout stashing the backtrace data in a var (without turning it into text yet; that should always be quick, safe, and painless) and then adding a button in the *Messages* (or *Warnings*) next to the error itself such that pressing the buttong shows you the actual backtrace? We could even try and get fancy: instead of only stashing the `backtrace-frames`, we could also stash a copy of the specpdl so we could bring up a *Backtrace* buffer which isn't quite "live" but can still be used to some extent to see the values of local vars (and `current-buffer`) in the different activation frames. BTW, in order to debug fontification errors, we also have `jit-locak-debug-mode` which postpones the jit/font-lock execution from within redisplay to "just a bit later" such that it can use the debugger. IIRC it still has some rough edges in some cases, but in theory it should be possible to make this work such that you can (for example) Edebug `font-lock.el` itself. Stefan