GNU logs - #45898, boring messages


Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Devon Sean McCullough <Emacs-hacker2018@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Fri, 15 Jan 2021 18:14:01 +0000
Resent-Message-ID: <handler.45898.B.16107344228878 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: report 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: 45898 <at> debbugs.gnu.org
X-Debbugs-Original-To: bug-gnu-emacs@HIDDEN
Received: via spool by submit <at> debbugs.gnu.org id=B.16107344228878
          (code B ref -1); Fri, 15 Jan 2021 18:14:01 +0000
Received: (at submit) by debbugs.gnu.org; 15 Jan 2021 18:13:42 +0000
Received: from localhost ([127.0.0.1]:41709 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1l0TbR-0002J8-KE
	for submit <at> debbugs.gnu.org; Fri, 15 Jan 2021 13:13:41 -0500
Received: from lists.gnu.org ([209.51.188.17]:33468)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <emacs-hacker2018@HIDDEN>) id 1l0TbP-0002J0-Af
 for submit <at> debbugs.gnu.org; Fri, 15 Jan 2021 13:13:40 -0500
Received: from eggs.gnu.org ([2001:470:142:3::10]:52216)
 by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <emacs-hacker2018@HIDDEN>)
 id 1l0TbP-0002SS-4x
 for bug-gnu-emacs@HIDDEN; Fri, 15 Jan 2021 13:13:39 -0500
Received: from gateway33.websitewelcome.com ([192.185.146.78]:21169)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <emacs-hacker2018@HIDDEN>)
 id 1l0TbN-0003go-AW
 for bug-gnu-emacs@HIDDEN; Fri, 15 Jan 2021 13:13:38 -0500
Received: from cm14.websitewelcome.com (cm14.websitewelcome.com [100.42.49.7])
 by gateway33.websitewelcome.com (Postfix) with ESMTP id 9222427830B1
 for <bug-gnu-emacs@HIDDEN>; Fri, 15 Jan 2021 12:13:17 -0600 (CST)
Received: from leaf.websitewelcome.com ([192.185.82.99]) by cmsmtp with SMTP
 id 0Tb3lO4Lrsvw90Tb3lfhCC; Fri, 15 Jan 2021 12:13:17 -0600
X-Authority-Reason: nr=8
Received: from pool-72-83-171-228.washdc.east.verizon.net
 ([72.83.171.228]:60246 helo=[192.168.1.165])
 by leaf.websitewelcome.com with esmtpsa (TLS1.2) tls
 TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.93)
 (envelope-from <Emacs-hacker2018@HIDDEN>) id 1l0Tb3-001LRa-Ah
 for bug-gnu-emacs@HIDDEN; Fri, 15 Jan 2021 12:13:17 -0600
From: Devon Sean McCullough <Emacs-hacker2018@HIDDEN>
Message-ID: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
Date: Fri, 15 Jan 2021 13:13:16 -0500
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.14; rv:78.0)
 Gecko/20100101 Thunderbird/78.6.1
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Language: en-US
Content-Transfer-Encoding: 8bit
X-AntiAbuse: This header was added to track abuse,
 please include it with any abuse report
X-AntiAbuse: Primary Hostname - leaf.websitewelcome.com
X-AntiAbuse: Original Domain - gnu.org
X-AntiAbuse: Originator/Caller UID/GID - [47 12] / [47 12]
X-AntiAbuse: Sender Address Domain - jovi.net
X-BWhitelist: no
X-Source-IP: 72.83.171.228
X-Source-L: No
X-Exim-ID: 1l0Tb3-001LRa-Ah
X-Source: 
X-Source-Args: 
X-Source-Dir: 
X-Source-Sender: pool-72-83-171-228.washdc.east.verizon.net ([192.168.1.165])
 [72.83.171.228]:60246
X-Source-Auth: devon2011@HIDDEN
X-Email-Count: 1
X-Source-Cap: am92aW5ldDtkZXZvbjtsZWFmLndlYnNpdGV3ZWxjb21lLmNvbQ==
X-Local-Domain: yes
Received-SPF: pass client-ip=192.185.146.78;
 envelope-from=emacs-hacker2018@HIDDEN; helo=gateway33.websitewelcome.com
X-Spam_score_int: -18
X-Spam_score: -1.9
X-Spam_bar: -
X-Spam_report: (-1.9 / 5.0 requ) BAYES_00=-1.9, RCVD_IN_DNSWL_NONE=-0.0001,
 RCVD_IN_MSPIKE_H2=-0.001, SPF_HELO_PASS=-0.001,
 SPF_PASS=-0.001 autolearn=ham autolearn_force=no
X-Spam_action: no action
X-Spam-Score: -1.6 (-)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -2.6 (--)

An elisp expression output a bigger list than expected so I hit m-< and
went out for a walk.  After four hours of 99% CPU, lldb backtrace shows

main → Frecursive_edit → recursive_edit_1 → command_loop →
command_loop.cold.1 → internal_catch → command_loop_2 →
internal_condition_case → command_loop_1 → read_key_sequence → read_char
→ redisplay_internal → redisplay_windows → redisplay_windows →
internal_condition_case_1 → redisplay_window_0 → redisplay_window →
compute_window_start_on_continuation_line → move_it_to →
move_it_in_display_line_to → gui_produce_glyphs → macfont_encode_char

If lldb forces read_char to return Qnil or redisplay_internal to return,
will Emacs crash immediately or survive long enough to save all buffers
or better yet continue working?

Would calling Fgoto-char(Fpoint_min()) from the lldb break immediately 
corrupt or crash Emacs?

	Peace
		--Devon

P.S.  If there exists a way to quickly and safely abort redisplay,
perhaps there should be a hook invoked when repeated keyboard-quit
has no effect, allowing experimentation into workarounds for this
apparently intractable redisplay problem?




Message sent:


Content-Disposition: inline
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
X-Mailer: MIME-tools 5.505 (Entity 5.505)
Content-Type: text/plain; charset=utf-8
X-Loop: help-debbugs@HIDDEN
From: help-debbugs@HIDDEN (GNU bug Tracking System)
To: Devon Sean McCullough <Emacs-hacker2018@HIDDEN>
Subject: bug#45898: Acknowledgement (27.1; wedged in redisplay again)
Message-ID: <handler.45898.B.16107344228878.ack <at> debbugs.gnu.org>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
X-Gnu-PR-Message: ack 45898
X-Gnu-PR-Package: emacs
Reply-To: 45898 <at> debbugs.gnu.org
Date: Fri, 15 Jan 2021 18:14:01 +0000

Thank you for filing a new bug report with debbugs.gnu.org.

This is an automatically generated reply to let you know your message
has been received.

Your message is being forwarded to the package maintainers and other
interested parties for their attention; they will reply in due course.

Your message has been sent to the package maintainer(s):
 bug-gnu-emacs@HIDDEN

If you wish to submit further information on this problem, please
send it to 45898 <at> debbugs.gnu.org.

Please do not send mail to help-debbugs@HIDDEN unless you wish
to report a problem with the Bug-tracking system.

--=20
45898: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D45898
GNU Bug Tracking System
Contact help-debbugs@HIDDEN with problems


Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Lars Ingebrigtsen <larsi@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Tue, 07 Jun 2022 13:38:01 +0000
Resent-Message-ID: <handler.45898.B45898.165460905529628 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Devon Sean McCullough <Emacs-hacker2018@HIDDEN>
Cc: Eli Zaretskii <eliz@HIDDEN>, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165460905529628
          (code B ref 45898); Tue, 07 Jun 2022 13:38:01 +0000
Received: (at 45898) by debbugs.gnu.org; 7 Jun 2022 13:37:35 +0000
Received: from localhost ([127.0.0.1]:39016 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1nyZOp-0007hn-HU
	for submit <at> debbugs.gnu.org; Tue, 07 Jun 2022 09:37:35 -0400
Received: from quimby.gnus.org ([95.216.78.240]:53654)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <larsi@HIDDEN>) id 1nyZOY-0007hI-RV
 for 45898 <at> debbugs.gnu.org; Tue, 07 Jun 2022 09:37:33 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org;
 s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date:
 References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:
 Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender:
 Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=JLM93w3kpsxtV8XMRXC3ST7T2xFFdT9r07KNQ6n1sP4=; b=BGSJ9/8mxXLrw31rwP07oXGACd
 w4aBW1dPQCSLXNr/ItNu9s+Ux2JVsGWlX9b9ZCRxTOvtD5jaQcJWt22XUExql0SS0W/Snlcm038bc
 9EdonZ8AMZTG2vsM9atKGWY6N7VKvHV8R/gK4utnVUFXymqxbX4XiEf1BYnIepz5ZZV0=;
Received: from [84.212.220.105] (helo=xo)
 by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.92) (envelope-from <larsi@HIDDEN>)
 id 1nyZOO-0003Cm-SW; Tue, 07 Jun 2022 15:37:11 +0200
From: Lars Ingebrigtsen <larsi@HIDDEN>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
X-Now-Playing: Blaine L. Reininger's _The Blue Sleep_: "Jacob's Ladder"
Date: Tue, 07 Jun 2022 15:37:08 +0200
In-Reply-To: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN> (Devon Sean
 McCullough's message of "Fri, 15 Jan 2021 13:13:16 -0500")
Message-ID: <87h74wh9x7.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 @@CONTACT_ADDRESS@@ for details.
 Content preview:  Devon Sean McCullough <Emacs-hacker2018@HIDDEN> writes:
 > If lldb forces read_char to return Qnil or redisplay_internal to return,
 > will Emacs crash immediately or survive long enough to save all buffers
 > or better yet continue working? 
 Content analysis details:   (-2.9 points, 5.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -1.0 ALL_TRUSTED            Passed through trusted hosts only via SMTP
 -1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%
 [score: 0.0000]
X-Spam-Score: -0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Devon Sean McCullough <Emacs-hacker2018@HIDDEN> writes:

> If lldb forces read_char to return Qnil or redisplay_internal to return,
> will Emacs crash immediately or survive long enough to save all buffers
> or better yet continue working?

(I'm going through old bug reports that unfortunately weren't resolved
at the time.)

It probably won't continue working, but it's hard to say.

> P.S.  If there exists a way to quickly and safely abort redisplay,
> perhaps there should be a hook invoked when repeated keyboard-quit
> has no effect, allowing experimentation into workarounds for this
> apparently intractable redisplay problem?

I wonder whether there's been any discussion about handling `C-g' during
redisplay.  For instance, if the user hits `C-g' six times in a row
during redisplay, that should be an indication that perhaps Emacs should
stop doing what it's doing -- and, for instance, switch on so-long-mode.

Eli, would it be possible to implement something like that?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Tue, 07 Jun 2022 14:01:01 +0000
Resent-Message-ID: <handler.45898.B45898.16546104249669 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Lars Ingebrigtsen <larsi@HIDDEN>
Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.16546104249669
          (code B ref 45898); Tue, 07 Jun 2022 14:01:01 +0000
Received: (at 45898) by debbugs.gnu.org; 7 Jun 2022 14:00:24 +0000
Received: from localhost ([127.0.0.1]:41023 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1nyZkt-0002Vr-GD
	for submit <at> debbugs.gnu.org; Tue, 07 Jun 2022 10:00:23 -0400
Received: from eggs.gnu.org ([209.51.188.92]:58994)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1nyZkq-0002Vc-3g
 for 45898 <at> debbugs.gnu.org; Tue, 07 Jun 2022 10:00:22 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:36172)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1nyZkk-0006L0-DT; Tue, 07 Jun 2022 10:00:14 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=1t2/yS9fSp/f4K9jHAwlyy2vfzyRJeuqBkmzsCRpSYA=; b=Y6L2/27yQUdq
 cY/HPQCM5AoZPuDOWh129DiDeDxSxXkLIoGYk7/B+NfemynQfC0GBOhQGD7IHumhBbQNoR5lo/NpO
 /EDzv9nan1M4EpIqvn4I35cvtQEzI+tNcSo73HpnsSRJ8OJd1cDFprOxj8vwzoXBDCqb9fstJM5P1
 MOwsgH+kiDzoth1fWfQlpuPnEUXN8y/ocKH6Kxb26I7zb7v6GzFH2da0kKUINmfwW6m2Tro81AuVa
 pDpuFu6CchEGWdWXMSYJlsxKti65xPihKes4/+GPaFJqApL4A+FTGuitCDfhFEttOzHf/s5EnENS5
 /JMKFYwQGil/XGm7xcN/TQ==;
Received: from [87.69.77.57] (port=2715 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1nyZkh-0006kk-Eg; Tue, 07 Jun 2022 10:00:14 -0400
Date: Tue, 07 Jun 2022 17:00:01 +0300
Message-Id: <83bkv47evy.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <87h74wh9x7.fsf@HIDDEN> (message from Lars Ingebrigtsen on Tue, 
 07 Jun 2022 15:37:08 +0200)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <87h74wh9x7.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Lars Ingebrigtsen <larsi@HIDDEN>
> Cc: 45898 <at> debbugs.gnu.org, Eli Zaretskii <eliz@HIDDEN>
> Date: Tue, 07 Jun 2022 15:37:08 +0200
> 
> Devon Sean McCullough <Emacs-hacker2018@HIDDEN> writes:
> 
> > If lldb forces read_char to return Qnil or redisplay_internal to return,
> > will Emacs crash immediately or survive long enough to save all buffers
> > or better yet continue working?
> 
> (I'm going through old bug reports that unfortunately weren't resolved
> at the time.)
> 
> It probably won't continue working, but it's hard to say.

I think it is more important to realize that Emacs will re-enter
redisplay right away.

> > P.S.  If there exists a way to quickly and safely abort redisplay,
> > perhaps there should be a hook invoked when repeated keyboard-quit
> > has no effect, allowing experimentation into workarounds for this
> > apparently intractable redisplay problem?
> 
> I wonder whether there's been any discussion about handling `C-g' during
> redisplay.  For instance, if the user hits `C-g' six times in a row
> during redisplay, that should be an indication that perhaps Emacs should
> stop doing what it's doing -- and, for instance, switch on so-long-mode.
> 
> Eli, would it be possible to implement something like that?

Not directly from redisplay, I think, no.

We could perhaps push an event onto the input queue that would do
something Lispy when processed, like turn on some mode.  But I think
the main problem here is that we don't necessarily read the keyboard
or do QUIT processing inside redisplay, at least the parts of it which
triggered this discussion.

We also don't currently have any mechanism to quickly exit redisplay,
so we will need to develop that somehow.

Basically, each time this issue comes up, I get the impression that it
is not quite clear what (not how, but what) people would like to
happen.  They want to unwedge Emacs, that much is clear, but what to
do after that to avoid immediately wedging it again?  Because even
so-long-mode is not a guarantee of getting a responsive Emacs.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Tue, 07 Jun 2022 15:55:02 +0000
Resent-Message-ID: <handler.45898.B45898.165461725221389 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Devon Sean McCullough <Emacs-hacker2018@HIDDEN>
Cc: 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165461725221389
          (code B ref 45898); Tue, 07 Jun 2022 15:55:02 +0000
Received: (at 45898) by debbugs.gnu.org; 7 Jun 2022 15:54:12 +0000
Received: from localhost ([127.0.0.1]:41202 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1nybX1-0005Yv-OL
	for submit <at> debbugs.gnu.org; Tue, 07 Jun 2022 11:54:11 -0400
Received: from eggs.gnu.org ([209.51.188.92]:33594)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1nybWx-0005Yf-Fy
 for 45898 <at> debbugs.gnu.org; Tue, 07 Jun 2022 11:54:11 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:38972)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1nybWr-0002D1-S3; Tue, 07 Jun 2022 11:54:01 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=M1X7b3nToQ0Fzldh5FhXOlcQUqyUFyps3Epl+teu0yE=; b=ewI4w0DdvA7d
 H3GhXgR5nPJMPCjR+YXEfNVJMvh0bKT8UBMHom0fbAYLWO8V6YH0jnDcE5MlUCzzTbQHogL06yT8F
 lryqni+ODfYi5hsH6dQahSgsvXV5Amm+slMHMLb/jmOoOOU0PsVkAN3agMOynB0l5RiPSuBSWMtho
 4Ft47GcJZteXVdkG78uoVcqtjvR1iYMnxTIdSyTi+iXVfoSvLCpIiuzL36u85obiDR8qy95Pn/o2M
 UGjfBc3XnxWlHMVniiIs+CCdibCJL8fLLh/xlkzXcsnzQYV9VD0+8dtHXkjyk36ge1JsIO145neNH
 fOjP0EPC4iLoN1KorFiXMQ==;
Received: from [87.69.77.57] (port=1720 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1nybWr-0003Ln-BZ; Tue, 07 Jun 2022 11:54:01 -0400
Date: Tue, 07 Jun 2022 18:53:52 +0300
Message-Id: <83a6ao79m7.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <b7f81bfc-bbfb-83bc-3660-d0b1474498f7@HIDDEN> (message from
 Devon Sean McCullough on Tue, 7 Jun 2022 10:03:26 -0400)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN>
 <b7f81bfc-bbfb-83bc-3660-d0b1474498f7@HIDDEN>
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> Date: Tue, 7 Jun 2022 10:03:26 -0400
> From: Devon Sean McCullough <Emacs-hacker2018@HIDDEN>
> 
> On 2022-06-07 10:00, Eli Zaretskii wrote:
> > so-long-mode is not a guarantee of getting a responsive Emacs.
> 
> It is if you bury the un-displayable buffer.

If we succeed in knowing which buffer that is, which isn't easy (and
it could be shown in more than one window, btw) and bury it, then
there's no need for so-long-mode, is there?




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Lars Ingebrigtsen <larsi@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Wed, 08 Jun 2022 11:48:01 +0000
Resent-Message-ID: <handler.45898.B45898.165468886111802 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165468886111802
          (code B ref 45898); Wed, 08 Jun 2022 11:48:01 +0000
Received: (at 45898) by debbugs.gnu.org; 8 Jun 2022 11:47:41 +0000
Received: from localhost ([127.0.0.1]:42631 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1nyuA1-00034F-6j
	for submit <at> debbugs.gnu.org; Wed, 08 Jun 2022 07:47:41 -0400
Received: from quimby.gnus.org ([95.216.78.240]:36268)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <larsi@HIDDEN>) id 1nyu9z-00033N-1Z
 for 45898 <at> debbugs.gnu.org; Wed, 08 Jun 2022 07:47:39 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org;
 s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date:
 References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:
 Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender:
 Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=GGbQssFkWqkTq55920gkkXvkYbFOSv98+J95lNoL+LY=; b=ELMIJUUsdKM29Z5V8jor8deUaz
 RwltV1MZjJbvBuF90fJcYc1gzAqKo1hkL+tMwhA2wKxMOrCp4jjWXeX8ZiMy18mYulKb1GOpqDHaF
 EAnIUJEf/zIdSAt0T7NBUA5a0aDb5Iu61biKNGJ/dBV/LwRSoOyAKAy/E+GJquJ+Fk30=;
Received: from [84.212.220.105] (helo=xo)
 by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.92) (envelope-from <larsi@HIDDEN>)
 id 1nyu9o-0005pM-PK; Wed, 08 Jun 2022 13:47:31 +0200
From: Lars Ingebrigtsen <larsi@HIDDEN>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN>
Date: Wed, 08 Jun 2022 13:47:28 +0200
In-Reply-To: <83bkv47evy.fsf@HIDDEN> (Eli Zaretskii's message of "Tue, 07 Jun
 2022 17:00:01 +0300")
Message-ID: <87k09rbcmn.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 @@CONTACT_ADDRESS@@ for details.
 Content preview: Eli Zaretskii <eliz@HIDDEN> writes: > We could perhaps push
 an event onto the input queue that would do > something Lispy when processed, 
 like turn on some mode. But I think > the main problem here is that we don't
 necessarily read the [...] 
 Content analysis details:   (-2.9 points, 5.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -1.0 ALL_TRUSTED            Passed through trusted hosts only via SMTP
 -1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%
 [score: 0.0000]
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Eli Zaretskii <eliz@HIDDEN> writes:

> We could perhaps push an event onto the input queue that would do
> something Lispy when processed, like turn on some mode.  But I think
> the main problem here is that we don't necessarily read the keyboard
> or do QUIT processing inside redisplay, at least the parts of it which
> triggered this discussion.
>
> We also don't currently have any mechanism to quickly exit redisplay,
> so we will need to develop that somehow.

Right.

> Basically, each time this issue comes up, I get the impression that it
> is not quite clear what (not how, but what) people would like to
> happen.  They want to unwedge Emacs, that much is clear, but what to
> do after that to avoid immediately wedging it again?  Because even
> so-long-mode is not a guarantee of getting a responsive Emacs.

It's better than nothing, though, and will unwedge Emacs in many
situations.

But if we had this facility (i.e., a way to make Emacs call some
function after `C-g'-ing a lot during redisplay), then we can start
experimenting -- and users can, too.  So I think having a
`break-during-redisplay-function' variable that specifies something to
be called in these situations would allow some possible progress in this
area.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Wed, 08 Jun 2022 14:10:02 +0000
Resent-Message-ID: <handler.45898.B45898.165469735010679 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Lars Ingebrigtsen <larsi@HIDDEN>
Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165469735010679
          (code B ref 45898); Wed, 08 Jun 2022 14:10:02 +0000
Received: (at 45898) by debbugs.gnu.org; 8 Jun 2022 14:09:10 +0000
Received: from localhost ([127.0.0.1]:43929 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1nywMv-0002mB-NW
	for submit <at> debbugs.gnu.org; Wed, 08 Jun 2022 10:09:09 -0400
Received: from eggs.gnu.org ([209.51.188.92]:39122)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1nywMu-0002ly-0c
 for 45898 <at> debbugs.gnu.org; Wed, 08 Jun 2022 10:09:08 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:33842)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1nywMo-0006zy-Bk; Wed, 08 Jun 2022 10:09:02 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=GFKXkXz7KHG6RIZ6Xop2SlHPI1vNwmtNsfHuBWXiMEg=; b=lkaHqxhp5xFF
 KlGTe7mvr8KD2pXAVIq4RvzWQjmVJFPLtOMjeD+Hj18Outi8ReG7MtcVXfhpXhjnVaiLMfVTRXF3e
 9bibddPp7RgXVRUbZBinqAUB/IltB77JZlWpy+6cNWmbeFo/bHvzrIs6c2E+dk33piSHIRBz9Lz0e
 iHI+dTlevwel/jS5SAoGvL4vEMNxPocaI4xtpxa4iOCbU1prpFIzyusJOQvwL9sC1Xn3s8gxBouVT
 k7LdWUEal2eOQ6zu1QQnzHI74r7xt6KHV0ZF1AvyHytMFr4oJNQgtEaGBacrFC/J/bnWLR+howuVb
 Kzwof6V9Skn4IeqV8Ygw9g==;
Received: from [87.69.77.57] (port=3939 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1nywMn-0005wg-QD; Wed, 08 Jun 2022 10:09:02 -0400
Date: Wed, 08 Jun 2022 17:08:56 +0300
Message-Id: <83a6an5jt3.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <87k09rbcmn.fsf@HIDDEN> (message from Lars Ingebrigtsen on Wed, 
 08 Jun 2022 13:47:28 +0200)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Lars Ingebrigtsen <larsi@HIDDEN>
> Cc: Emacs-hacker2018@HIDDEN,  45898 <at> debbugs.gnu.org
> Date: Wed, 08 Jun 2022 13:47:28 +0200
> 
> But if we had this facility (i.e., a way to make Emacs call some
> function after `C-g'-ing a lot during redisplay), then we can start
> experimenting -- and users can, too.  So I think having a
> `break-during-redisplay-function' variable that specifies something to
> be called in these situations would allow some possible progress in this
> area.

One problem with this is that we already have the "emergency exit"
feature, which is triggered by 2 or more C-g's.  This only works
reliably on TTY frames, but it's still a feature we don't want to
lose.

The other problem is that I don't know how to do this safely.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Wed, 08 Jun 2022 15:59:02 +0000
Resent-Message-ID: <handler.45898.B45898.165470390329318 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: larsi@HIDDEN
Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165470390329318
          (code B ref 45898); Wed, 08 Jun 2022 15:59:02 +0000
Received: (at 45898) by debbugs.gnu.org; 8 Jun 2022 15:58:23 +0000
Received: from localhost ([127.0.0.1]:44032 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1nyy4d-0007co-Cv
	for submit <at> debbugs.gnu.org; Wed, 08 Jun 2022 11:58:23 -0400
Received: from eggs.gnu.org ([209.51.188.92]:39070)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1nyy4b-0007cT-6Y
 for 45898 <at> debbugs.gnu.org; Wed, 08 Jun 2022 11:58:21 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:36554)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1nyy4V-0008OA-F1; Wed, 08 Jun 2022 11:58:15 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=Q+XtxrO2SWKas9gvute4TZUkTEindfFhWM99A2WPTRw=; b=CivhbzPOPMwN
 +cvdqqlQxbZl7qSUwGy6MQXKcKbuiqHadphL4zt+AH3GSRfCeLo+379eFAvRRWFCgdJjh9A0lew4z
 BH07RFHatZUBYqkEe8IcoCjshkbLWEcq8S2k3W1RIPOVjfTxbSKlHkQVBbl78+jftZpioM2QeFpu6
 6AFz8C4mknT7XwhsQ1n1iZ6GwE144ZaZdnUlsqh6lya5i1SzMMg4DZ6ZqoQnCWiJFTYzlVMWWp1fD
 Jww8BBjb8amBcUl5YgQqnu0vOd/QRSK1i7O5NAsZDslchmUIbi3elnRk0V0mMpz80mmjy/ZQsLz4Y
 isnMDsTVqIKvE8cTPU2X1Q==;
Received: from [87.69.77.57] (port=2640 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1nyy4U-0005aB-Pw; Wed, 08 Jun 2022 11:58:15 -0400
Date: Wed, 08 Jun 2022 18:58:08 +0300
Message-Id: <8335gf5er3.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <83a6an5jt3.fsf@HIDDEN> (message from Eli Zaretskii on Wed, 08
 Jun 2022 17:08:56 +0300)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN>
 <83a6an5jt3.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
> Date: Wed, 08 Jun 2022 17:08:56 +0300
> From: Eli Zaretskii <eliz@HIDDEN>
> 
> > From: Lars Ingebrigtsen <larsi@HIDDEN>
> > Cc: Emacs-hacker2018@HIDDEN,  45898 <at> debbugs.gnu.org
> > Date: Wed, 08 Jun 2022 13:47:28 +0200
> > 
> > But if we had this facility (i.e., a way to make Emacs call some
> > function after `C-g'-ing a lot during redisplay), then we can start
> > experimenting -- and users can, too.  So I think having a
> > `break-during-redisplay-function' variable that specifies something to
> > be called in these situations would allow some possible progress in this
> > area.
> 
> One problem with this is that we already have the "emergency exit"
> feature, which is triggered by 2 or more C-g's.  This only works
> reliably on TTY frames, but it's still a feature we don't want to
> lose.
> 
> The other problem is that I don't know how to do this safely.

Btw, this says "redisplay", but that's somewhat misleading: in many
cases I've seen, at least half of the time, and sometimes most of it,
is spent in the move_it_* functions, which are called both from the
display engine (to make layout decisions), and more-or-less directly
from Lisp, like via posn-at-point, vertical-motion, and scrolling
commands.  These are not "redisplay", strictly speaking, although they
reuse a lot of the display code.

So one challenge is to detect the "during redisplay" situation,
including the fact that it's "still the same redisplay cycle".

As for the C-g idea, I think a better and cleaner idea would be to use
atimers to detect signs of potentially a very long redisplay cycle,
and then do...something.  Not unlike what we already do with the
hourglass-cursor feature.

Other clever ideas are welcome.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Lars Ingebrigtsen <larsi@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Thu, 09 Jun 2022 10:26:02 +0000
Resent-Message-ID: <handler.45898.B45898.16547703346551 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.16547703346551
          (code B ref 45898); Thu, 09 Jun 2022 10:26:02 +0000
Received: (at 45898) by debbugs.gnu.org; 9 Jun 2022 10:25:34 +0000
Received: from localhost ([127.0.0.1]:45072 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1nzFM5-0001hb-Oe
	for submit <at> debbugs.gnu.org; Thu, 09 Jun 2022 06:25:33 -0400
Received: from quimby.gnus.org ([95.216.78.240]:47600)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <larsi@HIDDEN>) id 1nzFM3-0001hL-Dv
 for 45898 <at> debbugs.gnu.org; Thu, 09 Jun 2022 06:25:31 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org;
 s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date:
 References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:
 Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender:
 Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=dGKWhbZ9upOwzsLCXEIepkyn42fIOjt10FBMetbXKhU=; b=bnht/G8/IzIfziwIOJeE7Zwrib
 URA5eWnhN85vZ8OLJzHqvUfzJiOP0ss50An0IhNh1TkuC1aqNIKlv6/ADi1s/ZtlLsqrFe2AJKK4R
 dATSa/2zw+Qwqoi0zPR2TtleBj7J1Ix/yln7+2WCqKw0I9lBWOEFeIIfNV2Ilrfi0Zvw=;
Received: from [84.212.220.105] (helo=xo)
 by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.92) (envelope-from <larsi@HIDDEN>)
 id 1nzFLt-0006Ld-SY; Thu, 09 Jun 2022 12:25:24 +0200
From: Lars Ingebrigtsen <larsi@HIDDEN>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN>
 <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN>
Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAACBj
 SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAG1BMVEXCta2+sarFubG3
 q6WwpZ6topupnpfNwLj///+vw1mlAAAAAWJLR0QIht6VegAAAAd0SU1FB+YGCQoNFStl92UAAAF1
 SURBVDjLbVPJTQRBDLRNArYmAat5zBs1hLAhEAIJkP8DX+3pWdZaIabKt6sBGcZmMBQcQHBrWIMr
 M5fGoQ0bBBoeqhehBnm8iPh3mYDhan/QcGGwXwYIRK1EMYIyYBqR4dY2gnTtw4ixiN0EVufY3tHM
 gNV+EQ3mf+pDsOxLSK8cS2hfWm3lln/f2GWUu6tma3JS0pGVYJDG/mxoCfe7IYvcgP7yRBtnU5F2
 9Fpt+K3ie48cBBdOebE4XhyNYzy6XT1aYXMl7/NtPuYnRyXx4rL28P7z/fXgukvWyDznb6VCYXQi
 k59j4asjXnXPTXLeube0qVfXUFCC3a9AjvoPnohKB7yrvYQLsatr8mddaRQMj/0Z3A70TwTIry+I
 rvZdvf1QgukvoOsF9cEVWuhUmuaSKxUxlg4iinqk4U8who066x342tNZ5ocToyRgiSmIY05jWm1j
 9eT4lLq3R0YrKDNM2hhTd0cSXiXNmjFtNR4xmVP+ALMAQJrUEnDKAAAAJXRFWHRkYXRlOmNyZWF0
 ZQAyMDIyLTA2LTA5VDEwOjEzOjIxKzAwOjAwMY8jwwAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMi0w
 Ni0wOVQxMDoxMzoyMSswMDowMEDSm38AAAAASUVORK5CYII=
X-Now-Playing: Massimo's _invalidObject Series (var)_: "sel.moveBy(-i, -v; } }"
Date: Thu, 09 Jun 2022 12:25:19 +0200
In-Reply-To: <83a6an5jt3.fsf@HIDDEN> (Eli Zaretskii's message of "Wed, 08 Jun
 2022 17:08:56 +0300")
Message-ID: <87pmji8774.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 @@CONTACT_ADDRESS@@ for details.
 Content preview: Eli Zaretskii <eliz@HIDDEN> writes: > One problem with this
 is that we already have the "emergency exit" > feature, which is triggered
 by 2 or more C-g's. This only works > reliably on TTY frames, but it's still
 a feature we don't want [...] 
 Content analysis details:   (-2.9 points, 5.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -1.0 ALL_TRUSTED            Passed through trusted hosts only via SMTP
 -1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%
 [score: 0.0000]
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Eli Zaretskii <eliz@HIDDEN> writes:

> One problem with this is that we already have the "emergency exit"
> feature, which is triggered by 2 or more C-g's.  This only works
> reliably on TTY frames, but it's still a feature we don't want to
> lose.

I think that could be made to fit into the general feature, really.  The
"emergency exit" feature currently queries "Abort (and dump core)?" if I
remember correctly?  We could extend that to "Abort, enter
so-long-mode (or whatever)...?" etc.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Lars Ingebrigtsen <larsi@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Thu, 09 Jun 2022 10:31:01 +0000
Resent-Message-ID: <handler.45898.B45898.16547706237202 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.16547706237202
          (code B ref 45898); Thu, 09 Jun 2022 10:31:01 +0000
Received: (at 45898) by debbugs.gnu.org; 9 Jun 2022 10:30:23 +0000
Received: from localhost ([127.0.0.1]:45081 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1nzFQk-0001s5-LE
	for submit <at> debbugs.gnu.org; Thu, 09 Jun 2022 06:30:22 -0400
Received: from quimby.gnus.org ([95.216.78.240]:47626)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <larsi@HIDDEN>) id 1nzFQf-0001rj-G2
 for 45898 <at> debbugs.gnu.org; Thu, 09 Jun 2022 06:30:21 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org;
 s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date:
 References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:
 Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender:
 Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=kxdd9c1K017mpCiYHTI4Z4oZgZrKRwLAAqxrOtN2qvg=; b=U+BKuYfyN1TJOZFw+dBzE9+3jO
 MaMUpEPvpCWNoU04o4XkLp/m8DjnCeJPieo0ZSNmgIu1t0xYJlf+VUpNc+jxy5yW+W9yzI4p1uZ5F
 8VkJcRmvGCgz5/h+iw+FDUaE6eIS3LLRziBKn0Wmdsxlg/LtxUkVjqBCbTU1o7anuGOA=;
Received: from [84.212.220.105] (helo=xo)
 by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.92) (envelope-from <larsi@HIDDEN>)
 id 1nzFQV-0006O2-Te; Thu, 09 Jun 2022 12:30:10 +0200
From: Lars Ingebrigtsen <larsi@HIDDEN>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN>
 <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN>
 <8335gf5er3.fsf@HIDDEN>
Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAACBj
 SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAG1BMVEX22Cb20Q7Xszs0
 LjguWqbi0qSjSzv69t7///9X/eT6AAAAAWJLR0QIht6VegAAAAd0SU1FB+YGCQoZLrTAyRQAAAGz
 SURBVDjLddLBjpswEAZguhLtFbNK7piFB+gQvwBEvQOO72Hj3Lsi8/qdsQ2YZGspQfKnGfyPSZIf
 QoiM/rI3aDpeLfAvEcvKKvDS0mMHIwCsMEUwNK0rea54a5vONfsOSDRtfnatSo7WHpWFQqQMHaAZ
 CDqCSR0nYPBn0vchVHgQC3Rq4BwM1EpZIX4G6AhaUInIayllLouPAOcJWmAQpZ2gBLWBAg9C5CLP
 5doKFDRxjnSD/RC1XoDTb7PKtB7/B/gtUCuc/dQpIOwrnDhQMQx/EHH0N6sgrugIcH6FURsWniFE
 cNDjmfdxolNZGYNuHIDSuj/uwHWa4YRz/x6D28eHg/IVBlBGy2mDPHSyAJWMIdO+E8FVSniBC12n
 2kHioSawNgI3Q1cBBPUGaYC/DsoVEhPyIe3Z6wr05jU4WFlMAfhEM5kLDlVfQIAUHdTGTYRH6CEz
 M4nBx9WDLBdAv2Z70wPc+hUOASgdxbv1tX2GC4OurQyn+oWbcLyrLHfAJ7iAsrZYhhgBXZOtCk7I
 YNZW9In8NthLWT+9gypOyOA/n3SDL7jTDGT1Ag+4azS66uEfmeES2gHEP+0AAAAldEVYdGRhdGU6
 Y3JlYXRlADIwMjItMDYtMDlUMTA6MjU6NDYrMDA6MDCmuwKMAAAAJXRFWHRkYXRlOm1vZGlmeQAy
 MDIyLTA2LTA5VDEwOjI1OjQ2KzAwOjAw1+a6MAAAAABJRU5ErkJggg==
X-Now-Playing: The Cure's _Wild Mood Swings_: "Want"
Date: Thu, 09 Jun 2022 12:30:07 +0200
In-Reply-To: <8335gf5er3.fsf@HIDDEN> (Eli Zaretskii's message of "Wed, 08 Jun
 2022 18:58:08 +0300")
Message-ID: <87leu686z4.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 @@CONTACT_ADDRESS@@ for details.
 Content preview:  Eli Zaretskii <eliz@HIDDEN> writes: > So one challenge is
 to detect the "during redisplay" situation, > including the fact that it's
 "still the same redisplay cycle". Yes. This reminds me of something else
 I was thinking about a while back -- if we had something that could tell us
 "this redisplay cycle has lasted X seconds", then we could possibly have
 something to [...] 
 Content analysis details:   (-2.9 points, 5.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -1.0 ALL_TRUSTED            Passed through trusted hosts only via SMTP
 -1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%
 [score: 0.0000]
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Eli Zaretskii <eliz@HIDDEN> writes:

> So one challenge is to detect the "during redisplay" situation,
> including the fact that it's "still the same redisplay cycle".

Yes.  This reminds me of something else I was thinking about a while
back -- if we had something that could tell us "this redisplay cycle has
lasted X seconds", then we could possibly have something to react to
that.  I.e., if the redisplay cycle has gone on for more than 10
seconds, then switch on so-long-mode and see whether that helps...

> As for the C-g idea, I think a better and cleaner idea would be to use
> atimers to detect signs of potentially a very long redisplay cycle,
> and then do...something.  Not unlike what we already do with the
> hourglass-cursor feature.

Ah, yes, that's true -- we already almost have something here via the
hourglass thing.  Hm...  So we could call something from an atimer...
but do we have a way to (safely) signal to redisplay that it should stop
what it's doing?

> Other clever ideas are welcome.

Indeed.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Po Lu <luangruo@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Thu, 09 Jun 2022 10:41:01 +0000
Resent-Message-ID: <handler.45898.B45898.16547712288444 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Lars Ingebrigtsen <larsi@HIDDEN>
Cc: Eli Zaretskii <eliz@HIDDEN>, Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.16547712288444
          (code B ref 45898); Thu, 09 Jun 2022 10:41:01 +0000
Received: (at 45898) by debbugs.gnu.org; 9 Jun 2022 10:40:28 +0000
Received: from localhost ([127.0.0.1]:45110 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1nzFaV-0002C8-TQ
	for submit <at> debbugs.gnu.org; Thu, 09 Jun 2022 06:40:28 -0400
Received: from sonic302-21.consmr.mail.ne1.yahoo.com ([66.163.186.147]:35163)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <luangruo@HIDDEN>) id 1nzFaU-0002Br-AV
 for 45898 <at> debbugs.gnu.org; Thu, 09 Jun 2022 06:40:26 -0400
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048;
 t=1654771220; bh=pQOl1gDDKrWGhhRt+auX7mechrHmwjdtnbX/7qNTi+8=;
 h=From:To:Cc:Subject:References:Date:In-Reply-To:From:Subject:Reply-To;
 b=ghfKARoaVd0d2L5GfNeiyk4yJHXWlTyiOYesEa/UrzvJfR/Qy6kkW/CPcQO6HxPuC8twg8XSqn3reBlbHdSOZmwKgbzdH89iBJur+P88Z9IMp/WprPqgiPeWtNMcvWSMAb2MwLdMR6BjMjEMaFW1/5OLOO+DZwd5MMf9+VYENmkpP/csrm8Ak+SgsrFAi3iKEnSaqBVd701WjU92kl5fisIZJrGdztdxI390/XeTGzj4Xvy8rxUcMUkRkkIfwouvvo86Zjt5hQOwr1VX6mWvR7KKEY54pdQBQu9oS2v+9MaQ9x0eI4LfvE6aNP3YxAY4bNuL6iXFZbysV17iXy7z4g==
X-SONIC-DKIM-SIGN: v=1; a=rsa-sha256; c=relaxed/relaxed; d=yahoo.com; s=s2048;
 t=1654771220; bh=YMlCu6WLaOEdPWIEDEByZC0o/fPfGBBUakIgmfFm2CF=;
 h=X-Sonic-MF:From:To:Subject:Date:From:Subject;
 b=ni9ymcvD8QLVw6Ilv8zn4J/NxQGcwO0/hrDDdfX+t6X1FEJYBQmGPHwN+qhDPLrfUAxNMFsw8fQTCZnK1kpWsHJQ4s6t+1niSZB4fkup2L1NhrwDzTyzIYvqD3LlF9z9skMihgauM0ZSk++uulLNhHA8rRf8UXCCtNRn550iVG1GwF/jthaEP3HPeUHPwAKE5sQm+xtinCCwydKg3p78vw/2pflWMqX6ChMmVjE36K5zcI7a0FJsoeWvzGu+hYgor6URvk7gyUSrxtVSqQ1XQpYzvQ0EvaQnHIbX+TlZmLzsMkmGzLVH02tQ54Bk1H9YAFcugnQXNjgRuXpsDo0PsA==
X-YMail-OSG: 8D0c2IMVM1knBAknBUH4W3ptM3L84fUTqHSGGGOD1vTtsjrKNtav2appU0FISEs
 mcwpoFu0wwyQeKNQisX4JUpqXTJlox2Uhk9ivFeP3JCvwp.GJrXZXC5gwuClcbri79mHBJeUreL2
 XntBFuh7.GJ2EwBriSzW.aV3Qo7oAYAvih5Y.S0fhPuTILIfqQxaW8pWsrC2l7z8VPZ8B5eK9mba
 n7y5MpiIyQjO0MYVMG0hxfK.1EUFkIgIi_IspAlSXMO9QHnw_qH18IIXdtah3W15mjpkY3J3MrJl
 FAP.SDEtzfwEgIh0CK7_2C9DJbkVBQpaXEQWml0jvGnclhmLtCiHzmhqnPBrHFe_NUQ2xXWLygxl
 jrfBS9cjLbieHEDYijs8ToCQXrbcfDlIwIJ0wmBAT4Noc8s0sQwyhpiYl96X_kX1VRSD5tq4iUNm
 Se2MgaqPwghn8yrdVlDXmbBTfebyCo1LD8VszUk14D424Fyn5SVy7vyWyI6A3QICV7ny_OAcKvrB
 NzBi_TSiaLYzrgxO1IsoL89Hk8R_FxmjAHsdPBVxvLQfcdhnPjnW2xUtgW534yPOplhxBqWvOqFw
 2KdJdbdWUl1fpkg_beZ.3E3A0y1CQZLEnt.J1KeQadAtNdf9bNuNepaubSHr53bzzNyumqB7JwTm
 BNcdCCr2o48nZQqvdL6Deizo_K3dASm865hpDpzLs8ACI16mHMLby.DNy6rpmdIYlemsRsBe5gnL
 MJXPrfDCuecV3IbkvAfTNr.euSxVMTvPK7dQLzocvlx7M5hkg5J_4o7tJ2_yG2NKYDIR2f9CvTZH
 vqpO.tskEj7lffAdPZkVU4zIY08fXLEIoIxIgWQI4tSuF5cAqNN6Ggb4qFL3rD3wDQr2nxLFagPu
 S1YBM33vkWwLnCF2byEH.99hX9bfa9Mokf_v_LO6JbDngC_8YVv0lSRNUm6s5EGe6Dqp2Wt2NLic
 bncL3beZMQjyfQ01kDqUXk8z5gJjO_9_gnlU.iA8kp1vDH4R2DXIVi1MAq3T.04V_YCnrCAMzL.L
 NYvp_l7ctxlnk7XtDr_Xdomp.kYcJzr0PHs_oPgcoYRcgDnIoz855lgphVDtGuGLH5iyuhI.szfq
 YW6JoxPe7ULZrMBpWzyZ0NaR3wrCeue3X2ROJNTbL9hIFQnph6Kk8ddHHfVQ_wALrbPR2ziAiR0x
 tQ8JjswOi7Wt8JBkNBnIFHKiVhgKtSeS3ijxm6B70e7lwa9SfUhQY9_8KJOCF4Td_CyYTduK4U93
 aodjXOYEwTIds.v.4bwaTQggs4xd9KEi2YptKTTMhlOiC9QRGpjHN0vRz2rVJ_BpQ3rlK9PpcStV
 f.VblIYuzWNTNdL5qjDVS4K6cUPrtiNzqC7hIiG.VxctyNQ5B7ls9VXpIcMVn5A9tNWIp6Mk_A27
 OJXhsyqAsmmfPf_F0GNW8kB53n4AlNOFaysMmE4N9FCDgT73J_NxUWkhQWb97BJ7mclzujCdXm8d
 simIZlVTxEYFgizXw.80dXDedxB5YYRuJi8Y9f151ZiCxgy4GIR9iWmq6OmaCCTSVdx2_AUzHSLo
 hK13aQr0Ndz17VWnvfSAeMUVWQ8NJeLweHAFOuGt7yLDvJfegk3.V4EJeCzfzXOOfnCgFdEVs2tT
 IIBSieiRUmoKMNnfJcAnPrHpnM6NjaatWD5edaoW1qa9.6JWR0_ZSq89PT7CLGngHcH2W410ba32
 i4o_K54NANItPO2pT4q8imMeAMRIPnqz15s7WuLW.YqQ0VXV6xRLzO78U35V0yPFb8Sc5b4SoYfy
 NGaifsZqObY7LTkJOD6Ox6wbsf_J27ovEWTFm86VYc8lEBwgbrEbqpZrFYyTF9hDxh4DIdxE3uqH
 54b1hKHeUvdJ6r_v.sR3L3Gyr512opqdznGj0MfeGw_MroCDDm8Yq4XmAIYt.oJEropPBT0uWJf_
 WbyVWXdOiXvgCyrIE.exposXKCA1gTAxw0t7QdzuOkuqpJcLDJimWBZqS_1vH8OAYPA41PHrXRDt
 ZbY8nRfrlvE8cBGXBT40BPnahn26dN55M2RtOWkPJV29Okm8IdQpocOBPdo6jAXEsoz2H13ozWVq
 EaahAc3PyS3GXPbPhg7hJHw1OC8iofflkn.XvB7JmZzK.li4I5uOGirQp7TxOMuby.DJcCHqy6zb
 H7GtNHwrPPo5NaU8MPsAbCYm8ipJRVyO.Xi5x00HNheuRvaOV_RA1A7LpyJWUqFP6HCrPSF8MdFS
 0TT_5yOPa_B6K8ZpeHsqrPUn1QGzDKbNoW.h9ufIhZUeCqK_EjIpvv4Xuk1iP8g--
X-Sonic-MF: <luangruo@HIDDEN>
Received: from sonic.gate.mail.ne1.yahoo.com by
 sonic302.consmr.mail.ne1.yahoo.com with HTTP; Thu, 9 Jun 2022 10:40:20 +0000
Received: by hermes--canary-production-sg3-5f7658c994-bv4wk (Yahoo Inc. Hermes
 SMTP Server) with ESMTPA ID 6c6b7c8c3272bb3b39ef0d7a932cade6; 
 Thu, 09 Jun 2022 10:40:13 +0000 (UTC)
From: Po Lu <luangruo@HIDDEN>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN>
 <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN>
 <87pmji8774.fsf@HIDDEN>
Date: Thu, 09 Jun 2022 18:40:08 +0800
In-Reply-To: <87pmji8774.fsf@HIDDEN> (Lars Ingebrigtsen's message of "Thu,
 09 Jun 2022 12:25:19 +0200")
Message-ID: <87h74unmrb.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/28.0.91 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-Mailer: WebService/1.1.20280
 mail.backend.jedi.jws.acl:role.jedi.acl.token.atz.jws.hermes.yahoo
Content-Length: 795
X-Spam-Score: -0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Lars Ingebrigtsen <larsi@HIDDEN> writes:

>> One problem with this is that we already have the "emergency exit"
>> feature, which is triggered by 2 or more C-g's.  This only works
>> reliably on TTY frames, but it's still a feature we don't want to
>> lose.
>
> I think that could be made to fit into the general feature, really.  The
> "emergency exit" feature currently queries "Abort (and dump core)?" if I
> remember correctly?  We could extend that to "Abort, enter
> so-long-mode (or whatever)...?" etc.

"Emergency exit" only works on TTY frames (in fact, only if Emacs is
running on a single text terminal), and relies on operating system
support for suspending and resuming the process.  Nothing comparable
exists on X, and I'm not sure how starting `so-long-mode' would work
either.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Thu, 09 Jun 2022 10:42:01 +0000
Resent-Message-ID: <handler.45898.B45898.16547712998600 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Lars Ingebrigtsen <larsi@HIDDEN>
Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.16547712998600
          (code B ref 45898); Thu, 09 Jun 2022 10:42:01 +0000
Received: (at 45898) by debbugs.gnu.org; 9 Jun 2022 10:41:39 +0000
Received: from localhost ([127.0.0.1]:45115 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1nzFbf-0002Ee-6t
	for submit <at> debbugs.gnu.org; Thu, 09 Jun 2022 06:41:39 -0400
Received: from eggs.gnu.org ([209.51.188.92]:49658)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1nzFbd-0002EN-9g
 for 45898 <at> debbugs.gnu.org; Thu, 09 Jun 2022 06:41:37 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:51788)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1nzFbX-0004NI-Kv; Thu, 09 Jun 2022 06:41:31 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=GCU4ewOJWYHjuCpYIEfuXMxEcxKQmR7EF1BjUnsEPGU=; b=WJaVFgoOTbzE
 RlwBSQfqE0GJ6kUXT71b1ieRDQR5W/m3vyxw0z/fR8wtLLo1lH6vUdsVnG/1ciVjmFD86rg149OHw
 NP7HAd+LItLZiiV3m3Ew7uAvnY2dLmH2/3sDg/ox2bYNfw3c4AZj56R2GuAG6gV1AT9cEi05iDVvI
 hxfQrjX2H6dSC6mLkVykqFRZjb+aRkNHVEuHidb331RRszXGePcbXLtU83iMA31BBj3brOG/hsE0b
 x5QjXUuti0KwXsC7MElt4JeoKpTLz4Ze9mrjJMgd9UEjWDt5Tqf1dGaeZwJJ8CrIsqWeSBEU5nxH/
 SGR8hEJMCr7MBkns6kTpeA==;
Received: from [87.69.77.57] (port=4984 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1nzFbX-0006x2-3C; Thu, 09 Jun 2022 06:41:31 -0400
Date: Thu, 09 Jun 2022 13:41:27 +0300
Message-Id: <83tu8u2k6g.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <87pmji8774.fsf@HIDDEN> (message from Lars Ingebrigtsen on Thu, 
 09 Jun 2022 12:25:19 +0200)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN>
 <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN> <87pmji8774.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Lars Ingebrigtsen <larsi@HIDDEN>
> Cc: Emacs-hacker2018@HIDDEN,  45898 <at> debbugs.gnu.org
> Date: Thu, 09 Jun 2022 12:25:19 +0200
> 
> Eli Zaretskii <eliz@HIDDEN> writes:
> 
> > One problem with this is that we already have the "emergency exit"
> > feature, which is triggered by 2 or more C-g's.  This only works
> > reliably on TTY frames, but it's still a feature we don't want to
> > lose.
> 
> I think that could be made to fit into the general feature, really.  The
> "emergency exit" feature currently queries "Abort (and dump core)?" if I
> remember correctly?  We could extend that to "Abort, enter
> so-long-mode (or whatever)...?" etc.

That's called from a signal handler, where we cannot do anything
non-trivial, definitely not call Lisp.  We need some machinery that is
currently missing.

I also think that activating a mode is not TRT in these cases.  I'm
trying to think about something better, like mark the offending window
as "not for display" or somesuch.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Thu, 09 Jun 2022 10:46:01 +0000
Resent-Message-ID: <handler.45898.B45898.16547715139050 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Lars Ingebrigtsen <larsi@HIDDEN>
Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.16547715139050
          (code B ref 45898); Thu, 09 Jun 2022 10:46:01 +0000
Received: (at 45898) by debbugs.gnu.org; 9 Jun 2022 10:45:13 +0000
Received: from localhost ([127.0.0.1]:45124 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1nzFf7-0002Lt-1f
	for submit <at> debbugs.gnu.org; Thu, 09 Jun 2022 06:45:13 -0400
Received: from eggs.gnu.org ([209.51.188.92]:50112)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1nzFf4-0002Ld-Qn
 for 45898 <at> debbugs.gnu.org; Thu, 09 Jun 2022 06:45:11 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:51804)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1nzFez-0004hr-Er; Thu, 09 Jun 2022 06:45:05 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=Rwxbg106W0DpYOeAMO2VYgBYH04nNO/y/gd/uCLo1U8=; b=SUYtoFiyFcmx
 ZdSp4/GmnbmdPLk9fumdN+5a5Egr+mCoOBHfa4TXvS/fZuMgGzyCoN9y2pjenaJCctqYAASpjnfUH
 4RGgnPp58yfJ2HlxySr779Rge5uRqB7tS9c6y6d+u84UZDrBSDBUTX/5Uzcu3QqmoHXT/Oxzw1Z7g
 X0oxSMf7R1pQfmcSXLT1RNK9qGJXefrhcv//O8bu8zfrvMv+6TVtuEE63QFXf10i757/fRoVAXoVM
 hozuCXAq3th0ISGo+TeHHNwiRvs+B9Wq73NQZQ1V5FpVjg9w1afuEUfsMcERAZNW5I8Wp+UyKq6h4
 Duh9BIEFYOFYnEuInWTOvA==;
Received: from [87.69.77.57] (port=1226 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1nzFey-0002j5-Qx; Thu, 09 Jun 2022 06:45:05 -0400
Date: Thu, 09 Jun 2022 13:45:00 +0300
Message-Id: <83sfoe2k0j.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <87leu686z4.fsf@HIDDEN> (message from Lars Ingebrigtsen on Thu, 
 09 Jun 2022 12:30:07 +0200)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN>
 <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN>
 <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Lars Ingebrigtsen <larsi@HIDDEN>
> Cc: Emacs-hacker2018@HIDDEN,  45898 <at> debbugs.gnu.org
> Date: Thu, 09 Jun 2022 12:30:07 +0200
> 
> > As for the C-g idea, I think a better and cleaner idea would be to use
> > atimers to detect signs of potentially a very long redisplay cycle,
> > and then do...something.  Not unlike what we already do with the
> > hourglass-cursor feature.
> 
> Ah, yes, that's true -- we already almost have something here via the
> hourglass thing.  Hm...  So we could call something from an atimer...
> but do we have a way to (safely) signal to redisplay that it should stop
> what it's doing?

Atimers just set a flag, and the function is invoked the first time
that flag is tested, which is currently at some random time after
that, depending on what the code does.  So this will need to be
somehow improved to make sure we don't delay the check for too long
(or maybe it is already "good enough", I don't know).

Then there's a problem of determining which window is the problematic
one.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Lars Ingebrigtsen <larsi@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Thu, 09 Jun 2022 10:49:01 +0000
Resent-Message-ID: <handler.45898.B45898.16547717119600 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.16547717119600
          (code B ref 45898); Thu, 09 Jun 2022 10:49:01 +0000
Received: (at 45898) by debbugs.gnu.org; 9 Jun 2022 10:48:31 +0000
Received: from localhost ([127.0.0.1]:45132 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1nzFiI-0002Um-Os
	for submit <at> debbugs.gnu.org; Thu, 09 Jun 2022 06:48:30 -0400
Received: from quimby.gnus.org ([95.216.78.240]:47872)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <larsi@HIDDEN>) id 1nzFiH-0002UU-Cf
 for 45898 <at> debbugs.gnu.org; Thu, 09 Jun 2022 06:48:29 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org;
 s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date:
 References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:
 Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender:
 Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=kk16++dja6YucBfZWl3sXRO0acOBuNk0U6JMBpF8vj4=; b=FpsBjGG7B+ezoHFo+zlI0HLmne
 j9F5AdTjhMUWtWqPGc2Lu1HlcC4fCOmeMV6Mj86P6ivJKGSyMoqvvb1dO0EAOtI9zWSSu5/K29ung
 NlptDDzljSI4hySumWJ4ZiQid2BO5l5S+KTsdtrmzglNw0UOyAAamkN2p3W0difE2X/c=;
Received: from [84.212.220.105] (helo=xo)
 by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.92) (envelope-from <larsi@HIDDEN>)
 id 1nzFi7-0006b7-UZ; Thu, 09 Jun 2022 12:48:22 +0200
From: Lars Ingebrigtsen <larsi@HIDDEN>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN>
 <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN>
 <87pmji8774.fsf@HIDDEN> <83tu8u2k6g.fsf@HIDDEN>
Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAACBj
 SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAG1BMVEX22Cb20Q7Xszs0
 LjguWqbi0qSjSzv69t7///9X/eT6AAAAAWJLR0QIht6VegAAAAd0SU1FB+YGCQoZLrTAyRQAAAGz
 SURBVDjLddLBjpswEAZguhLtFbNK7piFB+gQvwBEvQOO72Hj3Lsi8/qdsQ2YZGspQfKnGfyPSZIf
 QoiM/rI3aDpeLfAvEcvKKvDS0mMHIwCsMEUwNK0rea54a5vONfsOSDRtfnatSo7WHpWFQqQMHaAZ
 CDqCSR0nYPBn0vchVHgQC3Rq4BwM1EpZIX4G6AhaUInIayllLouPAOcJWmAQpZ2gBLWBAg9C5CLP
 5doKFDRxjnSD/RC1XoDTb7PKtB7/B/gtUCuc/dQpIOwrnDhQMQx/EHH0N6sgrugIcH6FURsWniFE
 cNDjmfdxolNZGYNuHIDSuj/uwHWa4YRz/x6D28eHg/IVBlBGy2mDPHSyAJWMIdO+E8FVSniBC12n
 2kHioSawNgI3Q1cBBPUGaYC/DsoVEhPyIe3Z6wr05jU4WFlMAfhEM5kLDlVfQIAUHdTGTYRH6CEz
 M4nBx9WDLBdAv2Z70wPc+hUOASgdxbv1tX2GC4OurQyn+oWbcLyrLHfAJ7iAsrZYhhgBXZOtCk7I
 YNZW9In8NthLWT+9gypOyOA/n3SDL7jTDGT1Ag+4azS66uEfmeES2gHEP+0AAAAldEVYdGRhdGU6
 Y3JlYXRlADIwMjItMDYtMDlUMTA6MjU6NDYrMDA6MDCmuwKMAAAAJXRFWHRkYXRlOm1vZGlmeQAy
 MDIyLTA2LTA5VDEwOjI1OjQ2KzAwOjAw1+a6MAAAAABJRU5ErkJggg==
X-Now-Playing: The Cure's _Wild Mood Swings_: "Mint Car"
Date: Thu, 09 Jun 2022 12:48:18 +0200
In-Reply-To: <83tu8u2k6g.fsf@HIDDEN> (Eli Zaretskii's message of "Thu, 09 Jun
 2022 13:41:27 +0300")
Message-ID: <874k0u864t.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 @@CONTACT_ADDRESS@@ for details.
 Content preview: Eli Zaretskii <eliz@HIDDEN> writes: > I also think that
 activating
 a mode is not TRT in these cases. I'm > trying to think about something better,
 like mark the offending window > as "not for display" or somesuch. 
 Content analysis details:   (-2.9 points, 5.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -1.0 ALL_TRUSTED            Passed through trusted hosts only via SMTP
 -1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%
 [score: 0.0000]
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Eli Zaretskii <eliz@HIDDEN> writes:

> I also think that activating a mode is not TRT in these cases.  I'm
> trying to think about something better, like mark the offending window
> as "not for display" or somesuch.

Yes, that sounds promising.  But it has to be displayed ... a little
bit, at least.  :-)

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Lars Ingebrigtsen <larsi@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Thu, 09 Jun 2022 11:05:02 +0000
Resent-Message-ID: <handler.45898.B45898.165477266711767 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165477266711767
          (code B ref 45898); Thu, 09 Jun 2022 11:05:02 +0000
Received: (at 45898) by debbugs.gnu.org; 9 Jun 2022 11:04:27 +0000
Received: from localhost ([127.0.0.1]:45245 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1nzFxi-00033j-RZ
	for submit <at> debbugs.gnu.org; Thu, 09 Jun 2022 07:04:27 -0400
Received: from quimby.gnus.org ([95.216.78.240]:47976)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <larsi@HIDDEN>) id 1nzFxh-00033Q-6q
 for 45898 <at> debbugs.gnu.org; Thu, 09 Jun 2022 07:04:25 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org;
 s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date:
 References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:
 Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender:
 Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=UbYLdHnsNpoWWuf+ERjKYsMUiNDcuYI8OSlklbwGA6g=; b=oUXpQMlU/7OV//y66lp05sGXuU
 EGNBu/2CO/mn9nHCKK1SGEzrAY0l+UMx+/jyfmotW75szlNS3yNCpqp/uk5he6Ps0XEdA/rJhBUWc
 2QutYmmv6mGAWokMpY94JIagkvEW8d7cVGqC37RR8U5yKYhRMqQQjUFWCXBNo/t8oX0U=;
Received: from [84.212.220.105] (helo=xo)
 by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.92) (envelope-from <larsi@HIDDEN>)
 id 1nzFxX-0006mG-CK; Thu, 09 Jun 2022 13:04:17 +0200
From: Lars Ingebrigtsen <larsi@HIDDEN>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN>
 <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN>
 <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN>
 <83sfoe2k0j.fsf@HIDDEN>
Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAACBj
 SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAG1BMVEX22Cb20Q7Xszs0
 LjguWqbi0qSjSzv69t7///9X/eT6AAAAAWJLR0QIht6VegAAAAd0SU1FB+YGCQoZLrTAyRQAAAGz
 SURBVDjLddLBjpswEAZguhLtFbNK7piFB+gQvwBEvQOO72Hj3Lsi8/qdsQ2YZGspQfKnGfyPSZIf
 QoiM/rI3aDpeLfAvEcvKKvDS0mMHIwCsMEUwNK0rea54a5vONfsOSDRtfnatSo7WHpWFQqQMHaAZ
 CDqCSR0nYPBn0vchVHgQC3Rq4BwM1EpZIX4G6AhaUInIayllLouPAOcJWmAQpZ2gBLWBAg9C5CLP
 5doKFDRxjnSD/RC1XoDTb7PKtB7/B/gtUCuc/dQpIOwrnDhQMQx/EHH0N6sgrugIcH6FURsWniFE
 cNDjmfdxolNZGYNuHIDSuj/uwHWa4YRz/x6D28eHg/IVBlBGy2mDPHSyAJWMIdO+E8FVSniBC12n
 2kHioSawNgI3Q1cBBPUGaYC/DsoVEhPyIe3Z6wr05jU4WFlMAfhEM5kLDlVfQIAUHdTGTYRH6CEz
 M4nBx9WDLBdAv2Z70wPc+hUOASgdxbv1tX2GC4OurQyn+oWbcLyrLHfAJ7iAsrZYhhgBXZOtCk7I
 YNZW9In8NthLWT+9gypOyOA/n3SDL7jTDGT1Ag+4azS66uEfmeES2gHEP+0AAAAldEVYdGRhdGU6
 Y3JlYXRlADIwMjItMDYtMDlUMTA6MjU6NDYrMDA6MDCmuwKMAAAAJXRFWHRkYXRlOm1vZGlmeQAy
 MDIyLTA2LTA5VDEwOjI1OjQ2KzAwOjAw1+a6MAAAAABJRU5ErkJggg==
X-Now-Playing: The Cure's _Wild Mood Swings_: "Gone !"
Date: Thu, 09 Jun 2022 13:04:14 +0200
In-Reply-To: <83sfoe2k0j.fsf@HIDDEN> (Eli Zaretskii's message of "Thu, 09 Jun
 2022 13:45:00 +0300")
Message-ID: <87zgim6qtt.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 @@CONTACT_ADDRESS@@ for details.
 Content preview: Eli Zaretskii <eliz@HIDDEN> writes: > Then there's a problem
 of determining which window is the problematic > one. Idea: Perhaps our
 "redisplay
 is wedged" function should basically be "switch to a *warning* buffer". I.e., 
 if we can determine that Window Foo is the problem, then switch the buffer
 in that window to [...] 
 Content analysis details:   (-2.9 points, 5.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -1.0 ALL_TRUSTED            Passed through trusted hosts only via SMTP
 -1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%
 [score: 0.0000]
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Eli Zaretskii <eliz@HIDDEN> writes:

> Then there's a problem of determining which window is the problematic
> one.

Idea: Perhaps our "redisplay is wedged" function should basically be
"switch to a *warning* buffer".  I.e., if we can determine that Window
Foo is the problem, then switch the buffer in that window to a buffer
that reads "Redisplay was hanging in buffer *foo*".  If we can't
determine the window that's handing, then just switch all windows (in
all frames) to that warning buffer.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Thu, 09 Jun 2022 13:08:01 +0000
Resent-Message-ID: <handler.45898.B45898.165478003017176 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Lars Ingebrigtsen <larsi@HIDDEN>
Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165478003017176
          (code B ref 45898); Thu, 09 Jun 2022 13:08:01 +0000
Received: (at 45898) by debbugs.gnu.org; 9 Jun 2022 13:07:10 +0000
Received: from localhost ([127.0.0.1]:45393 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1nzHsU-0004Sx-Fh
	for submit <at> debbugs.gnu.org; Thu, 09 Jun 2022 09:07:10 -0400
Received: from eggs.gnu.org ([209.51.188.92]:54664)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1nzHsS-0004Sl-Nu
 for 45898 <at> debbugs.gnu.org; Thu, 09 Jun 2022 09:07:09 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:54998)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1nzHsN-0006h0-9v; Thu, 09 Jun 2022 09:07:03 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=CGIHsjeEne5mXLAl3bl9iEHtEFP2ppPb4+QTrpBkcHI=; b=r66Z5iCykitb
 UWI+F+Iew68wAjWERbQOqqog2Be9x9lHZocNpbpFfUZknewLk5djFoXo4JGuBZXlms9UNNaSgV7IW
 X39lGHbVH+y7C3+cXM+l3qzCaEubynA4ZIKxOUkC7q6fo+nT+qrpQPMZdU/vQk2kWU34pMrum0Dmf
 dJtx2Z7hdxIOaHn6TvSma0PrWJBc3CAcEqO0UyE3Bu1rkmbkU9Rmu97rmmRiFeZuIXLvK4JevN1VM
 OjHISsW64cPnma/ORHNvYYzF2ZdPcvH7OWt8B8+yVKRUpYGZhXInDYXo1HUMKsLABRinorwOTFmOW
 iY29gQOTaLYfjKyqtzYg6w==;
Received: from [87.69.77.57] (port=2284 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1nzHsH-0002O7-9F; Thu, 09 Jun 2022 09:07:03 -0400
Date: Thu, 09 Jun 2022 16:06:54 +0300
Message-Id: <83pmji2dg1.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <874k0u864t.fsf@HIDDEN> (message from Lars Ingebrigtsen on Thu, 
 09 Jun 2022 12:48:18 +0200)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN>
 <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN>
 <87pmji8774.fsf@HIDDEN> <83tu8u2k6g.fsf@HIDDEN>
 <874k0u864t.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Lars Ingebrigtsen <larsi@HIDDEN>
> Cc: Emacs-hacker2018@HIDDEN,  45898 <at> debbugs.gnu.org
> Date: Thu, 09 Jun 2022 12:48:18 +0200
> 
> Eli Zaretskii <eliz@HIDDEN> writes:
> 
> > I also think that activating a mode is not TRT in these cases.  I'm
> > trying to think about something better, like mark the offending window
> > as "not for display" or somesuch.
> 
> Yes, that sounds promising.  But it has to be displayed ... a little
> bit, at least.  :-)

Why?




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Thu, 09 Jun 2022 13:10:02 +0000
Resent-Message-ID: <handler.45898.B45898.165478016017450 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Lars Ingebrigtsen <larsi@HIDDEN>
Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165478016017450
          (code B ref 45898); Thu, 09 Jun 2022 13:10:02 +0000
Received: (at 45898) by debbugs.gnu.org; 9 Jun 2022 13:09:20 +0000
Received: from localhost ([127.0.0.1]:45407 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1nzHua-0004XO-Cq
	for submit <at> debbugs.gnu.org; Thu, 09 Jun 2022 09:09:20 -0400
Received: from eggs.gnu.org ([209.51.188.92]:55038)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1nzHuZ-0004X8-Gv
 for 45898 <at> debbugs.gnu.org; Thu, 09 Jun 2022 09:09:19 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:55036)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1nzHuU-0006w0-8S; Thu, 09 Jun 2022 09:09:14 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=2kWOhcAG1MWbk4GGiSEzN2R3fhviVWAUqpWslwT7uPI=; b=cg0tw1lfDLK6
 vGR31YWryct9SWYOLT4gbfhvC1F8CE1C+ceoVb3M0w9HGrWmVN9wCnFRUhYEh9ulD6gE/JZ6RsjW6
 zzF38Lk0AtJwzq/ceQ94+kKjhfmTB9rhvrzXcuBmrssl+6jYG+YfNTPzh83Z166QN5MnHuC66S4sT
 KHKy7Yf/j6dligDXP4HhNzz+QUVhpgG5IQQg76dv60nE7d9VOLQhLktZ5jiKyUKwxgS9Mj2gszt2f
 9zTKgbNxJkMYp6P9+RWVQG07V4jeHcVq6ynYOhAc8Os0JDjYktbVo5XU0x0+uZNhjx6oYV+rQ8605
 74nqZVjZlRXBPORqElfkPQ==;
Received: from [87.69.77.57] (port=2422 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1nzHuT-00018R-LT; Thu, 09 Jun 2022 09:09:14 -0400
Date: Thu, 09 Jun 2022 16:09:10 +0300
Message-Id: <83mtem2dc9.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <87zgim6qtt.fsf@HIDDEN> (message from Lars Ingebrigtsen on Thu, 
 09 Jun 2022 13:04:14 +0200)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN>
 <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN>
 <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN>
 <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Lars Ingebrigtsen <larsi@HIDDEN>
> Cc: Emacs-hacker2018@HIDDEN,  45898 <at> debbugs.gnu.org
> Date: Thu, 09 Jun 2022 13:04:14 +0200
> 
> Eli Zaretskii <eliz@HIDDEN> writes:
> 
> > Then there's a problem of determining which window is the problematic
> > one.
> 
> Idea: Perhaps our "redisplay is wedged" function should basically be
> "switch to a *warning* buffer".  I.e., if we can determine that Window
> Foo is the problem, then switch the buffer in that window to a buffer
> that reads "Redisplay was hanging in buffer *foo*".  If we can't
> determine the window that's handing, then just switch all windows (in
> all frames) to that warning buffer.

That might be something to do after ending _this_ redisplay cycle, but
we first need to end _this_ cycle, and end it in a way that Emacs
won't immediately re-enter redisplay and try to redraw that same
window.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Lars Ingebrigtsen <larsi@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Thu, 09 Jun 2022 13:37:01 +0000
Resent-Message-ID: <handler.45898.B45898.16547818184537 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.16547818184537
          (code B ref 45898); Thu, 09 Jun 2022 13:37:01 +0000
Received: (at 45898) by debbugs.gnu.org; 9 Jun 2022 13:36:58 +0000
Received: from localhost ([127.0.0.1]:45511 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1nzILK-0001B6-A3
	for submit <at> debbugs.gnu.org; Thu, 09 Jun 2022 09:36:58 -0400
Received: from quimby.gnus.org ([95.216.78.240]:49724)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <larsi@HIDDEN>) id 1nzILI-0001As-Uq
 for 45898 <at> debbugs.gnu.org; Thu, 09 Jun 2022 09:36:57 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org;
 s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date:
 References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:
 Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender:
 Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=VeLIA0h36zkrGQrMTZkm0liLey63AnVehxJ+eJMWeoA=; b=Ne6/99jXkVia4VjRdhQ+UGIcKF
 u0BZlIJXMqBQrTo9u3QggZ755yBgB+XGlOSFpiX5JFrBLi4ERV7oAoo7OPbsXhfyMYX4iAOMg5GOp
 toxbOtNi/+ytcJGgGD9KZfbDLlMMY1mb16zOb0BMFLdhnTLI6P8eCwC24uUEFFdRXblk=;
Received: from [84.212.220.105] (helo=xo)
 by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.92) (envelope-from <larsi@HIDDEN>)
 id 1nzIL9-0000IC-PU; Thu, 09 Jun 2022 15:36:50 +0200
From: Lars Ingebrigtsen <larsi@HIDDEN>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN>
 <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN>
 <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN>
 <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN>
 <83mtem2dc9.fsf@HIDDEN>
Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAACBj
 SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAG1BMVEW2qKv9/f3Pz9GR
 bXoKBQsoHC9EOFhXU4n///9t9cd0AAAAAWJLR0QIht6VegAAAAd0SU1FB+YGCQ0jORf1hC8AAAF/
 SURBVDjLfdTBcsIgEAbgVGf02qQvkHro2RqN104L9toZWXLtDLK5OqbC63chUQHT7jFffiALJMvy
 0SqyxX+wcJX1Na2q1wsULK73CABA3ANIbK1FwhTQg+4lAB/oAe4BtRuLJAEDAnxEJKCBwX2CZtDL
 NZcpNDSFyp54kshZa6w9FY/gJxEhdEe7zIsNdwsTbzdolpNJWZSaI2IIoumyWtWrtdQS0EM+gNHT
 s3zeSM04hICtKq0qBPo+honTqrJmRU1OoetKa5Z9IARVVXOrp4iuLxFsEU0zMwgYr0pZiWeJ9ix1
 DNRbRAIK6ATofZqBAiCjD3Sgwbc9AYNyAEiAWi76HRQfEXDQ/B7ayg5HJIZDc5zb7ShUNY4nXvAK
 GML3jA6vP+9SdCGoGqVFwXhViyjhNggtwcMC9usA3Ce3hi7OV6nlIQFl3Y3aCz4MVfYgWH+bdrSA
 EPqnQ8VwvZpMxEBjX+TzBn70wx9wq90Vfhgb9gLc1qsrFCN/GQ9j9Qu61v+elm2MfwAAACV0RVh0
 ZGF0ZTpjcmVhdGUAMjAyMi0wNi0wOVQxMzozNTo1NyswMDowMLAiuqgAAAAldEVYdGRhdGU6bW9k
 aWZ5ADIwMjItMDYtMDlUMTM6MzU6NTcrMDA6MDDBfwIUAAAAAElFTkSuQmCC
X-Now-Playing: Prince's _Sign 'O' the Times (7): Live in Utrecht II_: "Let's
 Go Crazy (Live In Utrecht)"
Date: Thu, 09 Jun 2022 15:36:45 +0200
In-Reply-To: <83mtem2dc9.fsf@HIDDEN> (Eli Zaretskii's message of "Thu, 09 Jun
 2022 16:09:10 +0300")
Message-ID: <87y1y63qmq.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 @@CONTACT_ADDRESS@@ for details.
 Content preview: Eli Zaretskii <eliz@HIDDEN> writes: > That might be
 something
 to do after ending _this_ redisplay cycle, but > we first need to end _this_
 cycle, Yes. 
 Content analysis details:   (-2.9 points, 5.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -1.0 ALL_TRUSTED            Passed through trusted hosts only via SMTP
 -1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%
 [score: 0.0000]
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Eli Zaretskii <eliz@HIDDEN> writes:

> That might be something to do after ending _this_ redisplay cycle, but
> we first need to end _this_ cycle,

Yes.

> and end it in a way that Emacs won't immediately re-enter redisplay
> and try to redraw that same window.

But if we switch to a different buffer in that window, then redrawing
that window should be fine.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Thu, 09 Jun 2022 15:57:02 +0000
Resent-Message-ID: <handler.45898.B45898.16547902036981 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Lars Ingebrigtsen <larsi@HIDDEN>
Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.16547902036981
          (code B ref 45898); Thu, 09 Jun 2022 15:57:02 +0000
Received: (at 45898) by debbugs.gnu.org; 9 Jun 2022 15:56:43 +0000
Received: from localhost ([127.0.0.1]:47470 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1nzKWZ-0001oX-CA
	for submit <at> debbugs.gnu.org; Thu, 09 Jun 2022 11:56:43 -0400
Received: from eggs.gnu.org ([209.51.188.92]:49972)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1nzKWX-0001oK-J4
 for 45898 <at> debbugs.gnu.org; Thu, 09 Jun 2022 11:56:42 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:59668)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1nzKWP-0006Ms-Vq; Thu, 09 Jun 2022 11:56:33 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=yR+s9NkuxUW6W/dvZqbvz+knwQJOkXfY/661RpcrM1Y=; b=h89YhlIF5JMP
 Zi9AiIo058Nd4DIrCBEOU4ofNO3oka+JaqyCVyd5yFfDgPEaoj1raNQH3ZAuFFQMY1fuasybgNnwx
 el4a2mP61jjh8FSsJP04VWzZ8giwvLr+K19KOLwRayTmhHvXG0U+UP32V+BpSLs5D5dJykTAmfXQ+
 9/LoMBm2mKEbH7uDvhtZzBY496MWFzG+L9a1na+XQ9AW6tB1moFGz+8dM4plhFV8dA/UHghCHyyfT
 rOvUaJ566nPLNt0+ZrQF03ywJffdEweGkxNDuqwgbxmWOr2QupsggnW8sk6mK/7lLuEWJDx7uD6/R
 l8l+j8pxeudsGiPl2SFc9w==;
Received: from [87.69.77.57] (port=4717 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1nzKWN-0001hL-U5; Thu, 09 Jun 2022 11:56:32 -0400
Date: Thu, 09 Jun 2022 18:56:29 +0300
Message-Id: <83h74t3k5u.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <87y1y63qmq.fsf@HIDDEN> (message from Lars Ingebrigtsen on Thu, 
 09 Jun 2022 15:36:45 +0200)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN>
 <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN>
 <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN>
 <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN>
 <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Lars Ingebrigtsen <larsi@HIDDEN>
> Cc: Emacs-hacker2018@HIDDEN,  45898 <at> debbugs.gnu.org
> Date: Thu, 09 Jun 2022 15:36:45 +0200
> 
> > and end it in a way that Emacs won't immediately re-enter redisplay
> > and try to redraw that same window.
> 
> But if we switch to a different buffer in that window, then redrawing
> that window should be fine.

I don't think it's a very good idea to switch buffers behind user's
back.  It is better to tell the user there's a problem and let them do
whatever is right for them.

But yes, we could also consider something like that -- if we find a
safe way of doing it.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Lars Ingebrigtsen <larsi@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Fri, 10 Jun 2022 09:03:01 +0000
Resent-Message-ID: <handler.45898.B45898.165485173923205 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165485173923205
          (code B ref 45898); Fri, 10 Jun 2022 09:03:01 +0000
Received: (at 45898) by debbugs.gnu.org; 10 Jun 2022 09:02:19 +0000
Received: from localhost ([127.0.0.1]:48696 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1nzaX5-00061w-1S
	for submit <at> debbugs.gnu.org; Fri, 10 Jun 2022 05:02:19 -0400
Received: from quimby.gnus.org ([95.216.78.240]:60174)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <larsi@HIDDEN>) id 1nzaX3-0005v1-48
 for 45898 <at> debbugs.gnu.org; Fri, 10 Jun 2022 05:02:17 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org;
 s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date:
 References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:
 Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender:
 Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=SFanA4rV3BBci3KhKK+c+aUzKLCrFaIjKMg44/iBwbU=; b=EosGSbIU6pz6aQSSSXeOHJkKho
 ADl/3FsuxlTdJmaRWaC8DNfkXe6T64gW+DhnzPnR+VqkS2e6Tfu5+Vl/co6/Y1CmiUe53fjeOfw9M
 O/c5F7LQ3DpNplF+7UQqsUvTzEuehgVhJ6AvP06hU+iWcjWEcvHy3ezDNe/EypXhCXJs=;
Received: from [84.212.220.105] (helo=xo)
 by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.92) (envelope-from <larsi@HIDDEN>)
 id 1nzaWt-0005RO-NK; Fri, 10 Jun 2022 11:02:10 +0200
From: Lars Ingebrigtsen <larsi@HIDDEN>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN>
 <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN>
 <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN>
 <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN>
 <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN>
 <83h74t3k5u.fsf@HIDDEN>
X-Now-Playing: Liturgy's _Origin of the Alimonies_: "OIOION's Birth"
Date: Fri, 10 Jun 2022 11:02:06 +0200
In-Reply-To: <83h74t3k5u.fsf@HIDDEN> (Eli Zaretskii's message of "Thu, 09 Jun
 2022 18:56:29 +0300")
Message-ID: <87tu8sx569.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 @@CONTACT_ADDRESS@@ for details.
 Content preview:  Eli Zaretskii <eliz@HIDDEN> writes: > I don't think it's
 a very good idea to switch buffers behind user's > back. It is better to tell
 the user there's a problem and let them do > whatever is right for them.
 > > But yes, we could also c [...] 
 Content analysis details:   (-2.9 points, 5.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -1.0 ALL_TRUSTED            Passed through trusted hosts only via SMTP
 -1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%
 [score: 0.0000]
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Eli Zaretskii <eliz@HIDDEN> writes:

> I don't think it's a very good idea to switch buffers behind user's
> back.  It is better to tell the user there's a problem and let them do
> whatever is right for them.
>
> But yes, we could also consider something like that -- if we find a
> safe way of doing it.

The scenario here is that the user is hitting `C-g' repeatedly while in
redisplay, so it's not exactly behind the user's back...

Finding a safe way to interrupt redisplay is the problem, though.

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Sun, 12 Jun 2022 09:50:01 +0000
Resent-Message-ID: <handler.45898.B45898.16550273551027 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Lars Ingebrigtsen <larsi@HIDDEN>
Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.16550273551027
          (code B ref 45898); Sun, 12 Jun 2022 09:50:01 +0000
Received: (at 45898) by debbugs.gnu.org; 12 Jun 2022 09:49:15 +0000
Received: from localhost ([127.0.0.1]:54761 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o0KDb-0000GV-G1
	for submit <at> debbugs.gnu.org; Sun, 12 Jun 2022 05:49:15 -0400
Received: from eggs.gnu.org ([209.51.188.92]:38590)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1o0KDY-0000GF-SH
 for 45898 <at> debbugs.gnu.org; Sun, 12 Jun 2022 05:49:13 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:44060)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o0KDT-00040I-2z; Sun, 12 Jun 2022 05:49:07 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=bkA51qYoeJ1wt0Al8OQm0qakqNzX2i8OuM18k6rQG2w=; b=bBr6h4h8Cx/r
 o9jrW7WkSgCNTjKacBpC8p7pnWrBX6diwgdsREtfPykpwL2Kf2bHeSsaZ8vpSbgxogbHPLGkmJLgt
 jxNfNZuzC4jPdmKp2i573qsNmVNO24TZChB5BxUZpy0xupbNzw5OX1xQwgUnsJjLOCXCBhDyq1FKR
 FsMTrsPoRbN1DaWp835k++NIozxwOB7EYwJ7vnQSmhTM8jm1C2VNXfG91cxiVDQcT+YZjib7xD18i
 +JxTW3VKf+izNuH4d3A60s4TbefgjjpopHgy8Ssn0V77Wvc8K4HtmPNxNRTFy860O8ytJoFXe4BZw
 xk8Hw96JJ0tkJNqmEF1++g==;
Received: from [87.69.77.57] (port=4479 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o0KDS-000340-1E; Sun, 12 Jun 2022 05:49:06 -0400
Date: Sun, 12 Jun 2022 12:48:50 +0300
Message-Id: <83v8t6us8t.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <87tu8sx569.fsf@HIDDEN> (message from Lars Ingebrigtsen on Fri, 
 10 Jun 2022 11:02:06 +0200)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN>
 <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN>
 <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN>
 <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN>
 <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN>
 <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Lars Ingebrigtsen <larsi@HIDDEN>
> Date: Fri, 10 Jun 2022 11:02:06 +0200
> Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
> 
> Eli Zaretskii <eliz@HIDDEN> writes:
> 
> > I don't think it's a very good idea to switch buffers behind user's
> > back.  It is better to tell the user there's a problem and let them do
> > whatever is right for them.
> >
> > But yes, we could also consider something like that -- if we find a
> > safe way of doing it.
> 
> The scenario here is that the user is hitting `C-g' repeatedly while in
> redisplay, so it's not exactly behind the user's back...

I prefer a solution whereby Emacs discovers the problem automatically,
leaving C-g for "other circumstances".  After all, how hard can it be
to figure out that some buffer or window takes too long to redisplay?

> Finding a safe way to interrupt redisplay is the problem, though.

I have an idea and will work on it soon.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Lars Ingebrigtsen <larsi@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Sun, 12 Jun 2022 10:24:02 +0000
Resent-Message-ID: <handler.45898.B45898.16550293974441 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.16550293974441
          (code B ref 45898); Sun, 12 Jun 2022 10:24:02 +0000
Received: (at 45898) by debbugs.gnu.org; 12 Jun 2022 10:23:17 +0000
Received: from localhost ([127.0.0.1]:54824 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o0KkW-00019Y-K5
	for submit <at> debbugs.gnu.org; Sun, 12 Jun 2022 06:23:16 -0400
Received: from quimby.gnus.org ([95.216.78.240]:53264)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <larsi@HIDDEN>) id 1o0KkV-00019F-1S
 for 45898 <at> debbugs.gnu.org; Sun, 12 Jun 2022 06:23:15 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org;
 s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date:
 References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:
 Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender:
 Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=3+dw2uUPUiIGi84+ufJRra97p6i8xqajD7ksko/8+XQ=; b=uPFRZwlvzds9iz5PxA+7rBMjK/
 r7VPO7lUSuQ8d19cb8VmPkDc0WIX/Q7yu/6AXjmIAdiGRi9+qP7NhmHWbe2oX1IHzpQ2ii64/PSAx
 K4kmrbd0LFUXW0n97dEWjonLVNNfeNEETcPNZdVhY6692czUgSzCHUc5J3OgzkfqX7P0=;
Received: from [84.212.220.105] (helo=xo)
 by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.92) (envelope-from <larsi@HIDDEN>)
 id 1o0KkL-0003ad-C6; Sun, 12 Jun 2022 12:23:07 +0200
From: Lars Ingebrigtsen <larsi@HIDDEN>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN>
 <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN>
 <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN>
 <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN>
 <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN>
 <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN>
Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAACBj
 SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAElBMVEUDAgPEq6hjNz+f
 X2IwHSH///93Pa1EAAAAAWJLR0QF+G/pxwAAAAd0SU1FB+YGCQoAHgkZUKAAAAHASURBVDjLtZRR
 musgCIWZ1A0Q7gIadANKF5Ax2f+a5kBsk3bm9fK1afQXxAOWvjhrbsz0aQ7M/gDffNgvsAygYWV3
 63ij3GImN4M1G0OA8btUePl3/gTukN3pCRauM9YJi12mA0gznlm4adcLeL1ps34OTrCrT/f4BEDm
 v86WcBT6j7a+vawnOHdFVpkfZ0a+DA8yk1RZXj6pF4JmjZgfAAaAkxWiiYWgsgDcJwPYmmJhoZvk
 PSoKcGOAZKFuNqnyBBsqdKcA9qx0gCyVywB2BZvHIKti1VrEseoA4aVRghuym93Fenbwj7bm2TCQ
 +GIR1QCQX4/+ErUsWIHmoNZLLzoTdrBcUL/gmiHMDqC7A2+SsgXQkCeKjF3NZ1YE1aFq2qGdIie0
 kOaCjrrKrT5Gby8y+YpLhbLn2wDgAnVfNgWYtYpubwB1RAhRz8m1WvuzeFtolP0iLGzUWMuBJjS9
 6wWQvYKuwDqADKAuuxc4SELkBRn7VVjkuJ1zQWejJ9gL5WCzY8yC/khLbHLcXzuOZt4+3jUvoOM6
 EJXYQ24h7QDRp7z6f4Tc6/wGqPssCiJJ3wFCNNeOyyeQtX87eAzwAwHMafABuKD0AAAAJXRFWHRk
 YXRlOmNyZWF0ZQAyMDIyLTA2LTA5VDEwOjAwOjMwKzAwOjAwcetMKgAAACV0RVh0ZGF0ZTptb2Rp
 ZnkAMjAyMi0wNi0wOVQxMDowMDozMCswMDowMAC29JYAAAAASUVORK5CYII=
X-Now-Playing: Everything But The Girl's _Walking Wounded_: "Before Today"
Date: Sun, 12 Jun 2022 12:23:03 +0200
In-Reply-To: <83v8t6us8t.fsf@HIDDEN> (Eli Zaretskii's message of "Sun, 12 Jun
 2022 12:48:50 +0300")
Message-ID: <87zgiinptk.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 @@CONTACT_ADDRESS@@ for details.
 Content preview:  Eli Zaretskii <eliz@HIDDEN> writes: > I prefer a solution
 whereby Emacs discovers the problem automatically, > leaving C-g for "other
 circumstances". After all, how hard can it be > to figure out that some buffer
 or window takes too lon [...] 
 Content analysis details:   (-2.9 points, 5.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -1.0 ALL_TRUSTED            Passed through trusted hosts only via SMTP
 -1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%
 [score: 0.0000]
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Eli Zaretskii <eliz@HIDDEN> writes:

> I prefer a solution whereby Emacs discovers the problem automatically,
> leaving C-g for "other circumstances".  After all, how hard can it be
> to figure out that some buffer or window takes too long to redisplay?

Yes, if that's feasible, it would definitely be preferable. 

>> Finding a safe way to interrupt redisplay is the problem, though.
>
> I have an idea and will work on it soon.

Great!

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Sun, 12 Jun 2022 14:25:01 +0000
Resent-Message-ID: <handler.45898.B45898.16550438567091 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Lars Ingebrigtsen <larsi@HIDDEN>
Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.16550438567091
          (code B ref 45898); Sun, 12 Jun 2022 14:25:01 +0000
Received: (at 45898) by debbugs.gnu.org; 12 Jun 2022 14:24:16 +0000
Received: from localhost ([127.0.0.1]:56338 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o0OVj-0001qG-S0
	for submit <at> debbugs.gnu.org; Sun, 12 Jun 2022 10:24:16 -0400
Received: from eggs.gnu.org ([209.51.188.92]:36706)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1o0OVg-0001q1-7X
 for 45898 <at> debbugs.gnu.org; Sun, 12 Jun 2022 10:24:14 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:47412)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o0OVa-0001jA-EY; Sun, 12 Jun 2022 10:24:06 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=Ix1wmgLtCkLGlp68ObV4p4X4W2hgTQgJPVxyyzkAqig=; b=iGwEGehvWSNt
 r3fQE/OqUnZ5HjFQzTUqsTxAGouFC3BKcTxZg619g6Vt+ftrC/PlPyzZOBjAsgn0eSESdX0JuPT61
 UHKs9I8SaB4/J4e3z3EoLlUttPwQj1yUF/FOhs3OD1LsMjCaQXr/ODLuYpkPaKN7wnb8hxVYRZr2r
 fHfvGiR8fV1m0nSMleNRy618VC/j/uMhKieHiPRsakdPnCYhopCwkzkjUXb/rB5VYJ4B44qOVOoCn
 kunXRP4tYVMcptO7RbJJevTpnI8fr4BxPRvVPI+cQ2Q0iyYRXF8faV/ztQ9g8vTLPyOlftX8qvXfY
 Nc/DWy9KAwvb3W0AP+5HVA==;
Received: from [87.69.77.57] (port=1473 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o0OVZ-00061F-Sn; Sun, 12 Jun 2022 10:24:06 -0400
Date: Sun, 12 Jun 2022 17:23:50 +0300
Message-Id: <83mteiufih.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <87zgiinptk.fsf@HIDDEN> (message from Lars Ingebrigtsen on Sun, 
 12 Jun 2022 12:23:03 +0200)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN>
 <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN>
 <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN>
 <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN>
 <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN>
 <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Lars Ingebrigtsen <larsi@HIDDEN>
> Cc: Emacs-hacker2018@HIDDEN,  45898 <at> debbugs.gnu.org
> Date: Sun, 12 Jun 2022 12:23:03 +0200
> 
> >> Finding a safe way to interrupt redisplay is the problem, though.
> >
> > I have an idea and will work on it soon.
> 
> Great!

Here's the first cut.  It still needs polishing and some testing, but
let me know what you think:

diff --git a/src/dispextern.h b/src/dispextern.h
index c7399ca..a919f36 100644
--- a/src/dispextern.h
+++ b/src/dispextern.h
@@ -3505,6 +3505,8 @@ #define TRY_WINDOW_IGNORE_FONTS_CHANGE	(1 << 1)
 
 extern bool buffer_flipping_blocked_p (void);
 
+extern void update_redisplay_ticks (int, struct it *);
+
 /* Defined in image.c */
 
 #ifdef HAVE_WINDOW_SYSTEM
diff --git a/src/xdisp.c b/src/xdisp.c
index 2245326..6d4cb9f 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -3222,6 +3222,8 @@ init_iterator (struct it *it, struct window *w,
 
   it->cmp_it.id = -1;
 
+  update_redisplay_ticks (0, it);
+
   /* Extra space between lines (on window systems only).  */
   if (base_face_id == DEFAULT_FACE_ID
       && FRAME_WINDOW_P (it->f))
@@ -8175,6 +8177,8 @@ get_next_display_element (struct it *it)
 set_iterator_to_next (struct it *it, bool reseat_p)
 {
 
+  update_redisplay_ticks (1, it);
+
   switch (it->method)
     {
     case GET_FROM_BUFFER:
@@ -16724,9 +16728,14 @@ #define AINC(a,i)							\
 				 list_of_error,
 				 redisplay_window_error);
       if (update_miniwindow_p)
-	internal_condition_case_1 (redisplay_window_1,
-				   FRAME_MINIBUF_WINDOW (sf), list_of_error,
-				   redisplay_window_error);
+	{
+	  Lisp_Object mini_window = FRAME_MINIBUF_WINDOW (sf);
+
+	  displayed_buffer = XBUFFER (XWINDOW (mini_window)->contents);
+	  internal_condition_case_1 (redisplay_window_1, mini_window,
+				     list_of_error,
+				     redisplay_window_error);
+	}
 
       /* Compare desired and current matrices, perform output.  */
 
@@ -17156,6 +17165,43 @@ redisplay_window_1 (Lisp_Object window)
     redisplay_window (window, true);
   return Qnil;
 }
+
+
+/***********************************************************************
+		      Aborting runaway redisplay
+ ***********************************************************************/
+
+/* Update the redisplay-tick count for a window, and signal an error
+   if the tick count is above some threshold, indicating that
+   redisplay of the window takes "too long".
+
+   TICKS is the amount of ticks to add to the window's current count;
+   zero means to initialize the count to zero.
+
+   IT is the iterator used for redisplay work; it->w is the window we
+   are working on.  */
+void
+update_redisplay_ticks (int ticks, struct it *it)
+{
+  /* This keeps track of the window on which redisplay is working.  */
+  static struct window *cwindow;
+  static EMACS_INT window_ticks;
+
+  /* We only initialize the count if this is a different window.
+     Otherwise, this is a call from init_iterator for the same window
+     we tracked before, and we should keep the count.  */
+  if (!ticks && it->w != cwindow)
+    {
+      cwindow = it->w;
+      window_ticks = 0;
+    }
+  if (ticks > 0)
+    window_ticks += ticks;
+  if (max_redisplay_ticks > 0 && window_ticks > max_redisplay_ticks)
+    error ("Window showing buffer %s takes too long to redisplay",
+	   SSDATA (BVAR (XBUFFER (it->w->contents), name)));
+}
+
 
 
 /* Set cursor position of W.  PT is assumed to be displayed in ROW.
@@ -35777,7 +35823,7 @@ syms_of_xdisp (void)
 
   DEFSYM (Qinhibit_free_realized_faces, "inhibit-free-realized-faces");
 
-  list_of_error = list1 (list2 (Qerror, Qvoid_variable));
+  list_of_error = list1 (Qerror);
   staticpro (&list_of_error);
 
   /* Values of those variables at last redisplay are stored as
@@ -36667,6 +36713,22 @@ syms_of_xdisp (void)
 This makes it easier to edit character sequences that are
 composed on display.  */);
   composition_break_at_point = false;
+
+  DEFVAR_INT ("max-redisplay-ticks", max_redisplay_ticks,
+    doc: /* Maximum number of redisplay ticks before aborting redisplay of a window.
+
+This allows to abort the display of a window if the amount of low-level
+redisplay operations exceeds the value of this variable.  When display of
+a window is aborted due to this reason, the buffer shown in that window
+will not have its windows redisplayed until the buffer is modified or until
+you type \\[recenter-top-bottom] with one of its windows selected.
+You can also decide to kill the buffer and visit it in some
+other way, like udner `so-long-mode' or literally.
+
+The default value is zero, which disables this feature.
+The recommended non-zero value is between 50000 and 200000,
+depending on your patience and the speed of your system.  */);
+  max_redisplay_ticks = 0;
 }
 
 




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Sun, 12 Jun 2022 18:03:01 +0000
Resent-Message-ID: <handler.45898.B45898.16550569794069 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: larsi@HIDDEN, Emacs-hacker2018@HIDDEN
Cc: 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.16550569794069
          (code B ref 45898); Sun, 12 Jun 2022 18:03:01 +0000
Received: (at 45898) by debbugs.gnu.org; 12 Jun 2022 18:02:59 +0000
Received: from localhost ([127.0.0.1]:56453 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o0RvP-00013Z-Da
	for submit <at> debbugs.gnu.org; Sun, 12 Jun 2022 14:02:59 -0400
Received: from eggs.gnu.org ([209.51.188.92]:59298)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1o0RvN-00013L-0g
 for 45898 <at> debbugs.gnu.org; Sun, 12 Jun 2022 14:02:58 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:50326)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o0RvH-0004FV-5M; Sun, 12 Jun 2022 14:02:51 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=sEXCgtZYL/5NyOTbBH6/UzqdB4jeIw+NB76cOrJOvUE=; b=I4WZO4as3SUa
 kMpkd3RUNTQApvaQjqjQadFqJ3Y1Ozp0r9ooFHPhSOutPZJOJxw7Sidu6jmJAFepeoDJv9B/4km3g
 nbCiYfMwLI59R6VWxtpu954d/ywfPynsW5knr0dQIuzPdi92HD8ZDJZ48kwGtIlAUGpiKjz6LB9ks
 zVcw1yNypELBNXooaoMT7kIhfK5hri9sSjTJrHIHxZT+tcESp2W1vSI6Ze5UMtbGuwZtWh/XY+Zb+
 8czpqmVSe758Eh/oZb/1bwI/sEWVMxITemThMO4Ht1BEuCfkU0G/eO4KhD4Azh2sMOh5+IdmDCgxz
 wG8ue4AXYq1S528EqmEK3A==;
Received: from [87.69.77.57] (port=2969 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o0RvG-0001uT-KP; Sun, 12 Jun 2022 14:02:50 -0400
Date: Sun, 12 Jun 2022 21:02:34 +0300
Message-Id: <83fsk9vjyd.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <83mteiufih.fsf@HIDDEN> (message from Eli Zaretskii on Sun, 12
 Jun 2022 17:23:50 +0300)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN>
 <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN>
 <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN>
 <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN>
 <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN>
 <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
> Date: Sun, 12 Jun 2022 17:23:50 +0300
> From: Eli Zaretskii <eliz@HIDDEN>
> 
> Here's the first cut.  It still needs polishing and some testing, but
> let me know what you think:

For testing purposes, is it possible to have examples of files that
could benefit from this feature, i.e. files where Emacs becomes not
responsive enough?  I'm not sure the few examples I have cover all the
popular reasons for the slowness, as I think there are more than one
or two.

TIA




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Lars Ingebrigtsen <larsi@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 13 Jun 2022 12:11:01 +0000
Resent-Message-ID: <handler.45898.B45898.165512224515549 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165512224515549
          (code B ref 45898); Mon, 13 Jun 2022 12:11:01 +0000
Received: (at 45898) by debbugs.gnu.org; 13 Jun 2022 12:10:45 +0000
Received: from localhost ([127.0.0.1]:57424 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o0iu4-00042i-Rp
	for submit <at> debbugs.gnu.org; Mon, 13 Jun 2022 08:10:45 -0400
Received: from quimby.gnus.org ([95.216.78.240]:36478)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <larsi@HIDDEN>) id 1o0itr-00042B-2U
 for 45898 <at> debbugs.gnu.org; Mon, 13 Jun 2022 08:10:43 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org;
 s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date:
 References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:
 Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender:
 Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=V2VfBHKA/7/bDSggS9RBi7Gt3E1CUR67zMjl/o7+Jdg=; b=ATLjyJFRMfBIan19aqmo6CVnWN
 IN0QYDeGGp78PkkQc/Y6lH+32cLltlcj4eW2cSKvKja19d1cFWmtf2Kw6j8Q7If+eqyz1nohu1alz
 Ph2Y5rrU8N/lNsSSFRZKh40Q8Kzlx825X/UMjNkYaHctJ2mR/31nS+MKo+OzbXunBAac=;
Received: from [84.212.220.105] (helo=xo)
 by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.92) (envelope-from <larsi@HIDDEN>)
 id 1o0itg-00085Y-JR; Mon, 13 Jun 2022 14:10:23 +0200
From: Lars Ingebrigtsen <larsi@HIDDEN>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN>
 <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN>
 <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN>
 <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN>
 <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN>
 <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN>
 <83mteiufih.fsf@HIDDEN>
Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAACBj
 SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAG1BMVEX89Obm3dLExsbI
 raetnpqrP06gX2aKZWf///+53gUxAAAAAWJLR0QIht6VegAAAAd0SU1FB+YGDQwDJG/XMTQAAAGz
 SURBVDjLjZK9c5wwEMVXwCStVsdQI8HhFgS5tAfodH2MqB2+0nuc+/sDHl8yXuyZbKPh/dint5IA
 /rOY/Ej1YvDKD3TfaPAqTmWO3/qqYYrqwYuw863fOwVGVsvJzTun0Jjr/OjmMwXZL1tfutnlFERL
 L4+dnXZWx5t7zm79uLM6XdyPq22nhraIrB9Nok2NBBxSd32udNaxHZj7rtJHR6xYWfWdzV7mnjS0
 xrp+nt38kzS0VerW6i80U/k9dd1KOgISIYzrzG9D5mOFhtOk1MMQE7De26lWIh1pWBND0OSY7k6K
 xdtTQEUa/FdnxoGeYHR+FRBoR1TW26JUSkOFZ5DgNdIQANHT+gLDRklJvfJDwbRSwiQ0b1L6k1bG
 0O2hKoVZSxd09AR5jKjWIQlQCjnjyGJGiGrQ44gecO+9WapQIAoJKN+3CCGLQgoUguRiiRLIcN3m
 rtw5owNs3/5dPBAgOC80KwE15HVdlOEbOFg+pFU6gB1hwMdxWd5AZGD6qkwNdoDO66Z/YAQT8Cnf
 wOLbxYb8L7h9ydtms1qCbDndQdhCE5x5CUkBkgHNTUt98sMfu55QrmcV2VoAAAAldEVYdGRhdGU6
 Y3JlYXRlADIwMjItMDYtMTNUMTI6MDM6MzYrMDA6MDDqRQY3AAAAJXRFWHRkYXRlOm1vZGlmeQAy
 MDIyLTA2LTEzVDEyOjAzOjM2KzAwOjAwmxi+iwAAAABJRU5ErkJggg==
X-Now-Playing: Wrangler's _Ni d'eve, ni d'adam_: "Harder"
Date: Mon, 13 Jun 2022 14:10:19 +0200
In-Reply-To: <83mteiufih.fsf@HIDDEN> (Eli Zaretskii's message of "Sun, 12 Jun
 2022 17:23:50 +0300")
Message-ID: <877d5kojbo.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 @@CONTACT_ADDRESS@@ for details.
 Content preview: Eli Zaretskii <eliz@HIDDEN> writes: > Here's the first cut.
 It still needs polishing and some testing, but > let me know what you think:
 [...] Content analysis details:   (-2.9 points, 5.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -1.0 ALL_TRUSTED            Passed through trusted hosts only via SMTP
 -1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%
 [score: 0.0000]
X-Spam-Score: -0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Eli Zaretskii <eliz@HIDDEN> writes:

> Here's the first cut.  It still needs polishing and some testing, but
> let me know what you think:

[...]

> +/* Update the redisplay-tick count for a window, and signal an error
> +   if the tick count is above some threshold, indicating that
> +   redisplay of the window takes "too long".

Ah, instead of measuring the time elapsed, we use the number of iterator
"executions" as a proxy.  That sounds promising.

One problem that occurs to me is if you're, say, only displaying a shell
buffer, and it's outputting data -- then I don't think we'll be changing
windows, but just accruing ticks?  But I think that should be easy
enough to fix, since we'll be returning to command_loop and we could
just have that nixing out the tick count, too.  Probably.

A different problem is when we don't have many ticks, but each tick
takes a long time to execute.  The classic problem here is when we have
a font-locking regexp that's very complicated (with lots of
backtracking).  Then we don't update anything on the screen much -- we
spend (virtually) all the time in the regexp matcher.  I don't see an
easy fix to that using this scheme...

> For testing purposes, is it possible to have examples of files that
> could benefit from this feature, i.e. files where Emacs becomes not
> responsive enough?  I'm not sure the few examples I have cover all the
> popular reasons for the slowness, as I think there are more than one
> or two.

I don't have anything handy...  anybody else have a setup that will
freeze Emacs redisplay that we can test with?

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 13 Jun 2022 12:59:02 +0000
Resent-Message-ID: <handler.45898.B45898.16551251025235 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Lars Ingebrigtsen <larsi@HIDDEN>, Phil Sainty <psainty@HIDDEN>
Cc: Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.16551251025235
          (code B ref 45898); Mon, 13 Jun 2022 12:59:02 +0000
Received: (at 45898) by debbugs.gnu.org; 13 Jun 2022 12:58:22 +0000
Received: from localhost ([127.0.0.1]:57573 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o0je9-0001MN-Pn
	for submit <at> debbugs.gnu.org; Mon, 13 Jun 2022 08:58:22 -0400
Received: from eggs.gnu.org ([209.51.188.92]:40830)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1o0je7-0001M4-EB
 for 45898 <at> debbugs.gnu.org; Mon, 13 Jun 2022 08:58:20 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:38242)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o0je1-0008Gf-Q2; Mon, 13 Jun 2022 08:58:13 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=6icF7tsacamO05keJJ/eCR018GGhpMP6pc5l3EZTctg=; b=bOiD5w/S9RKguKHNPv+f
 NKEoEE5XoZOPfc9X5lOcY+VcrtpYSz510WBXUPiAdEGygtlCLUPokTSq4xrTp+xb9O4XaeLe2JCfm
 3OrvMxYkcHhXtUgBI8bAR6d88wvxBM6SVrtDm9sllB6TxkDW+WNiTi/qXJxdlkGNJTlYQLleFpZPh
 +EaSsrmlDKm0lvfpy1Q3Bw/0CDh+5n2URuUDiHalC3YLxVp2SLGk+F6xDPbZAZyNVbRKB6pIHrmLx
 mWZXqqBuunc7sCpuqJ0h4hsq1ujUraFayrDrIpbeBs5Z1AodDC6WoiNFIJdvEwbQTkpze2bbuJoTs
 wmyRRt48bzolFA==;
Received: from [87.69.77.57] (port=4684 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o0je1-0000Hu-A5; Mon, 13 Jun 2022 08:58:13 -0400
Date: Mon, 13 Jun 2022 15:57:59 +0300
Message-Id: <83zgigu3e0.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <877d5kojbo.fsf@HIDDEN> (message from Lars Ingebrigtsen on Mon, 
 13 Jun 2022 14:10:19 +0200)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN>
 <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN>
 <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN>
 <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN>
 <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN>
 <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN>
 <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Lars Ingebrigtsen <larsi@HIDDEN>
> Cc: Emacs-hacker2018@HIDDEN,  45898 <at> debbugs.gnu.org
> Date: Mon, 13 Jun 2022 14:10:19 +0200
> 
> Eli Zaretskii <eliz@HIDDEN> writes:
> 
> > Here's the first cut.  It still needs polishing and some testing, but
> > let me know what you think:
> 
> [...]
> 
> > +/* Update the redisplay-tick count for a window, and signal an error
> > +   if the tick count is above some threshold, indicating that
> > +   redisplay of the window takes "too long".
> 
> Ah, instead of measuring the time elapsed, we use the number of iterator
> "executions" as a proxy.  That sounds promising.

Yes.  That idea came up while discussing this with Gerd Möllmann, btw.
It's much simpler than measuring time (which would require
high-resolution timing, which is much less portable and more tricky to
get right, what with modern systems constantly adjusting their time).

> One problem that occurs to me is if you're, say, only displaying a shell
> buffer, and it's outputting data -- then I don't think we'll be changing
> windows, but just accruing ticks?  But I think that should be easy
> enough to fix, since we'll be returning to command_loop and we could
> just have that nixing out the tick count, too.  Probably.

Yes, zeroing out the count when redisplay is done is probably a good
idea.  It's on my todo, probably in mark_window_display_accurate_1 or
thereabouts.  The only consideration here is that a successful
redisplay of a window could be followed by something like
vertical-motion across the same window, which could take "too long",
and we perhaps want the counters to be accumulated.  Hmm...

(Actually, output in a shell buffer is not a problem, because comint
calls 'recenter' very frequently, at least by default, and 'recenter'
resets the ticks count.  But maybe there are other situations where
this isn't guaranteed to happen.  So yeah, maybe command_loop is a
better place.)

> A different problem is when we don't have many ticks, but each tick
> takes a long time to execute.  The classic problem here is when we have
> a font-locking regexp that's very complicated (with lots of
> backtracking).  Then we don't update anything on the screen much -- we
> spend (virtually) all the time in the regexp matcher.  I don't see an
> easy fix to that using this scheme...

That's why update_redisplay_ticks accepts its first argument, instead
of always adding 1: I thought about some potentially expensive
operations that could be either more or less expensive than just
processing a single character.  E.g., font-lock calls regexp matching,
so we should try to come up with some measure of its "expensiveness"
based on...something.  This will need some tuning, but all we need is
some coarse correlation.

> > For testing purposes, is it possible to have examples of files that
> > could benefit from this feature, i.e. files where Emacs becomes not
> > responsive enough?  I'm not sure the few examples I have cover all the
> > popular reasons for the slowness, as I think there are more than one
> > or two.
> 
> I don't have anything handy...  anybody else have a setup that will
> freeze Emacs redisplay that we can test with?

"Freeze" is not actually a requirement; it's enough if Emacs's
responses become very slow.  For now, I used the file described here:

  https://lists.gnu.org/archive/html/help-gnu-emacs/2022-05/msg00070.html

But it is only one kind of such files.  Perhaps Phil could point me to
additional examples; added to CC.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Phil Sainty <psainty@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 13 Jun 2022 22:42:02 +0000
Resent-Message-ID: <handler.45898.B45898.1655160068785 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: Lars Ingebrigtsen <larsi@HIDDEN>, Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.1655160068785
          (code B ref 45898); Mon, 13 Jun 2022 22:42:02 +0000
Received: (at 45898) by debbugs.gnu.org; 13 Jun 2022 22:41:08 +0000
Received: from localhost ([127.0.0.1]:60692 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o0sk7-0000Cb-Up
	for submit <at> debbugs.gnu.org; Mon, 13 Jun 2022 18:41:07 -0400
Received: from smtp-2.orcon.net.nz ([60.234.4.43]:39667)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <psainty@HIDDEN>) id 1o0sk3-0000CP-0h
 for 45898 <at> debbugs.gnu.org; Mon, 13 Jun 2022 18:41:06 -0400
Received: from [10.253.37.70] (port=43924 helo=webmail.orcon.net.nz)
 by smtp-2.orcon.net.nz with esmtpa (Exim 4.90_1)
 (envelope-from <psainty@HIDDEN>)
 id 1o0sjn-0006ir-CV; Tue, 14 Jun 2022 10:40:50 +1200
Received: from ip-116-251-140-135.kinect.net.nz ([116.251.140.135])
 via [10.253.37.253] by webmail.orcon.net.nz
 with HTTP (HTTP/1.1 POST); Tue, 14 Jun 2022 10:40:47 +1200
MIME-Version: 1.0
Content-Type: multipart/mixed;
 boundary="=_72e5ef6ea6b223d9bd045fb26a399488"
Date: Tue, 14 Jun 2022 10:40:47 +1200
From: Phil Sainty <psainty@HIDDEN>
In-Reply-To: <83zgigu3e0.fsf@HIDDEN>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN>
 <83a6an5jt3.fsf@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN>
 <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN>
 <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN>
 <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN>
Message-ID: <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
X-Sender: psainty@HIDDEN
User-Agent: Orcon Webmail
X-GeoIP: --
X-Spam_score: -2.9
X-Spam_score_int: -28
X-Spam_bar: --
X-Spam-Score: -0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>

--=_72e5ef6ea6b223d9bd045fb26a399488
Content-Transfer-Encoding: 7bit
Content-Type: text/plain; charset=US-ASCII;
 format=flowed

On 2022-06-14 00:57, Eli Zaretskii wrote:
> "Freeze" is not actually a requirement; it's enough if Emacs's
> responses become very slow.  For now, I used the file described here:
> 
>   
> https://lists.gnu.org/archive/html/help-gnu-emacs/2022-05/msg00070.html
> 
> But it is only one kind of such files.  Perhaps Phil could point me to
> additional examples; added to CC.

My standard example is this file:
https://github.com/Wilfred/ReVo-utilities/blob/a4bdc40dd2656c496defc461fc19c403c8306d9f/revo-export/dictionary.json?raw=true

and which is ~19MB in a single line of JSON (which normally freezes
Emacs for several minutes on quite fast hardware by simply visiting the
file), and which comes from this question:
https://emacs.stackexchange.com/questions/598/how-do-i-prevent-extremely-long-lines-making-emacs-slow

I've also used cut-down versions of that file in testing.  I'm attaching
a ~300K extract from that which is more than enough to make things 
painful
at the end of the line (or slow-yet-manageable with so-long enabled).

And here's an XML file of similar size and effect:
wget -O long-line.xml 
https://updates.drupal.org/release-history/drupal/current


-Phil

--=_72e5ef6ea6b223d9bd045fb26a399488
Content-Transfer-Encoding: base64
Content-Type: application/x-xz;
 name=medium_line.json.xz
Content-Disposition: attachment;
 filename=medium_line.json.xz;
 size=73452

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
--=_72e5ef6ea6b223d9bd045fb26a399488--





Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Lars Ingebrigtsen <larsi@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Tue, 14 Jun 2022 12:02:02 +0000
Resent-Message-ID: <handler.45898.B45898.165520808532719 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: Phil Sainty <psainty@HIDDEN>, Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165520808532719
          (code B ref 45898); Tue, 14 Jun 2022 12:02:02 +0000
Received: (at 45898) by debbugs.gnu.org; 14 Jun 2022 12:01:25 +0000
Received: from localhost ([127.0.0.1]:33260 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o15Eb-0008Vf-Au
	for submit <at> debbugs.gnu.org; Tue, 14 Jun 2022 08:01:25 -0400
Received: from quimby.gnus.org ([95.216.78.240]:48732)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <larsi@HIDDEN>) id 1o15EL-0008VD-Az
 for 45898 <at> debbugs.gnu.org; Tue, 14 Jun 2022 08:01:24 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org;
 s=20200322; h=Content-Transfer-Encoding:Content-Type:MIME-Version:Message-ID
 :In-Reply-To:Date:References:Subject:Cc:To:From:Sender:Reply-To:Content-ID:
 Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc
 :Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe:
 List-Post:List-Owner:List-Archive;
 bh=OEYa17F8Gj5kVS7COD8DJTfDHKE0tUGpJRIJMmaUh8s=; b=tcz4p1QoqDPrJ9LI1Lv94FgWn6
 vnavNiKrlrieRK8gXdgTa3lzC7lE0gN7o20LbOOPs9nu/Ir38WIRcux/if8rpau5UK1hztcdo4ayt
 ASlxp0Mxt2iWNWIORMKcP8AwV/0Qh2MvCxcI40QWRK9whFjF6KSFfo5j4PYSQIL+A4Oo=;
Received: from [84.212.220.105] (helo=xo)
 by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.92) (envelope-from <larsi@HIDDEN>)
 id 1o15E6-0005vp-Ti; Tue, 14 Jun 2022 14:01:01 +0200
From: Lars Ingebrigtsen <larsi@HIDDEN>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN>
 <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN>
 <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN>
 <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN>
 <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN>
 <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN>
 <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN>
 <83zgigu3e0.fsf@HIDDEN>
Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwAgMAAAAqbBEUAAAABGdBTUEAALGPC/xhBQAAACBj
 SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAADFBMVEXY2NqfXjEtLR7/
 ///7eVvkAAAAAWJLR0QDEQxM8gAAAAd0SU1FB+YGDgs4NrcmFi8AAAFySURBVCjPTZKxTsQwDIZd
 pFbi9ruBnYWnKAPMBeFIzUxPqp+iDOwHUiqV6ZAu1dlPye+cTqJL8+W3f8dxqApmyfCpGRWI9pNj
 gSX1otFFwGq5gBjdhFUzj1JgY0uaTaUYbBD78R8mQhiYmitYhNsMaNwNQDuVaaPsdQEmh13uEJ6o
 bUy+np+6SmlLh7JF9NhRRaeNSuoOL7nFztkh/AbFmgZRSyGHswN/I4dHPlb6SIzmFkDbaCrgCorz
 BYKGNgAsmLiBOniLifVVXzITLkM++ak9drdMS1T5eCfUr5mG4M05NBc3AFVvg4MWZZvSValaxucg
 E+IhBFpX3AHViQfuSVdXaqw5ES4ScIsMnOACWA9wUxxnqrnvB47Uu7XDHtanPYrWYellTTTtXIlL
 NB1puoNBLYBZ6eBwL/3efoymB+TouE8SlY4PPsIBU5JM5mMGIz8AXMEYZ42EOxPLIwsehncq5YmI
 XTrFs9IwX2G1BT/+A3Q+/qA6ZSUkAAAAJXRFWHRkYXRlOmNyZWF0ZQAyMDIyLTA2LTE0VDExOjU2
 OjU0KzAwOjAwbPjtJAAAACV0RVh0ZGF0ZTptb2RpZnkAMjAyMi0wNi0xNFQxMTo1Njo1NCswMDow
 MB2lVZgAAAAASUVORK5CYII=
X-Now-Playing: Liquid Liquid's _Optimo and The Loving Hand_: "Rubbermiro
 (Remix By The Loving Hand)"
Date: Tue, 14 Jun 2022 14:00:53 +0200
In-Reply-To: <83zgigu3e0.fsf@HIDDEN> (Eli Zaretskii's message of "Mon, 13 Jun
 2022 15:57:59 +0300")
Message-ID: <87v8t3o3nu.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 @@CONTACT_ADDRESS@@ for details.
 
 Content preview:  Eli Zaretskii <eliz@HIDDEN> writes: > Yes. That idea came
    up while discussing this with Gerd =?UTF-8?Q?M=C3=B6llmann,?= btw. > It's much simpler than
    measuring time (which would require > high-resolution timing, which is much
    less portable and more tri [...] 
 
 Content analysis details:   (-2.9 points, 5.0 required)
 
  pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -1.0 ALL_TRUSTED            Passed through trusted hosts only via SMTP
 -1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%
                             [score: 0.0000]
X-Spam-Score: -0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Eli Zaretskii <eliz@HIDDEN> writes:

> Yes.  That idea came up while discussing this with Gerd M=C3=B6llmann, bt=
w.
> It's much simpler than measuring time (which would require
> high-resolution timing, which is much less portable and more tricky to
> get right, what with modern systems constantly adjusting their time).

I don't think we need high resolution time here?  We just need to
(coarsely) have an opinion about whether we've been spending a lot of
time...

> That's why update_redisplay_ticks accepts its first argument, instead
> of always adding 1: I thought about some potentially expensive
> operations that could be either more or less expensive than just
> processing a single character.  E.g., font-lock calls regexp matching,
> so we should try to come up with some measure of its "expensiveness"
> based on...something.  This will need some tuning, but all we need is
> some coarse correlation.

Yes.  I do wonder, though, whether there's going to be possible to come
up with useful tuning here -- predicting whether a regexp is "heavy" is
non trivial, to say the least.

--=20
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Tue, 14 Jun 2022 12:47:02 +0000
Resent-Message-ID: <handler.45898.B45898.165521077117587 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Phil Sainty <psainty@HIDDEN>
Cc: larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165521077117587
          (code B ref 45898); Tue, 14 Jun 2022 12:47:02 +0000
Received: (at 45898) by debbugs.gnu.org; 14 Jun 2022 12:46:11 +0000
Received: from localhost ([127.0.0.1]:33417 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o15vp-0004Uz-U3
	for submit <at> debbugs.gnu.org; Tue, 14 Jun 2022 08:46:11 -0400
Received: from eggs.gnu.org ([209.51.188.92]:40230)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1o15vl-0004Lg-Kp
 for 45898 <at> debbugs.gnu.org; Tue, 14 Jun 2022 08:46:04 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:34936)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o15vf-0004xB-LQ; Tue, 14 Jun 2022 08:45:55 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=nIM+3n/bOKci1GxXhUtemg9GNDcTD6il3GayFP9lLGI=; b=mdn2Xab/Owd3
 bJZnJhRLaPEge6XLoxRzAVnY70F88sy6pgsIXIylpTMa3UwzSkj4s8OeHf/IKjhI7oPpkK45kpscA
 s1M6qDuXKAVoqbvpSlbiD6yLcPF1E3MxKJcNULjCv8esaNV2Tpo67dh4Q8A0+UQoSn0dzm9B9QgD4
 4WNfa8FRU0nIHNkezhNlFrOyitsLaEslna6Cdy+cfTuKcIqKt2QWWfn7HT0vNPbgqDChPbJMX3H2C
 t5vGh95Di+y81aovJPaqbJKMvJWmg1wQc2N6+OBuSADgSzS1sjgxYzxGaNEuJJZd11Ovqjmv8SzjB
 TZn8aGTczU/9ONYUoeyH9w==;
Received: from [87.69.77.57] (port=4312 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o15vX-0004NM-UT; Tue, 14 Jun 2022 08:45:53 -0400
Date: Tue, 14 Jun 2022 15:45:36 +0300
Message-Id: <835yl3tnv3.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN> (message
 from Phil Sainty on Tue, 14 Jun 2022 10:40:47 +1200)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN>
 <83a6an5jt3.fsf@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN>
 <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN>
 <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN>
 <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> Date: Tue, 14 Jun 2022 10:40:47 +1200
> From: Phil Sainty <psainty@HIDDEN>
> Cc: Lars Ingebrigtsen <larsi@HIDDEN>, Emacs-hacker2018@HIDDEN,
>  45898 <at> debbugs.gnu.org
> 
> My standard example is this file:
> https://github.com/Wilfred/ReVo-utilities/blob/a4bdc40dd2656c496defc461fc19c403c8306d9f/revo-export/dictionary.json?raw=true
> 
> and which is ~19MB in a single line of JSON (which normally freezes
> Emacs for several minutes on quite fast hardware by simply visiting the
> file), and which comes from this question:
> https://emacs.stackexchange.com/questions/598/how-do-i-prevent-extremely-long-lines-making-emacs-slow
> 
> I've also used cut-down versions of that file in testing.  I'm attaching
> a ~300K extract from that which is more than enough to make things 
> painful
> at the end of the line (or slow-yet-manageable with so-long enabled).
> 
> And here's an XML file of similar size and effect:
> wget -O long-line.xml 
> https://updates.drupal.org/release-history/drupal/current

Thanks, this is very useful.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Tue, 14 Jun 2022 13:02:02 +0000
Resent-Message-ID: <handler.45898.B45898.165521168323060 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Lars Ingebrigtsen <larsi@HIDDEN>
Cc: psainty@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165521168323060
          (code B ref 45898); Tue, 14 Jun 2022 13:02:02 +0000
Received: (at 45898) by debbugs.gnu.org; 14 Jun 2022 13:01:23 +0000
Received: from localhost ([127.0.0.1]:33445 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o16Ad-0005zr-2p
	for submit <at> debbugs.gnu.org; Tue, 14 Jun 2022 09:01:23 -0400
Received: from eggs.gnu.org ([209.51.188.92]:43778)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1o16AU-0005zX-3W
 for 45898 <at> debbugs.gnu.org; Tue, 14 Jun 2022 09:01:21 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:35348)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o16AO-00082r-GR; Tue, 14 Jun 2022 09:01:08 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=zB57ooFFTXQ6E5Sx1j/CcogWDHq06HHKzgdXC7vDAZs=; b=Ng5ygvbDlHM+n0yLqW46
 nqJjajT5ouz4RA1DkqPUwZB4CzOl4jW741hLo2AZDVckPL+e951u+CycCNoh+Fw6VypVzp86w2obb
 KCR/b+yvgydI4kPWE0DwiPDO0Lbtv0CMjZwMD4Bzcte1xTZ3Jy9x5PlWbPuW87uscNrLErSofGYFs
 BOyYke6QM3TRaFQWwzxZ5rT65VcCEkswZAyl+5l7ofusQlV7At6TSBYCVXauN8AKGlUrSCbfl+5G9
 TvTr0w/R2aPGgDZ8lV8YoXbyWNb6vrdDEJxKgsU3AgaTbpFy4wqx7YPt2MmcN0pXNLKAKA4yMiYpa
 vzHCykdPEX9vJg==;
Received: from [87.69.77.57] (port=1281 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o16AN-0002eb-Vt; Tue, 14 Jun 2022 09:01:08 -0400
Date: Tue, 14 Jun 2022 16:00:56 +0300
Message-Id: <8335g7tn5j.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <87v8t3o3nu.fsf@HIDDEN> (message from Lars Ingebrigtsen on Tue, 
 14 Jun 2022 14:00:53 +0200)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN>
 <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN>
 <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN>
 <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN>
 <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN>
 <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN>
 <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN>
 <83zgigu3e0.fsf@HIDDEN> <87v8t3o3nu.fsf@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Lars Ingebrigtsen <larsi@HIDDEN>
> Cc: Phil Sainty <psainty@HIDDEN>,  Emacs-hacker2018@HIDDEN,
>   45898 <at> debbugs.gnu.org
> Date: Tue, 14 Jun 2022 14:00:53 +0200
> 
> > Yes.  That idea came up while discussing this with Gerd Möllmann, btw.
> > It's much simpler than measuring time (which would require
> > high-resolution timing, which is much less portable and more tricky to
> > get right, what with modern systems constantly adjusting their time).
> 
> I don't think we need high resolution time here?  We just need to
> (coarsely) have an opinion about whether we've been spending a lot of
> time...

The problem is that redisplay and related code is spread all over the
place, and what makes things low is not necessarily a series of
consecutive calls, let alone predictable ones.  So inserting calls to
timing functions is problematic, and adding times instead of adding
"ticks" would need high-res timing, otherwise you'd risk adding a lot
of zeros.

> > That's why update_redisplay_ticks accepts its first argument, instead
> > of always adding 1: I thought about some potentially expensive
> > operations that could be either more or less expensive than just
> > processing a single character.  E.g., font-lock calls regexp matching,
> > so we should try to come up with some measure of its "expensiveness"
> > based on...something.  This will need some tuning, but all we need is
> > some coarse correlation.
> 
> Yes.  I do wonder, though, whether there's going to be possible to come
> up with useful tuning here -- predicting whether a regexp is "heavy" is
> non trivial, to say the least.

The idea is not to predict it, but to know it after the expensive
operation returned.  Not that doing that is trivial...  Basically, any
operation that is very expensive loops somewhere, so counting the loop
iterations can give some idea of the "cost".




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Sat, 18 Jun 2022 08:02:01 +0000
Resent-Message-ID: <handler.45898.B45898.16555393059568 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Stefan Monnier <monnier@HIDDEN>, Lars Ingebrigtsen <larsi@HIDDEN>
Cc: psainty@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.16555393059568
          (code B ref 45898); Sat, 18 Jun 2022 08:02:01 +0000
Received: (at 45898) by debbugs.gnu.org; 18 Jun 2022 08:01:45 +0000
Received: from localhost ([127.0.0.1]:47457 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o2TOm-0002UA-5L
	for submit <at> debbugs.gnu.org; Sat, 18 Jun 2022 04:01:45 -0400
Received: from eggs.gnu.org ([209.51.188.92]:49604)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1o2TOh-0002Tu-Pj
 for 45898 <at> debbugs.gnu.org; Sat, 18 Jun 2022 04:01:39 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:59762)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o2TOc-0001nO-2T; Sat, 18 Jun 2022 04:01:30 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=sOtb1t+50zUVxUfuWSRCg8Z+G3c+XLl/oEE2aNUKgdU=; b=Azry5RPibcMI
 MqRuqFVoT3VVFR0yaER6rY2LueQ87YDuAED0IjiHF7VaJdG7cNo40IFv1BA0G8+wTcA8oP2IwCVXg
 sayKU99ObPaEH5FoLJPrAMf1B1Z0aB+qMoqsCd/DhUUEriem/UihriJcBV8Ernigtp2tkWTTpGOgC
 97hGwykAbJy9X0MqFK/kfJp1ylDhLV+e5FZUTLmd3kiRYbsl17XVnx+dd7aA6u0REvt/XAxJuGvFw
 nAB0Newk75VWhGIeEcQLaXaWdY+F2lvIP7iBlVZj8ZrD8nSHpYVkTe6YxMM4Q6h7O9gH7l2R7I9Bc
 pyo26B7p7wqnYBjiDlQO+A==;
Received: from [87.69.77.57] (port=2164 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o2TOb-0005sk-HI; Sat, 18 Jun 2022 04:01:29 -0400
Date: Sat, 18 Jun 2022 11:01:24 +0300
Message-Id: <83iloyo0x7.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <835yl3tnv3.fsf@HIDDEN> (message from Eli Zaretskii on Tue, 14
 Jun 2022 15:45:36 +0300)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN>
 <83a6an5jt3.fsf@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN>
 <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN>
 <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN>
 <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> Cc: larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
> Date: Tue, 14 Jun 2022 15:45:36 +0300
> From: Eli Zaretskii <eliz@HIDDEN>
> 
> > Date: Tue, 14 Jun 2022 10:40:47 +1200
> > From: Phil Sainty <psainty@HIDDEN>
> > Cc: Lars Ingebrigtsen <larsi@HIDDEN>, Emacs-hacker2018@HIDDEN,
> >  45898 <at> debbugs.gnu.org
> > 
> > My standard example is this file:
> > https://github.com/Wilfred/ReVo-utilities/blob/a4bdc40dd2656c496defc461fc19c403c8306d9f/revo-export/dictionary.json?raw=true
> > 
> > and which is ~19MB in a single line of JSON (which normally freezes
> > Emacs for several minutes on quite fast hardware by simply visiting the
> > file), and which comes from this question:
> > https://emacs.stackexchange.com/questions/598/how-do-i-prevent-extremely-long-lines-making-emacs-slow
> > 
> > I've also used cut-down versions of that file in testing.  I'm attaching
> > a ~300K extract from that which is more than enough to make things 
> > painful
> > at the end of the line (or slow-yet-manageable with so-long enabled).
> > 
> > And here's an XML file of similar size and effect:
> > wget -O long-line.xml 
> > https://updates.drupal.org/release-history/drupal/current
> 
> Thanks, this is very useful.

As I keep working on this, I find several surprising reasons for slow
redisplay, some of which are almost entirely unrelated to display code
per se.

One surprising finding is that sometimes syntactic fontifications
(triggered via jit-lock.el as part of rendering the buffer) seem to
run amok: jit-lock asks the mode's fontification to fontify a
1500-character block, but that results in parse-partial-sexp being
called to parse the entire humongous file, BOB to EOB.  I attach below
a backtrace where I captured one such situation, when trying to
display the 19MB single-line JSON file mentioned above.  As you see,
this happens on the very first entry to the display code, when Emacs
needs to figure out the face to use for the very first character of
the file.  The data shows that jit-lock asked for fontification of
buffer positions 1..1501, but parse-partial-sexp was (eventually)
called for the entire buffer, positions 1..18922366.

Adding Stefan to the CC list.

Stefan, any idea why would js.el's syntactic fontifications cause this
exceptional situation?  (I know how to avoid wedging Emacs even in
this pathological case, and already have code to do that, but I think
we should try to avoid such situations wherever we can regardless.)

Here's the backtrace I promised.  It can easily be obtained by setting
inside scan_sexps_forward a breakpoint conditioned on FROM being a
small value (I used "from < 1000") and END being a very large value (I
used "and > 18000000").

    Thread 1 hit Breakpoint 2, scan_sexps_forward (state=0x827598, from=1, from_byte=1, end=18922366, targetdepth=-9223372036854775808, stopbefore=false, commentstop=-1) at syntax.c:3181
    3181      struct level *curlevel = levelstart;
    (gdb) bt
    #0  scan_sexps_forward (state=0x827598, from=1, from_byte=1, end=18922366,
	targetdepth=-9223372036854775808, stopbefore=false, commentstop=-1)
	at syntax.c:3181
    #1  0x012e3903 in Fparse_partial_sexp (from=make_fixnum(1),
	to=make_fixnum(18922366), targetdepth=XIL(0), stopbefore=XIL(0),
	oldstate=XIL(0xc00000000821af80), commentstop=XIL(0xf3f0))
	at syntax.c:3604
    #2  0x0127209c in eval_sub (form=XIL(0xc000000007a2aae0)) at eval.c:2475
    #3  0x01269e91 in Fsetq (args=XIL(0xc000000007a2aad0)) at eval.c:498
    #4  0x012719dc in eval_sub (form=XIL(0xc000000007a2aac0)) at eval.c:2409
    #5  0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451
    #6  0x01269bbd in prog_ignore (body=XIL(0xc000000007a2ab90)) at eval.c:462
    #7  0x0126cb48 in Fwhile (args=XIL(0xc000000007a30cb0)) at eval.c:1058
    #8  0x012719dc in eval_sub (form=XIL(0xc000000007a30ca0)) at eval.c:2409
    #9  0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451
    #10 0x0126ca4d in Flet (args=XIL(0xc000000007a30e00)) at eval.c:1037
    #11 0x012719dc in eval_sub (form=XIL(0xc000000007a30e10)) at eval.c:2409
    #12 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451
    #13 0x012719dc in eval_sub (form=XIL(0xc000000007a2a1d0)) at eval.c:2409
    #14 0x0126d5f1 in Funwind_protect (args=XIL(0xc000000007a30e40))
	at eval.c:1312
    #15 0x012719dc in eval_sub (form=XIL(0xc000000007a30e30)) at eval.c:2409
    #16 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451
    #17 0x0126ca4d in Flet (args=XIL(0xc000000007a30f00)) at eval.c:1037
    #18 0x012719dc in eval_sub (form=XIL(0xc000000007a30f10)) at eval.c:2409
    #19 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451
    #20 0x012751f5 in funcall_lambda (fun=XIL(0xc000000007a30fc0), nargs=3,
	arg_vector=0x828570) at eval.c:3192
    #21 0x012748ac in apply_lambda (fun=XIL(0xc000000007a30fd0),
	args=XIL(0xc000000007a1a420), count=1408) at eval.c:3062
    #22 0x01272876 in eval_sub (form=XIL(0xc000000007a1a410)) at eval.c:2546
    #23 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451
    #24 0x0126987e in Fif (args=XIL(0xc0000000079dada0)) at eval.c:407
    #25 0x012719dc in eval_sub (form=XIL(0xc0000000079dadb0)) at eval.c:2409
    #26 0x01269b6d in Fprogn (body=XIL(0xc0000000079da950)) at eval.c:451
    #27 0x012719dc in eval_sub (form=XIL(0xc0000000079db060)) at eval.c:2409
    #28 0x0126d5f1 in Funwind_protect (args=XIL(0xc0000000079da980))
	at eval.c:1312
    #29 0x012719dc in eval_sub (form=XIL(0xc0000000079da970)) at eval.c:2409
    #30 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451
    #31 0x0126ca4d in Flet (args=XIL(0xc0000000079daa40)) at eval.c:1037
    #32 0x012719dc in eval_sub (form=XIL(0xc0000000079daa50)) at eval.c:2409
    #33 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451
    #34 0x012719dc in eval_sub (form=XIL(0xc0000000079daa60)) at eval.c:2409
    #35 0x0126d5f1 in Funwind_protect (args=XIL(0xc0000000079daa90))
	at eval.c:1312
    #36 0x012719dc in eval_sub (form=XIL(0xc0000000079daa80)) at eval.c:2409
    #37 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451
    #38 0x0126c3b6 in FletX (args=XIL(0xc0000000079da470)) at eval.c:969
    #39 0x012719dc in eval_sub (form=XIL(0xc0000000079da480)) at eval.c:2409
    #40 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451
    #41 0x0126ca4d in Flet (args=XIL(0xc0000000079da4a0)) at eval.c:1037
    #42 0x012719dc in eval_sub (form=XIL(0xc0000000079da4b0)) at eval.c:2409
    #43 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451
    #44 0x012751f5 in funcall_lambda (fun=XIL(0xc0000000079da550), nargs=3,
	arg_vector=0x829988) at eval.c:3192
    #45 0x01273da9 in funcall_general (fun=XIL(0xc0000000079da560), numargs=3,
	args=0x829988) at eval.c:2915
    #46 0x01273f6e in Ffuncall (nargs=4, args=0x829980) at eval.c:2953
    #47 0x01271c16 in eval_sub (form=XIL(0xc0000000067e6790)) at eval.c:2428
    #48 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451
    #49 0x0125cbc0 in Fsave_restriction (body=XIL(0xc0000000067e66d0))
	at editfns.c:2826
    #50 0x012719dc in eval_sub (form=XIL(0xc0000000067e66c0)) at eval.c:2409
    #51 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451
    #52 0x012751f5 in funcall_lambda (fun=XIL(0xc0000000067e6070), nargs=2,
	arg_vector=0x6870230) at eval.c:3192
    #53 0x01273da9 in funcall_general (fun=XIL(0xc0000000067e6080), numargs=2,
	args=0x6870230) at eval.c:2915
    #54 0x012e6f83 in exec_byte_code (fun=XIL(0xa000000008202898),
	args_template=257, nargs=1, args=0x68701d0) at bytecode.c:811
    #55 0x012746fd in fetch_and_exec_byte_code (fun=XIL(0xa000000008202898),
	args_template=257, nargs=1, args=0x68701c8) at eval.c:3040
    #56 0x01274c5c in funcall_lambda (fun=XIL(0xa000000008202898), nargs=1,
	arg_vector=0x68701c8) at eval.c:3112
    #57 0x01273c12 in funcall_general (fun=XIL(0xa000000008202898), numargs=1,
	args=0x68701c8) at eval.c:2903
    #58 0x01273f6e in Ffuncall (nargs=2, args=0x68701c0) at eval.c:2953
    #59 0x0127305a in run_hook_wrapped_funcall (nargs=2, args=0x68701c0)
	at eval.c:2731
    #60 0x01273511 in run_hook_with_args (nargs=2, args=0x68701c0,
	funcall=0x1273012 <run_hook_wrapped_funcall>) at eval.c:2812
    #61 0x012730a9 in Frun_hook_wrapped (nargs=2, args=0x68701c0) at eval.c:2746
    #62 0x012745ae in funcall_subr (subr=0x1745e40 <Srun_hook_wrapped>,
	numargs=2, args=0x68701c0) at eval.c:3018
    #63 0x012e6f4f in exec_byte_code (fun=XIL(0xa000000005db0e54),
	args_template=514, nargs=2, args=0x68700f8) at bytecode.c:809
    #64 0x012746fd in fetch_and_exec_byte_code (fun=XIL(0xa000000005db0824),
	args_template=257, nargs=1, args=0x82acb8) at eval.c:3040
    #65 0x01274c5c in funcall_lambda (fun=XIL(0xa000000005db0824), nargs=1,
	arg_vector=0x82acb8) at eval.c:3112
    #66 0x01273c12 in funcall_general (fun=XIL(0xa000000005db0824), numargs=1,
	args=0x82acb8) at eval.c:2903
    #67 0x01273f6e in Ffuncall (nargs=2, args=0x82acb0) at eval.c:2953
    #68 0x0126e681 in internal_condition_case_n (bfun=0x1273e4b <Ffuncall>,
	nargs=2, args=0x82acb0, handlers=XIL(0x30),
	hfun=0x1042523 <safe_eval_handler>) at eval.c:1565
    #69 0x01042756 in safe__call (inhibit_quit=false, nargs=2,
	func=XIL(0x45233b4), ap=0x82ad74 "") at xdisp.c:3015
    #70 0x010427cf in safe_call (nargs=2, func=XIL(0x45233b4)) at xdisp.c:3030
    #71 0x01042823 in safe_call1 (fn=XIL(0x45233b4), arg=make_fixnum(1))
	at xdisp.c:3041
    #72 0x01046576 in handle_fontified_prop (it=0x82aff8) at xdisp.c:4361
    #73 0x01044e1d in handle_stop (it=0x82aff8) at xdisp.c:3877
    #74 0x01051a36 in reseat (it=0x82aff8, pos=..., force_p=true) at xdisp.c:7338
    #75 0x01044081 in init_iterator (it=0x82aff8, w=0x75cff98, charpos=1,
	bytepos=1, row=0x6813110, base_face_id=DEFAULT_FACE_ID) at xdisp.c:3478
    #76 0x01044119 in start_display (it=0x82aff8, w=0x75cff98, pos=...)
	at xdisp.c:3494
    #77 0x0107b6fb in try_window (window=XIL(0xa0000000075cff98), pos=...,
	flags=1) at xdisp.c:20158
    #78 0x0107836d in redisplay_window (window=XIL(0xa0000000075cff98),
	just_this_one_p=false) at xdisp.c:19571
    #79 0x0106f9b9 in redisplay_window_0 (window=XIL(0xa0000000075cff98))
	at xdisp.c:17157
    #80 0x0126e491 in internal_condition_case_1 (
	bfun=0x106f961 <redisplay_window_0>, arg=XIL(0xa0000000075cff98),
	handlers=XIL(0xc0000000060fffec), hfun=0x106f91e <redisplay_window_error>)	at eval.c:1509
    #81 0x0106f8e0 in redisplay_windows (window=XIL(0xa0000000075cff98))
	at xdisp.c:17137
    #82 0x0106e0e3 in redisplay_internal () at xdisp.c:16599
    #83 0x0106b8a5 in redisplay () at xdisp.c:15803
    #84 0x01171aa1 in read_char (commandflag=1, map=XIL(0xc0000000081e43c0),
	prev_event=XIL(0), used_mouse_menu=0x82f45f, end_time=0x0)
	at keyboard.c:2587
    #85 0x0118b944 in read_key_sequence (keybuf=0x82f730, prompt=XIL(0),
	dont_downcase_last=false, can_return_switch_frame=true,
	fix_current_buffer=true, prevent_redisplay=false) at keyboard.c:9970
    #86 0x0116d527 in command_loop_1 () at keyboard.c:1391
    #87 0x0126e3a7 in internal_condition_case (bfun=0x116cdfc <command_loop_1>,
	handlers=XIL(0x90), hfun=0x116bdca <cmd_error>) at eval.c:1485
    #88 0x0116c869 in command_loop_2 (handlers=XIL(0x90)) at keyboard.c:1132
    #89 0x0126d22e in internal_catch (tag=XIL(0xfdb0),
	func=0x116c832 <command_loop_2>, arg=XIL(0x90)) at eval.c:1208
    #90 0x0116c7d4 in command_loop () at keyboard.c:1110
    #91 0x0116b82a in recursive_edit_1 () at keyboard.c:719
    #92 0x0116bac8 in Frecursive_edit () at keyboard.c:802
    #93 0x01166a32 in main (argc=2, argv=0xa42910) at emacs.c:2511

    Lisp Backtrace:
    "parse-partial-sexp" (0x8276a0)
    "setq" (0x8278f0)
    "while" (0x827b30)
    "let" (0x827dd0)
    "progn" (0x827f90)
    "unwind-protect" (0x828150)
    "let" (0x8283e0)
    "font-lock-fontify-syntactically-region" (0x828570)
    "if" (0x8288c0)
    "progn" (0x828a80)
    "unwind-protect" (0x828c40)
    "let" (0x828ed0)
    "progn" (0x829090)
    "unwind-protect" (0x829250)
    "let*" (0x8294a0)
    "let" (0x829730)
    "font-lock-default-fontify-region" (0x829988)
    "funcall" (0x829980)
    "save-restriction" (0x829c40)
    "font-lock-fontify-region" (0x6870230)
    0x8202898 PVEC_COMPILED
    "run-hook-wrapped" (0x68701c0)
    "jit-lock--run-functions" (0x68700e8)
    "jit-lock-fontify-now" (0x6870048)
    "jit-lock-function" (0x82acb8)
    "redisplay_internal (C function)" (0x0)
    (gdb) fr 46
    #46 0x01273f6e in Ffuncall (nargs=4, args=0x829980) at eval.c:2953
    2953      Lisp_Object val = funcall_general (args[0], nargs - 1, args + 1);
    (gdb) p args[0]
    $1 = XIL(0x471ed74)
    (gdb) xtype
    Lisp_Symbol
    (gdb) xsym
    xsymbol      xsymname     xsymwithpos
    (gdb) xsymbol
    $2 = (struct Lisp_Symbol *) 0x5fac1b4
    "font-lock-default-fontify-region"
    (gdb) p args[1]
    $3 = make_fixnum(1)
    (gdb) p args[2]
    $4 = make_fixnum(1501)
    (gdb) fr 20
    #20 0x012751f5 in funcall_lambda (fun=XIL(0xc000000007a30fc0), nargs=3,
	arg_vector=0x828570) at eval.c:3192
    3192        val = Fprogn (XCDR (XCDR (fun)));
    (gdb) p arg_vector[0]
    $5 = make_fixnum(1)
    (gdb) p arg_vector[1]
    $6 = make_fixnum(18922366)
    (gdb) fr 44
    #44 0x012751f5 in funcall_lambda (fun=XIL(0xc0000000079da550), nargs=3,
	arg_vector=0x829988) at eval.c:3192
    3192        val = Fprogn (XCDR (XCDR (fun)));
    (gdb) p arg_vector[0]
    $7 = make_fixnum(1)
    (gdb) p arg_vector[1]
    $8 = make_fixnum(1501)
    (gdb) fr 20
    #20 0x012751f5 in funcall_lambda (fun=XIL(0xc000000007a30fc0), nargs=3,
	arg_vector=0x828570) at eval.c:3192
    3192        val = Fprogn (XCDR (XCDR (fun)));
    (gdb) p fun
    $9 = XIL(0xc000000007a30fc0)
    (gdb) xtype
    Lisp_Cons
    (gdb) pp fun
    ((jit-lock-end jit-lock-start font-lock-end font-lock-beg lazy-lock-mode fast-lock-mode t) (start end &optional loudly) "Put proper face on each string and comment between START and END.
    START should be at the beginning of a line." (syntax-propertize end) (let ((table (syntax-table)) (buffer (current-buffer))) (unwind-protect (progn (set-syntax-table (or syntax-ppss-table (syntax-table))) (if (and comment-start (not comment-end-skip)) (progn (comment-normalize-vars))) (let ((state (if (or syntax-ppss-table (not font-lock--syntax-table-affects-ppss)) (syntax-ppss start) (parse-partial-sexp (point-min) start))) face beg) (if loudly (message "Fontifying %s... (syntactically...)" (buffer-name))) (while (progn (if (or (nth 3 state) (nth 4 state)) (progn (setq face (funcall font-lock-syntactic-face-function state)) (setq beg (max (nth 8 state) start)) (setq state (parse-partial-sexp (point) end nil nil state 'syntax-table)) (if face (progn (put-text-property beg (point) 'face face))) (if (and (eq face 'font-lock-comment-face) (or font-lock-comment-start-skip comment-start-skip)) (progn (save-excursion (goto-char beg) (if (looking-at (or font-lock-comment-start-skip comment-start-skip)) (put-text-property beg (match-end 0) 'face font-lock-comment-delimiter-face))) (if (looking-back (or font-lock-comment-end-skip comment-end-skip) (point-at-bol) t) (put-text-property (match-beginning 0) (point) 'face font-lock-comment-delimiter-face)))))) (< (point) end)) (setq state (parse-partial-sexp (point) end nil nil state 'syntax-table))))) (save-current-buffer (set-buffer buffer) (set-syntax-table table)))))
    (gdb)






Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 20 Jun 2022 12:00:01 +0000
Resent-Message-ID: <handler.45898.B45898.1655726365687 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Stefan Monnier <monnier@HIDDEN>
Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.1655726365687
          (code B ref 45898); Mon, 20 Jun 2022 12:00:01 +0000
Received: (at 45898) by debbugs.gnu.org; 20 Jun 2022 11:59:25 +0000
Received: from localhost ([127.0.0.1]:54631 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o3G3r-0000Aw-Ld
	for submit <at> debbugs.gnu.org; Mon, 20 Jun 2022 07:59:25 -0400
Received: from eggs.gnu.org ([209.51.188.92]:35610)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1o3G3o-0000Aj-Ut
 for 45898 <at> debbugs.gnu.org; Mon, 20 Jun 2022 07:59:17 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:46658)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o3G3j-0002rH-Bk; Mon, 20 Jun 2022 07:59:11 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=WAuhT/PsE/t0D8fYbnd6O3F/wP1poBLKyH+d3fgxSVU=; b=ZNZS61qrkxHz
 yhuLvRcGJF85KUhqmoPa0zO+/QTWtIsTZvclUfa9IKTj4Y2j3O0W5GQ/gDxjvq/0+UPhrmhtmJvsE
 1mrekDvDr1y9sVJHgI5SK2BL90MiTMArnWAQJiMH+GdTo3I+hYVmIrN/+rWNAE6lb21cWWT0tpYf/
 z6lbn/cyab49ND+kSR9/M0+OtAhlro4y3O/LBrO6wwX2ZZCsN/n1R7HmMqH7Qq4jtiz8ZKHjD/619
 JXm0jOw5jdN6MeAFP/kU+sNIaOn+l1567p2aNyfHtOel3NaGyqhfidoXgUTlWusTgn2yvJkb9VFeB
 XX8uI6tI3jrZzHYRiR6bHw==;
Received: from [87.69.77.57] (port=2216 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o3G3h-0005yW-1O; Mon, 20 Jun 2022 07:59:11 -0400
Date: Mon, 20 Jun 2022 14:58:55 +0300
Message-Id: <835ykvmtq8.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <83iloyo0x7.fsf@HIDDEN> (message from Eli Zaretskii on Sat, 18
 Jun 2022 11:01:24 +0300)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN>
 <83a6an5jt3.fsf@HIDDEN> <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN>
 <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN>
 <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN>
 <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Ping?

Stefan, can you chime in on this?  This aspect is basically the only
reason I didn't yet land the feature on master.

> Cc: psainty@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
> Date: Sat, 18 Jun 2022 11:01:24 +0300
> From: Eli Zaretskii <eliz@HIDDEN>
> 
> > Cc: larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
> > Date: Tue, 14 Jun 2022 15:45:36 +0300
> > From: Eli Zaretskii <eliz@HIDDEN>
> > 
> > > Date: Tue, 14 Jun 2022 10:40:47 +1200
> > > From: Phil Sainty <psainty@HIDDEN>
> > > Cc: Lars Ingebrigtsen <larsi@HIDDEN>, Emacs-hacker2018@HIDDEN,
> > >  45898 <at> debbugs.gnu.org
> > > 
> > > My standard example is this file:
> > > https://github.com/Wilfred/ReVo-utilities/blob/a4bdc40dd2656c496defc461fc19c403c8306d9f/revo-export/dictionary.json?raw=true
> > > 
> > > and which is ~19MB in a single line of JSON (which normally freezes
> > > Emacs for several minutes on quite fast hardware by simply visiting the
> > > file), and which comes from this question:
> > > https://emacs.stackexchange.com/questions/598/how-do-i-prevent-extremely-long-lines-making-emacs-slow
> > > 
> > > I've also used cut-down versions of that file in testing.  I'm attaching
> > > a ~300K extract from that which is more than enough to make things 
> > > painful
> > > at the end of the line (or slow-yet-manageable with so-long enabled).
> > > 
> > > And here's an XML file of similar size and effect:
> > > wget -O long-line.xml 
> > > https://updates.drupal.org/release-history/drupal/current
> > 
> > Thanks, this is very useful.
> 
> As I keep working on this, I find several surprising reasons for slow
> redisplay, some of which are almost entirely unrelated to display code
> per se.
> 
> One surprising finding is that sometimes syntactic fontifications
> (triggered via jit-lock.el as part of rendering the buffer) seem to
> run amok: jit-lock asks the mode's fontification to fontify a
> 1500-character block, but that results in parse-partial-sexp being
> called to parse the entire humongous file, BOB to EOB.  I attach below
> a backtrace where I captured one such situation, when trying to
> display the 19MB single-line JSON file mentioned above.  As you see,
> this happens on the very first entry to the display code, when Emacs
> needs to figure out the face to use for the very first character of
> the file.  The data shows that jit-lock asked for fontification of
> buffer positions 1..1501, but parse-partial-sexp was (eventually)
> called for the entire buffer, positions 1..18922366.
> 
> Adding Stefan to the CC list.
> 
> Stefan, any idea why would js.el's syntactic fontifications cause this
> exceptional situation?  (I know how to avoid wedging Emacs even in
> this pathological case, and already have code to do that, but I think
> we should try to avoid such situations wherever we can regardless.)
> 
> Here's the backtrace I promised.  It can easily be obtained by setting
> inside scan_sexps_forward a breakpoint conditioned on FROM being a
> small value (I used "from < 1000") and END being a very large value (I
> used "and > 18000000").
> 
>     Thread 1 hit Breakpoint 2, scan_sexps_forward (state=0x827598, from=1, from_byte=1, end=18922366, targetdepth=-9223372036854775808, stopbefore=false, commentstop=-1) at syntax.c:3181
>     3181      struct level *curlevel = levelstart;
>     (gdb) bt
>     #0  scan_sexps_forward (state=0x827598, from=1, from_byte=1, end=18922366,
> 	targetdepth=-9223372036854775808, stopbefore=false, commentstop=-1)
> 	at syntax.c:3181
>     #1  0x012e3903 in Fparse_partial_sexp (from=make_fixnum(1),
> 	to=make_fixnum(18922366), targetdepth=XIL(0), stopbefore=XIL(0),
> 	oldstate=XIL(0xc00000000821af80), commentstop=XIL(0xf3f0))
> 	at syntax.c:3604
>     #2  0x0127209c in eval_sub (form=XIL(0xc000000007a2aae0)) at eval.c:2475
>     #3  0x01269e91 in Fsetq (args=XIL(0xc000000007a2aad0)) at eval.c:498
>     #4  0x012719dc in eval_sub (form=XIL(0xc000000007a2aac0)) at eval.c:2409
>     #5  0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451
>     #6  0x01269bbd in prog_ignore (body=XIL(0xc000000007a2ab90)) at eval.c:462
>     #7  0x0126cb48 in Fwhile (args=XIL(0xc000000007a30cb0)) at eval.c:1058
>     #8  0x012719dc in eval_sub (form=XIL(0xc000000007a30ca0)) at eval.c:2409
>     #9  0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451
>     #10 0x0126ca4d in Flet (args=XIL(0xc000000007a30e00)) at eval.c:1037
>     #11 0x012719dc in eval_sub (form=XIL(0xc000000007a30e10)) at eval.c:2409
>     #12 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451
>     #13 0x012719dc in eval_sub (form=XIL(0xc000000007a2a1d0)) at eval.c:2409
>     #14 0x0126d5f1 in Funwind_protect (args=XIL(0xc000000007a30e40))
> 	at eval.c:1312
>     #15 0x012719dc in eval_sub (form=XIL(0xc000000007a30e30)) at eval.c:2409
>     #16 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451
>     #17 0x0126ca4d in Flet (args=XIL(0xc000000007a30f00)) at eval.c:1037
>     #18 0x012719dc in eval_sub (form=XIL(0xc000000007a30f10)) at eval.c:2409
>     #19 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451
>     #20 0x012751f5 in funcall_lambda (fun=XIL(0xc000000007a30fc0), nargs=3,
> 	arg_vector=0x828570) at eval.c:3192
>     #21 0x012748ac in apply_lambda (fun=XIL(0xc000000007a30fd0),
> 	args=XIL(0xc000000007a1a420), count=1408) at eval.c:3062
>     #22 0x01272876 in eval_sub (form=XIL(0xc000000007a1a410)) at eval.c:2546
>     #23 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451
>     #24 0x0126987e in Fif (args=XIL(0xc0000000079dada0)) at eval.c:407
>     #25 0x012719dc in eval_sub (form=XIL(0xc0000000079dadb0)) at eval.c:2409
>     #26 0x01269b6d in Fprogn (body=XIL(0xc0000000079da950)) at eval.c:451
>     #27 0x012719dc in eval_sub (form=XIL(0xc0000000079db060)) at eval.c:2409
>     #28 0x0126d5f1 in Funwind_protect (args=XIL(0xc0000000079da980))
> 	at eval.c:1312
>     #29 0x012719dc in eval_sub (form=XIL(0xc0000000079da970)) at eval.c:2409
>     #30 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451
>     #31 0x0126ca4d in Flet (args=XIL(0xc0000000079daa40)) at eval.c:1037
>     #32 0x012719dc in eval_sub (form=XIL(0xc0000000079daa50)) at eval.c:2409
>     #33 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451
>     #34 0x012719dc in eval_sub (form=XIL(0xc0000000079daa60)) at eval.c:2409
>     #35 0x0126d5f1 in Funwind_protect (args=XIL(0xc0000000079daa90))
> 	at eval.c:1312
>     #36 0x012719dc in eval_sub (form=XIL(0xc0000000079daa80)) at eval.c:2409
>     #37 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451
>     #38 0x0126c3b6 in FletX (args=XIL(0xc0000000079da470)) at eval.c:969
>     #39 0x012719dc in eval_sub (form=XIL(0xc0000000079da480)) at eval.c:2409
>     #40 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451
>     #41 0x0126ca4d in Flet (args=XIL(0xc0000000079da4a0)) at eval.c:1037
>     #42 0x012719dc in eval_sub (form=XIL(0xc0000000079da4b0)) at eval.c:2409
>     #43 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451
>     #44 0x012751f5 in funcall_lambda (fun=XIL(0xc0000000079da550), nargs=3,
> 	arg_vector=0x829988) at eval.c:3192
>     #45 0x01273da9 in funcall_general (fun=XIL(0xc0000000079da560), numargs=3,
> 	args=0x829988) at eval.c:2915
>     #46 0x01273f6e in Ffuncall (nargs=4, args=0x829980) at eval.c:2953
>     #47 0x01271c16 in eval_sub (form=XIL(0xc0000000067e6790)) at eval.c:2428
>     #48 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451
>     #49 0x0125cbc0 in Fsave_restriction (body=XIL(0xc0000000067e66d0))
> 	at editfns.c:2826
>     #50 0x012719dc in eval_sub (form=XIL(0xc0000000067e66c0)) at eval.c:2409
>     #51 0x01269b6d in Fprogn (body=XIL(0)) at eval.c:451
>     #52 0x012751f5 in funcall_lambda (fun=XIL(0xc0000000067e6070), nargs=2,
> 	arg_vector=0x6870230) at eval.c:3192
>     #53 0x01273da9 in funcall_general (fun=XIL(0xc0000000067e6080), numargs=2,
> 	args=0x6870230) at eval.c:2915
>     #54 0x012e6f83 in exec_byte_code (fun=XIL(0xa000000008202898),
> 	args_template=257, nargs=1, args=0x68701d0) at bytecode.c:811
>     #55 0x012746fd in fetch_and_exec_byte_code (fun=XIL(0xa000000008202898),
> 	args_template=257, nargs=1, args=0x68701c8) at eval.c:3040
>     #56 0x01274c5c in funcall_lambda (fun=XIL(0xa000000008202898), nargs=1,
> 	arg_vector=0x68701c8) at eval.c:3112
>     #57 0x01273c12 in funcall_general (fun=XIL(0xa000000008202898), numargs=1,
> 	args=0x68701c8) at eval.c:2903
>     #58 0x01273f6e in Ffuncall (nargs=2, args=0x68701c0) at eval.c:2953
>     #59 0x0127305a in run_hook_wrapped_funcall (nargs=2, args=0x68701c0)
> 	at eval.c:2731
>     #60 0x01273511 in run_hook_with_args (nargs=2, args=0x68701c0,
> 	funcall=0x1273012 <run_hook_wrapped_funcall>) at eval.c:2812
>     #61 0x012730a9 in Frun_hook_wrapped (nargs=2, args=0x68701c0) at eval.c:2746
>     #62 0x012745ae in funcall_subr (subr=0x1745e40 <Srun_hook_wrapped>,
> 	numargs=2, args=0x68701c0) at eval.c:3018
>     #63 0x012e6f4f in exec_byte_code (fun=XIL(0xa000000005db0e54),
> 	args_template=514, nargs=2, args=0x68700f8) at bytecode.c:809
>     #64 0x012746fd in fetch_and_exec_byte_code (fun=XIL(0xa000000005db0824),
> 	args_template=257, nargs=1, args=0x82acb8) at eval.c:3040
>     #65 0x01274c5c in funcall_lambda (fun=XIL(0xa000000005db0824), nargs=1,
> 	arg_vector=0x82acb8) at eval.c:3112
>     #66 0x01273c12 in funcall_general (fun=XIL(0xa000000005db0824), numargs=1,
> 	args=0x82acb8) at eval.c:2903
>     #67 0x01273f6e in Ffuncall (nargs=2, args=0x82acb0) at eval.c:2953
>     #68 0x0126e681 in internal_condition_case_n (bfun=0x1273e4b <Ffuncall>,
> 	nargs=2, args=0x82acb0, handlers=XIL(0x30),
> 	hfun=0x1042523 <safe_eval_handler>) at eval.c:1565
>     #69 0x01042756 in safe__call (inhibit_quit=false, nargs=2,
> 	func=XIL(0x45233b4), ap=0x82ad74 "") at xdisp.c:3015
>     #70 0x010427cf in safe_call (nargs=2, func=XIL(0x45233b4)) at xdisp.c:3030
>     #71 0x01042823 in safe_call1 (fn=XIL(0x45233b4), arg=make_fixnum(1))
> 	at xdisp.c:3041
>     #72 0x01046576 in handle_fontified_prop (it=0x82aff8) at xdisp.c:4361
>     #73 0x01044e1d in handle_stop (it=0x82aff8) at xdisp.c:3877
>     #74 0x01051a36 in reseat (it=0x82aff8, pos=..., force_p=true) at xdisp.c:7338
>     #75 0x01044081 in init_iterator (it=0x82aff8, w=0x75cff98, charpos=1,
> 	bytepos=1, row=0x6813110, base_face_id=DEFAULT_FACE_ID) at xdisp.c:3478
>     #76 0x01044119 in start_display (it=0x82aff8, w=0x75cff98, pos=...)
> 	at xdisp.c:3494
>     #77 0x0107b6fb in try_window (window=XIL(0xa0000000075cff98), pos=...,
> 	flags=1) at xdisp.c:20158
>     #78 0x0107836d in redisplay_window (window=XIL(0xa0000000075cff98),
> 	just_this_one_p=false) at xdisp.c:19571
>     #79 0x0106f9b9 in redisplay_window_0 (window=XIL(0xa0000000075cff98))
> 	at xdisp.c:17157
>     #80 0x0126e491 in internal_condition_case_1 (
> 	bfun=0x106f961 <redisplay_window_0>, arg=XIL(0xa0000000075cff98),
> 	handlers=XIL(0xc0000000060fffec), hfun=0x106f91e <redisplay_window_error>)	at eval.c:1509
>     #81 0x0106f8e0 in redisplay_windows (window=XIL(0xa0000000075cff98))
> 	at xdisp.c:17137
>     #82 0x0106e0e3 in redisplay_internal () at xdisp.c:16599
>     #83 0x0106b8a5 in redisplay () at xdisp.c:15803
>     #84 0x01171aa1 in read_char (commandflag=1, map=XIL(0xc0000000081e43c0),
> 	prev_event=XIL(0), used_mouse_menu=0x82f45f, end_time=0x0)
> 	at keyboard.c:2587
>     #85 0x0118b944 in read_key_sequence (keybuf=0x82f730, prompt=XIL(0),
> 	dont_downcase_last=false, can_return_switch_frame=true,
> 	fix_current_buffer=true, prevent_redisplay=false) at keyboard.c:9970
>     #86 0x0116d527 in command_loop_1 () at keyboard.c:1391
>     #87 0x0126e3a7 in internal_condition_case (bfun=0x116cdfc <command_loop_1>,
> 	handlers=XIL(0x90), hfun=0x116bdca <cmd_error>) at eval.c:1485
>     #88 0x0116c869 in command_loop_2 (handlers=XIL(0x90)) at keyboard.c:1132
>     #89 0x0126d22e in internal_catch (tag=XIL(0xfdb0),
> 	func=0x116c832 <command_loop_2>, arg=XIL(0x90)) at eval.c:1208
>     #90 0x0116c7d4 in command_loop () at keyboard.c:1110
>     #91 0x0116b82a in recursive_edit_1 () at keyboard.c:719
>     #92 0x0116bac8 in Frecursive_edit () at keyboard.c:802
>     #93 0x01166a32 in main (argc=2, argv=0xa42910) at emacs.c:2511
> 
>     Lisp Backtrace:
>     "parse-partial-sexp" (0x8276a0)
>     "setq" (0x8278f0)
>     "while" (0x827b30)
>     "let" (0x827dd0)
>     "progn" (0x827f90)
>     "unwind-protect" (0x828150)
>     "let" (0x8283e0)
>     "font-lock-fontify-syntactically-region" (0x828570)
>     "if" (0x8288c0)
>     "progn" (0x828a80)
>     "unwind-protect" (0x828c40)
>     "let" (0x828ed0)
>     "progn" (0x829090)
>     "unwind-protect" (0x829250)
>     "let*" (0x8294a0)
>     "let" (0x829730)
>     "font-lock-default-fontify-region" (0x829988)
>     "funcall" (0x829980)
>     "save-restriction" (0x829c40)
>     "font-lock-fontify-region" (0x6870230)
>     0x8202898 PVEC_COMPILED
>     "run-hook-wrapped" (0x68701c0)
>     "jit-lock--run-functions" (0x68700e8)
>     "jit-lock-fontify-now" (0x6870048)
>     "jit-lock-function" (0x82acb8)
>     "redisplay_internal (C function)" (0x0)
>     (gdb) fr 46
>     #46 0x01273f6e in Ffuncall (nargs=4, args=0x829980) at eval.c:2953
>     2953      Lisp_Object val = funcall_general (args[0], nargs - 1, args + 1);
>     (gdb) p args[0]
>     $1 = XIL(0x471ed74)
>     (gdb) xtype
>     Lisp_Symbol
>     (gdb) xsym
>     xsymbol      xsymname     xsymwithpos
>     (gdb) xsymbol
>     $2 = (struct Lisp_Symbol *) 0x5fac1b4
>     "font-lock-default-fontify-region"
>     (gdb) p args[1]
>     $3 = make_fixnum(1)
>     (gdb) p args[2]
>     $4 = make_fixnum(1501)
>     (gdb) fr 20
>     #20 0x012751f5 in funcall_lambda (fun=XIL(0xc000000007a30fc0), nargs=3,
> 	arg_vector=0x828570) at eval.c:3192
>     3192        val = Fprogn (XCDR (XCDR (fun)));
>     (gdb) p arg_vector[0]
>     $5 = make_fixnum(1)
>     (gdb) p arg_vector[1]
>     $6 = make_fixnum(18922366)
>     (gdb) fr 44
>     #44 0x012751f5 in funcall_lambda (fun=XIL(0xc0000000079da550), nargs=3,
> 	arg_vector=0x829988) at eval.c:3192
>     3192        val = Fprogn (XCDR (XCDR (fun)));
>     (gdb) p arg_vector[0]
>     $7 = make_fixnum(1)
>     (gdb) p arg_vector[1]
>     $8 = make_fixnum(1501)
>     (gdb) fr 20
>     #20 0x012751f5 in funcall_lambda (fun=XIL(0xc000000007a30fc0), nargs=3,
> 	arg_vector=0x828570) at eval.c:3192
>     3192        val = Fprogn (XCDR (XCDR (fun)));
>     (gdb) p fun
>     $9 = XIL(0xc000000007a30fc0)
>     (gdb) xtype
>     Lisp_Cons
>     (gdb) pp fun
>     ((jit-lock-end jit-lock-start font-lock-end font-lock-beg lazy-lock-mode fast-lock-mode t) (start end &optional loudly) "Put proper face on each string and comment between START and END.
>     START should be at the beginning of a line." (syntax-propertize end) (let ((table (syntax-table)) (buffer (current-buffer))) (unwind-protect (progn (set-syntax-table (or syntax-ppss-table (syntax-table))) (if (and comment-start (not comment-end-skip)) (progn (comment-normalize-vars))) (let ((state (if (or syntax-ppss-table (not font-lock--syntax-table-affects-ppss)) (syntax-ppss start) (parse-partial-sexp (point-min) start))) face beg) (if loudly (message "Fontifying %s... (syntactically...)" (buffer-name))) (while (progn (if (or (nth 3 state) (nth 4 state)) (progn (setq face (funcall font-lock-syntactic-face-function state)) (setq beg (max (nth 8 state) start)) (setq state (parse-partial-sexp (point) end nil nil state 'syntax-table)) (if face (progn (put-text-property beg (point) 'face face))) (if (and (eq face 'font-lock-comment-face) (or font-lock-comment-start-skip comment-start-skip)) (progn (save-excursion (goto-char beg) (if (looking-at (or font-lock-comment-start-skip comment-start-skip)) (put-text-property beg (match-end 0) 'face font-lock-comment-delimiter-face))) (if (looking-back (or font-lock-comment-end-skip comment-end-skip) (point-at-bol) t) (put-text-property (match-beginning 0) (point) 'face font-lock-comment-delimiter-face)))))) (< (point) end)) (setq state (parse-partial-sexp (point) end nil nil state 'syntax-table))))) (save-current-buffer (set-buffer buffer) (set-syntax-table table)))))
>     (gdb)
> 
> 
> 
> 
> 
> 




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Stefan Monnier <monnier@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Mon, 20 Jun 2022 19:12:02 +0000
Resent-Message-ID: <handler.45898.B45898.165575228415092 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165575228415092
          (code B ref 45898); Mon, 20 Jun 2022 19:12:02 +0000
Received: (at 45898) by debbugs.gnu.org; 20 Jun 2022 19:11:24 +0000
Received: from localhost ([127.0.0.1]:58453 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o3Mnx-0003vI-4r
	for submit <at> debbugs.gnu.org; Mon, 20 Jun 2022 15:11:24 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:49263)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <monnier@HIDDEN>) id 1o3Mnq-0003ux-M7
 for 45898 <at> debbugs.gnu.org; Mon, 20 Jun 2022 15:11:20 -0400
Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
 by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 554751003FF;
 Mon, 20 Jun 2022 15:11:09 -0400 (EDT)
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
 by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id BA48110019F;
 Mon, 20 Jun 2022 15:11:07 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
 s=mail; t=1655752267;
 bh=bjUPB2sGJtqAozUXMLO25etbJYnG9CjBbO+AAuiCsU4=;
 h=From:To:Cc:Subject:References:Date:In-Reply-To:From;
 b=bbyHchxc68FSRjEy3+Z0iFAbNtr4LBGPgsiAXJs8u+x05GmaK44RgUcg5iX8uj8U4
 cHpOi8b1d3AqE0HgvMaGBkWJq5WGRa7hoBeHWwKCI9ssjWtcJzL2BFPCReLG514nv4
 RcRZ6suVyctN8Y51Sc9ufFDb07r6nKeDLYgY6mYlJtC5Rk+kApqGq68jJrKPxkjPBb
 4118I12FFPgwwLhl6gG5sp94HxZYmBPSmjAXDWMgUlJbv2Jet/5JmwdQmZQoOReuyF
 qvsgi63lEE5NokzCLREwqHjP51lhTkwTDYtE3VQCEHntjrsviZM0RDH80TArC1b72N
 oNwFauaYfPTFg==
Received: from alfajor (196.214.25.93.rev.sfr.net [93.25.214.196])
 by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 6EE2D120520;
 Mon, 20 Jun 2022 15:11:06 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
Message-ID: <jwvpmj3tamr.fsf-monnier+emacs@HIDDEN>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN>
 <83a6an5jt3.fsf@HIDDEN> <8335gf5er3.fsf@HIDDEN>
 <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN>
 <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN>
 <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN>
 <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN>
 <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN>
 <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <835ykvmtq8.fsf@HIDDEN>
Date: Mon, 20 Jun 2022 15:11:04 -0400
In-Reply-To: <835ykvmtq8.fsf@HIDDEN> (Eli Zaretskii's message of "Mon, 20 Jun
 2022 14:58:55 +0300")
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results:  0
 ALL_TRUSTED                -1 Passed through trusted hosts only via SMTP
 AWL 0.348 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DKIM_SIGNED               0.1 Message has a DKIM or DK signature,
 not necessarily valid
 DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
 DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
 domain T_SCC_BODY_TEXT_LINE    -0.01 -
X-SPAM-LEVEL: 
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Eli Zaretskii [2022-06-20 14:58:55] wrote:
> Stefan, can you chime in on this?  This aspect is basically the only
> reason I didn't yet land the feature on master.

Sorry, I'm out of town and rather busy, but it's near the top of my
pile, so I should get to it before the end of the week.


        Stefan





Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Tue, 21 Jun 2022 10:16:01 +0000
Resent-Message-ID: <handler.45898.B45898.165580651021237 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Stefan Monnier <monnier@HIDDEN>
Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165580651021237
          (code B ref 45898); Tue, 21 Jun 2022 10:16:01 +0000
Received: (at 45898) by debbugs.gnu.org; 21 Jun 2022 10:15:10 +0000
Received: from localhost ([127.0.0.1]:59163 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o3auY-0005WL-88
	for submit <at> debbugs.gnu.org; Tue, 21 Jun 2022 06:15:10 -0400
Received: from eggs.gnu.org ([209.51.188.92]:36030)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1o3auV-0005VU-1b
 for 45898 <at> debbugs.gnu.org; Tue, 21 Jun 2022 06:15:05 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:41736)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o3auO-0003Qe-L1; Tue, 21 Jun 2022 06:14:56 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=DlmmNS7izdlGuAWEaHCKB4Pp1CrQ4aQEWiKY3Hc08yg=; b=KY1V1z3Uvca4
 oragM7FHKBzjeL89Pd1zlz9QQ8lJ/KVoDqF9KBsFlQUbyK2nHvBJhdBwEkfx/fSetDTEsU9RctL1c
 zaMFABIyjTAHJmz+zF2BOL5SYG8fEeEbWzXSmHPu0T43obtMShUjylQGOYzWPvFE9EM24dI/LYkCP
 dZ2J7abtVaj/Kc2m90+t1Wo+A7UgTcg4e4vAwT515p5ftGd+LuCS4j3KAR1bqalVKuGotEq2BU17P
 yYA8VpdyclIeo2gcDw2F28/DX54trabS5S79upKeLngNYdfOYDO4KyxnruLWtRmNwdCDxiy0kgtbm
 hy+RKlF4wEwbDeaXFU309w==;
Received: from [87.69.77.57] (port=4967 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o3auO-0001Vy-4V; Tue, 21 Jun 2022 06:14:56 -0400
Date: Tue, 21 Jun 2022 13:14:43 +0300
Message-Id: <83h74el3vw.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <jwvpmj3tamr.fsf-monnier+emacs@HIDDEN> (message from Stefan
 Monnier on Mon, 20 Jun 2022 15:11:04 -0400)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <83bkv47evy.fsf@HIDDEN> <87k09rbcmn.fsf@HIDDEN>
 <83a6an5jt3.fsf@HIDDEN> <8335gf5er3.fsf@HIDDEN>
 <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN>
 <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN>
 <87y1y63qmq.fsf@HIDDEN> <83h74t3k5u.fsf@HIDDEN>
 <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN>
 <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN>
 <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <835ykvmtq8.fsf@HIDDEN> <jwvpmj3tamr.fsf-monnier+emacs@HIDDEN>
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Stefan Monnier <monnier@HIDDEN>
> Cc: larsi@HIDDEN,  psainty@HIDDEN,  Emacs-hacker2018@HIDDEN,
>   45898 <at> debbugs.gnu.org
> Date: Mon, 20 Jun 2022 15:11:04 -0400
> 
> Eli Zaretskii [2022-06-20 14:58:55] wrote:
> > Stefan, can you chime in on this?  This aspect is basically the only
> > reason I didn't yet land the feature on master.
> 
> Sorry, I'm out of town and rather busy, but it's near the top of my
> pile, so I should get to it before the end of the week.

Thanks.

Btw, I found that it is better to set GC threshold to a high value
while investigating this case, because for some reason (probably
related to the root cause) it produces gobs of Lisp objects, so
originally every time I interrupted Emacs I found myself in GC.  Only
after raising the threshold I saw the actual culprit.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Stefan Monnier <monnier@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Tue, 21 Jun 2022 20:40:02 +0000
Resent-Message-ID: <handler.45898.B45898.165584395017734 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: psainty@HIDDEN, Lars Ingebrigtsen <larsi@HIDDEN>, Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165584395017734
          (code B ref 45898); Tue, 21 Jun 2022 20:40:02 +0000
Received: (at 45898) by debbugs.gnu.org; 21 Jun 2022 20:39:10 +0000
Received: from localhost ([127.0.0.1]:33424 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o3keU-0004by-HJ
	for submit <at> debbugs.gnu.org; Tue, 21 Jun 2022 16:39:10 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:26556)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <monnier@HIDDEN>) id 1o3keT-0004bl-CC
 for 45898 <at> debbugs.gnu.org; Tue, 21 Jun 2022 16:39:09 -0400
Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
 by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 9A5E8100392;
 Tue, 21 Jun 2022 16:39:03 -0400 (EDT)
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
 by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 27589100182;
 Tue, 21 Jun 2022 16:39:02 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
 s=mail; t=1655843942;
 bh=97ncoPEVNL1tzgUmK6bJ/XWxpjVr5+Wo56Qy6ojff4k=;
 h=From:To:Cc:Subject:References:Date:In-Reply-To:From;
 b=Esm38gSXkp7ZOOpuZPChtM75D9E2As+Pv5n0m+YfQJcfxqI4M3uJOThmN2DGNvUgb
 5Ht1j8IMlMRZjsMEJOyjIQNcsJpErI1dbIHkX2vvF2p6/toVsvutDEJszocjxro6X8
 /P9wTSDLfXVDA11qRC7H646AN70nfFDnykRVdG3BLQggu7eynWHIwB9bSucU5yuU3n
 7E0VwbPd//8qlk6+teuF8j5A60JOVWTWXhDcd6CymaWbA/kY201cgvut4kMnMdOjFg
 9/NZnnrTcSSRkh0YKuNUK199+BPKCpc5ChMfPUk3KYbLBJbGQ/hZz6A3QOYGL9yK2Z
 og1vVz5/za4Gg==
Received: from alfajor (unknown [80.82.234.185])
 by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 3D24712047A;
 Tue, 21 Jun 2022 16:39:01 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
Message-ID: <jwv4k0du57x.fsf-monnier+emacs@HIDDEN>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN>
 <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN>
 <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN>
 <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN>
 <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN>
 <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN>
 <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN>
 <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
Date: Tue, 21 Jun 2022 16:38:59 -0400
In-Reply-To: <83iloyo0x7.fsf@HIDDEN> (Eli Zaretskii's message of "Sat, 18 Jun
 2022 11:01:24 +0300")
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results:  0
 ALL_TRUSTED                -1 Passed through trusted hosts only via SMTP
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DKIM_SIGNED               0.1 Message has a DKIM or DK signature,
 not necessarily valid
 DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
 DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
 domain T_SCC_BODY_TEXT_LINE    -0.01 -
X-SPAM-LEVEL: 
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> One surprising finding is that sometimes syntactic fontifications
> (triggered via jit-lock.el as part of rendering the buffer) seem to
> run amok: jit-lock asks the mode's fontification to fontify a
> 1500-character block, but that results in parse-partial-sexp being
> called to parse the entire humongous file, BOB to EOB.

IIUC the file is a single long-line.  Font-lock works line-by-line (in
theory major modes can override that by providing their own value for
`font-lock-extend-region-functions`, but regexp-based fontification is
hard to do with our regexp enging if not working line-by-line), so even
if jit-lock only requests fontification of a 1500-char block, font-lock
rounds it up to a whole number of lines (and then proceeds to call
`parse-partial-sexp), which would explain what you're seeing.


        Stefan





Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Wed, 22 Jun 2022 02:34:02 +0000
Resent-Message-ID: <handler.45898.B45898.165586522922051 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Stefan Monnier <monnier@HIDDEN>
Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165586522922051
          (code B ref 45898); Wed, 22 Jun 2022 02:34:02 +0000
Received: (at 45898) by debbugs.gnu.org; 22 Jun 2022 02:33:49 +0000
Received: from localhost ([127.0.0.1]:33622 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o3qBc-0005jW-G7
	for submit <at> debbugs.gnu.org; Tue, 21 Jun 2022 22:33:48 -0400
Received: from eggs.gnu.org ([209.51.188.92]:60922)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1o3qBa-0005jI-G4
 for 45898 <at> debbugs.gnu.org; Tue, 21 Jun 2022 22:33:43 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:32996)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o3qBT-0006eZ-Vc; Tue, 21 Jun 2022 22:33:35 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=QYkQ8cHBBxT7hwdA1W4ogYd1+LWajDweUscZIdvPv6Y=; b=NaUKDa4VM2qt
 dO6T1IsQInI8fg8AoKiopCh60mPIIenIe7pqsJKNeuoOLMNnB/Zx4/gaFDTRmYmLI4BrlIZfdT7Wm
 k7O7h00D0qvNUPHUh9afp/Wma1hp2SCSZVgw9GC4uW4f7uRkbnPe8TTmQm55s7vulKqu/xf9LAtt7
 T48UTc2aa4bnxs/6Gjp4XDsheG0dI+fPwP0fEyBVxzzjqQ0N6Ftf8Caxbba6pgZkkf5/Cg9ynA/dB
 32UN2G1zGelalUcUBJCH/EMoLK582KdKN3duQ2RkwmcUg2sxAiQk4qvp09aDOGXeL8T2LtwQzKa5E
 tHymk2VPxZt4iMpF+k/zgQ==;
Received: from [87.69.77.57] (port=1576 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o3qBT-00038T-F0; Tue, 21 Jun 2022 22:33:35 -0400
Date: Wed, 22 Jun 2022 05:33:24 +0300
Message-Id: <83mte5jukr.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> (message from Stefan
 Monnier on Tue, 21 Jun 2022 16:38:59 -0400)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <87h74wh9x7.fsf@HIDDEN> <83bkv47evy.fsf@HIDDEN>
 <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN>
 <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN>
 <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN>
 <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN>
 <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN>
 <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN>
 <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN>
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Stefan Monnier <monnier@HIDDEN>
> Cc: Lars Ingebrigtsen <larsi@HIDDEN>,  psainty@HIDDEN,
>   Emacs-hacker2018@HIDDEN,  45898 <at> debbugs.gnu.org
> Date: Tue, 21 Jun 2022 16:38:59 -0400
> 
> > One surprising finding is that sometimes syntactic fontifications
> > (triggered via jit-lock.el as part of rendering the buffer) seem to
> > run amok: jit-lock asks the mode's fontification to fontify a
> > 1500-character block, but that results in parse-partial-sexp being
> > called to parse the entire humongous file, BOB to EOB.
> 
> IIUC the file is a single long-line.  Font-lock works line-by-line (in
> theory major modes can override that by providing their own value for
> `font-lock-extend-region-functions`, but regexp-based fontification is
> hard to do with our regexp enging if not working line-by-line), so even
> if jit-lock only requests fontification of a 1500-char block, font-lock
> rounds it up to a whole number of lines (and then proceeds to call
> `parse-partial-sexp), which would explain what you're seeing.

Isn't there a way to limit what font-lock considers a "line" such that
it doesn't consider more than some number N of characters?  What could
potentially happen if we set N to, like, 10,000 characters?  Are you
saying that many regular expressions in font-lock-keywords are
anchored at beginning or end of a line?

And even if the regexp-based font-lock needs to do it line-by-line,
does it really _have_ to invoke parse-partial-sexp for the entire
line, when doing syntactical fontifications? why is that?




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Stefan Monnier <monnier@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Wed, 22 Jun 2022 23:40:02 +0000
Resent-Message-ID: <handler.45898.B45898.165594118416423 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165594118416423
          (code B ref 45898); Wed, 22 Jun 2022 23:40:02 +0000
Received: (at 45898) by debbugs.gnu.org; 22 Jun 2022 23:39:44 +0000
Received: from localhost ([127.0.0.1]:36848 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o49wi-0004Gk-DL
	for submit <at> debbugs.gnu.org; Wed, 22 Jun 2022 19:39:44 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:23018)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <monnier@HIDDEN>) id 1o49wU-0004GM-Ok
 for 45898 <at> debbugs.gnu.org; Wed, 22 Jun 2022 19:39:38 -0400
Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
 by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 31EE81001D2;
 Wed, 22 Jun 2022 19:39:21 -0400 (EDT)
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
 by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id A2807100427;
 Wed, 22 Jun 2022 19:39:19 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
 s=mail; t=1655941159;
 bh=Nhnhgio/rvD/KVFmSwBRMcHn2SSI6nmNw4QgsXV/B+0=;
 h=From:To:Cc:Subject:References:Date:In-Reply-To:From;
 b=dhtHXW3VznHNmh62QoV4v5M/KsaO9p+/Y1wNk0RoNJQhXn3i0r7RuTe7PDcsOUt6L
 22muRGU1LMHoq/HF8x+4t1+Exj4IH2I88jpK44IeCjglwpv/2I3woyUNo3a3eykTYm
 cdRPS2hZPtB1OHYW0mvah3Yj5fC1fJ3i3GWLYQ+nk6KhnhSBQ0Z3aINH2Q9Mq4Hqi7
 Szf54hiD2lVA9YAyysCMNp4PqeEGmL2wwiUFXYkVnSH0zriuBYYWKtutJc52Jin3V4
 EYGf+APoI+Oz+XzZvP2+WPItli91S730KoRZtEBQQkYZEDVsUtRh7XWnmf8rw6o9Xq
 tvnhenDplb5CA==
Received: from alfajor (196.214.25.93.rev.sfr.net [93.25.214.196])
 by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 1B6FE1204DE;
 Wed, 22 Jun 2022 19:39:17 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
Message-ID: <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN>
 <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN>
 <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN>
 <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN>
 <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN>
 <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN>
 <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
Date: Wed, 22 Jun 2022 19:39:14 -0400
In-Reply-To: <83mte5jukr.fsf@HIDDEN> (Eli Zaretskii's message of "Wed, 22 Jun
 2022 05:33:24 +0300")
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results:  0
 ALL_TRUSTED                -1 Passed through trusted hosts only via SMTP
 AWL 0.099 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DKIM_SIGNED               0.1 Message has a DKIM or DK signature,
 not necessarily valid
 DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
 DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
 domain T_SCC_BODY_TEXT_LINE    -0.01 -
X-SPAM-LEVEL: 
X-Spam-Score: -0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> Isn't there a way to limit what font-lock considers a "line" such that
> it doesn't consider more than some number N of characters?  What could
> potentially happen if we set N to, like, 10,000 characters?

Misfontification around that boundary.

> Are you saying that many regular expressions in font-lock-keywords are
> anchored at beginning or end of a line?

No but for example if the 10000 char boundary falls in the middle of the
word "function", then all the highlighting rules which rely on matching
the keyword "function" will fail.

> And even if the regexp-based font-lock needs to do it line-by-line,
> does it really _have_ to invoke parse-partial-sexp for the entire
> line, when doing syntactical fontifications? why is that?

AFAICT this is a call that does

    (parse-partial-sexp (point) end nil nil state 'syntax-table)

where `end` happens to be point-max (because of font-lock's rounding up
to whole lines) which will not itself parse all the way to `end` but
will instead stop at the next string/comment boundary.  This is used
(inside a loop which will indeed go all the way to `end`,
i.e. `point-max`) to highlight strings and comments (as you can see
from the stack trace, this is `font-lock-fontify-syntactically-region`).

For such huge files, it's arguably more important to be more-or-less
usable than it is to get the highlighting right, so there's a good case
for turning off font-lock or breaking it somewhat by using arbitrary
limits in the handling of `font-lock-extend-region-functions` in
`font-lock-default-fontify-region`.


        Stefan





Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Thu, 23 Jun 2022 06:09:02 +0000
Resent-Message-ID: <handler.45898.B45898.165596451313279 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Stefan Monnier <monnier@HIDDEN>
Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165596451313279
          (code B ref 45898); Thu, 23 Jun 2022 06:09:02 +0000
Received: (at 45898) by debbugs.gnu.org; 23 Jun 2022 06:08:33 +0000
Received: from localhost ([127.0.0.1]:37035 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o4G0z-0003S3-Gw
	for submit <at> debbugs.gnu.org; Thu, 23 Jun 2022 02:08:33 -0400
Received: from eggs.gnu.org ([209.51.188.92]:53104)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1o4G0w-0003Ro-QI
 for 45898 <at> debbugs.gnu.org; Thu, 23 Jun 2022 02:08:28 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:35224)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o4G0r-0007vR-8R; Thu, 23 Jun 2022 02:08:21 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=oIhKEoBpgeT9DWBb+9Sy24d0Dl9e1oGCXMFZstfYrY8=; b=C7duKHnsAm1w
 JLNuVwtL2XOl5BQ0zW2tKSKLDuWnLeDgG9gMcuD3rGkhj0HHKv5JrMNW5r5IkvQsvziDM4Wv1717f
 zJNIE8FHCl4HYFn5yyT+cxYWJuJZNmNH2XUqBdqR4LsoVNAV5IqdVYmlhtshCufz4EuJ+tj6Rww+Z
 nR8GER5B58LRiDDMUZXA4VBUfYMGnpUsy8WocMp7x7ZoycD7bWokL7chePAatKTDMICs+7jlwb3/+
 elgphokzGasvx/fDEOWlLZIkF+vII0lQA37DA8bdM24kcgz2xAzjEV104+9wWHiEb7yJ+Hg7QYcel
 vpiTmUvvqJme5Y2uS+7jFQ==;
Received: from [87.69.77.57] (port=2046 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o4G0p-0004R5-1D; Thu, 23 Jun 2022 02:08:20 -0400
Date: Thu, 23 Jun 2022 09:08:10 +0300
Message-Id: <837d57gbed.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> (message from Stefan
 Monnier on Wed, 22 Jun 2022 19:39:14 -0400)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <87k09rbcmn.fsf@HIDDEN> <83a6an5jt3.fsf@HIDDEN>
 <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN>
 <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN>
 <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN>
 <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN>
 <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN>
 <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN>
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Stefan Monnier <monnier@HIDDEN>
> Cc: larsi@HIDDEN,  psainty@HIDDEN,  Emacs-hacker2018@HIDDEN,
>   45898 <at> debbugs.gnu.org
> Date: Wed, 22 Jun 2022 19:39:14 -0400
> 
> > Isn't there a way to limit what font-lock considers a "line" such that
> > it doesn't consider more than some number N of characters?  What could
> > potentially happen if we set N to, like, 10,000 characters?
> 
> Misfontification around that boundary.
> 
> > Are you saying that many regular expressions in font-lock-keywords are
> > anchored at beginning or end of a line?
> 
> No but for example if the 10000 char boundary falls in the middle of the
> word "function", then all the highlighting rules which rely on matching
> the keyword "function" will fail.

So we value accurate fontification more than we value a usable Emacs
session?  That sounds strange to me, since fontification is basically
a nicety, in the sense that it is not necessary for the text being
readable by humans.

To put this in perspective, I'm about to land a feature which, when
activated, will sometimes produce semi-updated windows (like incorrect
position of cursor) or even completely outdated windows (where what's
on the glass doesn't necessarily reflect where we are in the text,
like if you are at EOB, but the window still shows the last portion of
buffer text).  All that is done as a means to make Emacs usable even
when you for some reason visited a file with such pathologically long
lines.  If the weird results of redisplay under that feature are
acceptable in these extreme situations, I wonder why sacrificing
accuracy of font-lock wouldn't be.

> > And even if the regexp-based font-lock needs to do it line-by-line,
> > does it really _have_ to invoke parse-partial-sexp for the entire
> > line, when doing syntactical fontifications? why is that?
> 
> AFAICT this is a call that does
> 
>     (parse-partial-sexp (point) end nil nil state 'syntax-table)
> 
> where `end` happens to be point-max (because of font-lock's rounding up
> to whole lines) which will not itself parse all the way to `end` but
> will instead stop at the next string/comment boundary.  This is used
> (inside a loop which will indeed go all the way to `end`,
> i.e. `point-max`) to highlight strings and comments (as you can see
> from the stack trace, this is `font-lock-fontify-syntactically-region`).

Yes, that's what I see.

> For such huge files, it's arguably more important to be more-or-less
> usable than it is to get the highlighting right, so there's a good case
> for turning off font-lock or breaking it somewhat by using arbitrary
> limits in the handling of `font-lock-extend-region-functions` in
> `font-lock-default-fontify-region`.

I'm talking about cases where the user visits such files without
knowing in advance that he/she has better turned off font-lock there.
I'm asking whether one of the things we could do when we discover that
parse-partial-sexp is called for such a large chunk of text could be
automatic introduction of such a limit only for that buffer, so that
font-lock won't be such a significant part of the reason for redisplay
slowness in these cases.

Also, can you tell why visiting the same file in Text mode doesn't
produce the same effect?  I guess this is related to font-lock
settings of js.el, but my question is: would any mode that uses
syntactic fontification be similarly affected, or is there anything
special with js.el specifically?  IOW, is the above tendency to scan
everything to the end of line inherent in syntactic fontifications?

Thanks.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Stefan Monnier <monnier@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Thu, 23 Jun 2022 21:16:01 +0000
Resent-Message-ID: <handler.45898.B45898.165601890428198 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165601890428198
          (code B ref 45898); Thu, 23 Jun 2022 21:16:01 +0000
Received: (at 45898) by debbugs.gnu.org; 23 Jun 2022 21:15:04 +0000
Received: from localhost ([127.0.0.1]:40121 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o4UAJ-0007Kj-SH
	for submit <at> debbugs.gnu.org; Thu, 23 Jun 2022 17:15:04 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:11670)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <monnier@HIDDEN>) id 1o4UAH-0007Jn-Bf
 for 45898 <at> debbugs.gnu.org; Thu, 23 Jun 2022 17:15:03 -0400
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
 by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id C02BA8076B;
 Thu, 23 Jun 2022 17:14:55 -0400 (EDT)
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
 by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id D080B80636;
 Thu, 23 Jun 2022 17:14:53 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
 s=mail; t=1656018893;
 bh=NcW1Cqd05y3At0xiggvdzBLdflBXRI0WKcz4CfG+k6E=;
 h=From:To:Cc:Subject:References:Date:In-Reply-To:From;
 b=FYyV2Cha7yEXP8Pfrebl6Mfhbs9ScrKNE00+mtB+XDyAO4y27rXK7ckJUndU0vxJ8
 fv+nnmLdmZdV/H/9+BEu8LNoF/6QbQrRHSW3jCoaDRI2PwOSwudgFL3nZAXmfSfxrP
 wnHA5XJjTbC/3foG/FOBwmQ17PCxB6S45af66z7OQDE+0AZVhcDLGyro9GRkIIHrS8
 V6cDDxjzJ7sLx2rwQYwPwuZoldk7LLJ30Y98XdAOMWryM61rdSNtgqwhZFNKPjUdWt
 sqm6/DoKNuCgRwOU/dQYEF+eYOYEAfGLoRHLksW3yKyqS1FIVXo+/W1BL89EEHLIr8
 bAMC/0YqI9VUA==
Received: from alfajor (196.214.25.93.rev.sfr.net [93.25.214.196])
 by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id D67C2120346;
 Thu, 23 Jun 2022 17:14:52 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
Message-ID: <jwvk097oznl.fsf-monnier+emacs@HIDDEN>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN>
 <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN>
 <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN>
 <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN>
 <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN>
 <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN>
Date: Thu, 23 Jun 2022 17:14:50 -0400
In-Reply-To: <837d57gbed.fsf@HIDDEN> (Eli Zaretskii's message of "Thu, 23 Jun
 2022 09:08:10 +0300")
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results:  0
 ALL_TRUSTED                -1 Passed through trusted hosts only via SMTP
 AWL 0.050 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DKIM_SIGNED               0.1 Message has a DKIM or DK signature,
 not necessarily valid
 DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
 DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
 domain T_SCC_BODY_TEXT_LINE    -0.01 -
X-SPAM-LEVEL: 
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

>> > Are you saying that many regular expressions in font-lock-keywords are
>> > anchored at beginning or end of a line?
>> No but for example if the 10000 char boundary falls in the middle of the
>> word "function", then all the highlighting rules which rely on matching
>> the keyword "function" will fail.
> So we value accurate fontification more than we value a usable Emacs
> session?

There was no value judgment in my answer :-)

>> For such huge files, it's arguably more important to be more-or-less
>> usable than it is to get the highlighting right, so there's a good case
>> for turning off font-lock or breaking it somewhat by using arbitrary
>> limits in the handling of `font-lock-extend-region-functions` in
>> `font-lock-default-fontify-region`.
> I'm talking about cases where the user visits such files without
> knowing in advance that he/she has better turned off font-lock there.
> I'm asking whether one of the things we could do when we discover that
> parse-partial-sexp is called for such a large chunk of text could be
> automatic introduction of such a limit only for that buffer, so that
> font-lock won't be such a significant part of the reason for redisplay
> slowness in these cases.

Yes, that's exactly what I'm proposing in the paragraph you quoted.
I think it makes sense to bound the growth of the region due to
`font-lock-extend-region-functions`.  We could bound it where we handle
`font-lock-extend-region-functions`, or we could bound it just inside
`font-lock-extend-region-wholelines`.

> Also, can you tell why visiting the same file in Text mode doesn't
> produce the same effect?

Probably because it doesn't setup font-lock mode?

> I guess this is related to font-lock
> settings of js.el, but my question is: would any mode that uses
> syntactic fontification be similarly affected, or is there anything
> special with js.el specifically?

I think pretty much any major mode would be affected.  It can be more or
less severe depending on how much work is done inside
`font-lock-keywords` (and `syntax-propertize`), but by and large I'd
expect it to suck for all non-trivial modes.


        Stefan





Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Fri, 24 Jun 2022 07:58:01 +0000
Resent-Message-ID: <handler.45898.B45898.16560574702056 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Stefan Monnier <monnier@HIDDEN>, Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.16560574702056
          (code B ref 45898); Fri, 24 Jun 2022 07:58:01 +0000
Received: (at 45898) by debbugs.gnu.org; 24 Jun 2022 07:57:50 +0000
Received: from localhost ([127.0.0.1]:40772 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o4eCH-0000X0-TU
	for submit <at> debbugs.gnu.org; Fri, 24 Jun 2022 03:57:50 -0400
Received: from eggs.gnu.org ([209.51.188.92]:47084)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1o4eCG-0000Wn-30
 for 45898 <at> debbugs.gnu.org; Fri, 24 Jun 2022 03:57:45 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:57088)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o4eC9-0000MM-Fk; Fri, 24 Jun 2022 03:57:37 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=Uney4jInQD4p4RcF97rygenzV0sANH2uEjQOE/3ck3c=; b=NP44hifEvcPeIWG8e3FL
 7Cl3VSkQHdxF+kgNQp+EA9scmw6WqiB7sdWZEysnYOdozmo/FeGP6+1zWPnc4r4KeHDM7iKxlIYMF
 glg4LfXNSF2kfNVMY3Lef6u1Yg5L4vtFanMicbVnhyMxvBRXyfggSnbhHf4sUV0xMHNj33ZlmOlfh
 M7ib8OrjMsrYEHRk6yztLLaMUz0TD5H1ck28Ce+3g87RtGauiquUUY3wDXW8xzZ2VnzdaRO8yXd7W
 kj/loTmYXYnXlIxXS3WkCc1XbldK7cHljG57bQ1jCOnxpnEFCq7LvctyWZQos4nkwnMgR3djzrtas
 2DFhP+phlwoNHg==;
Received: from [87.69.77.57] (port=2524 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o4eC8-0004EH-VM; Fri, 24 Jun 2022 03:57:37 -0400
Date: Fri, 24 Jun 2022 10:57:30 +0300
Message-Id: <83o7yicx3p.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <jwvk097oznl.fsf-monnier+emacs@HIDDEN> (message from Stefan
 Monnier on Thu, 23 Jun 2022 17:14:50 -0400)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN>
 <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN>
 <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN>
 <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN>
 <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN>
 <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN>
 <jwvk097oznl.fsf-monnier+emacs@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Stefan Monnier <monnier@HIDDEN>
> Cc: larsi@HIDDEN,  psainty@HIDDEN,  Emacs-hacker2018@HIDDEN,
>   45898 <at> debbugs.gnu.org
> Date: Thu, 23 Jun 2022 17:14:50 -0400
> 
> >> For such huge files, it's arguably more important to be more-or-less
> >> usable than it is to get the highlighting right, so there's a good case
> >> for turning off font-lock or breaking it somewhat by using arbitrary
> >> limits in the handling of `font-lock-extend-region-functions` in
> >> `font-lock-default-fontify-region`.
> > I'm talking about cases where the user visits such files without
> > knowing in advance that he/she has better turned off font-lock there.
> > I'm asking whether one of the things we could do when we discover that
> > parse-partial-sexp is called for such a large chunk of text could be
> > automatic introduction of such a limit only for that buffer, so that
> > font-lock won't be such a significant part of the reason for redisplay
> > slowness in these cases.
> 
> Yes, that's exactly what I'm proposing in the paragraph you quoted.
> I think it makes sense to bound the growth of the region due to
> `font-lock-extend-region-functions`.  We could bound it where we handle
> `font-lock-extend-region-functions`, or we could bound it just inside
> `font-lock-extend-region-wholelines`.

I hope this will be done soon.

I've landed the feature on master, let me know (everyone, not just
Stefan) how it fares.

Gerd, your comments will be most appreciated, TIA.

> > I guess this is related to font-lock
> > settings of js.el, but my question is: would any mode that uses
> > syntactic fontification be similarly affected, or is there anything
> > special with js.el specifically?
> 
> I think pretty much any major mode would be affected.  It can be more or
> less severe depending on how much work is done inside
> `font-lock-keywords` (and `syntax-propertize`), but by and large I'd
> expect it to suck for all non-trivial modes.

For now, you will see that the code I installed "punishes" syntax.c
for exploring too many character positions, hope this is "good enough"
for the relevant pathological situations.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Sat, 25 Jun 2022 04:55:01 +0000
Resent-Message-ID: <handler.45898.B45898.165613287131408 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165613287131408
          (code B ref 45898); Sat, 25 Jun 2022 04:55:01 +0000
Received: (at 45898) by debbugs.gnu.org; 25 Jun 2022 04:54:31 +0000
Received: from localhost ([127.0.0.1]:43961 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o4xoV-0008AW-9u
	for submit <at> debbugs.gnu.org; Sat, 25 Jun 2022 00:54:31 -0400
Received: from mail-ej1-f54.google.com ([209.85.218.54]:36742)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <gerd.moellmann@HIDDEN>) id 1o4xoT-0008AI-BA
 for 45898 <at> debbugs.gnu.org; Sat, 25 Jun 2022 00:54:30 -0400
Received: by mail-ej1-f54.google.com with SMTP id cw10so8512807ejb.3
 for <45898 <at> debbugs.gnu.org>; Fri, 24 Jun 2022 21:54:29 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;
 h=from:message-id:mime-version:subject:date:in-reply-to:cc:to
 :references; bh=nMtFVa9iawBoDQw3SFamxsCuCvS19ycipz1/F8oGZ84=;
 b=ZM7TVQRPlq0IvGE+ippO5qC3JcF9xr6KAxPCT8gnPy+a54bUQ3QmVUiDlNd9J2iiQC
 NhbqcChdBe2Tb5tZQmwaU/cmL31eG7/XT5h1hdNhOgwH5AcNyLQihkxQOiXV0nBOjj7S
 E1gAsNExMjMMSKVg9IVFGrzHfyQjeNUr8QiHYg/YXUaWw+TmJrSSx8RoQBrr+d5oVPTN
 kzEeiy6DFarIPo5kYWzgHpZ2ZK6w82QSieJRWjo+bgbun/MBwGEvIZ/t6n7BKuuFeOmg
 /oQEXY5pIzYt8siPgQJ0bfdg/jAjD1xzEqzyGqp+4wYghiA8hfGxOJ4zaCZMc1kpfTuC
 smig==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112;
 h=x-gm-message-state:from:message-id:mime-version:subject:date
 :in-reply-to:cc:to:references;
 bh=nMtFVa9iawBoDQw3SFamxsCuCvS19ycipz1/F8oGZ84=;
 b=O2e6cbOsjod2e/0qa6ij1DjD+igZJenECBkYi/Z28Xdki+2EmG2g6Ck63kXVApxqAD
 Dr9HfCNFV07Iw/BKz8EnRhT4eS/5cKTNzbcVgFKUZKWAOzn5uxUdNTO8lzqUYxuJFTOE
 RTxk29YthVmekK/pzvtiusc4oWoWvogEbFNhBVfja6fhcQqK4xTHkDKZCQFvKFj3vVWj
 dzMEBfZDXJAxQjRbasmgmcJ3G92pJeNFCneuHp2Y4QVNJMLoOStoa5ev6gHmU5+MM9gh
 A6Bt2l5lNudYforjvERyUiMxVVsGnl104FOZuBZRZGxWDtWty78emRBt3SipVosK5yk+
 XGOA==
X-Gm-Message-State: AJIora99gF39Re7bCdJabU/LU0ni3UX4gZxrCPMJEjpnaFMRVMfzBC6J
 PhBNvqtP0cU5iwrlwFLoQFE=
X-Google-Smtp-Source: AGRyM1vDXDhwp6GI6MlNxqTMFuxxHUJUPJsXamfDJ0mSc1hlStNQuGOselkJV03/FtQP8/65SQm7Pg==
X-Received: by 2002:a17:906:530b:b0:722:e9ad:e90 with SMTP id
 h11-20020a170906530b00b00722e9ad0e90mr2340278ejo.676.1656132862907; 
 Fri, 24 Jun 2022 21:54:22 -0700 (PDT)
Received: from smtpclient.apple (p4fe3a040.dip0.t-ipconnect.de.
 [79.227.160.64]) by smtp.gmail.com with ESMTPSA id
 hb10-20020a170906b88a00b007266185ca67sm107917ejb.150.2022.06.24.21.54.21
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Fri, 24 Jun 2022 21:54:22 -0700 (PDT)
From: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Message-Id: <0B5FE52E-BC81-4A05-86F1-91C6AFCB6F7D@HIDDEN>
Content-Type: multipart/alternative;
 boundary="Apple-Mail=_4C868E66-B48E-4883-B336-437361CDAF3E"
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.100.31\))
Date: Sat, 25 Jun 2022 06:54:19 +0200
In-Reply-To: <83o7yicx3p.fsf@HIDDEN>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN>
 <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN>
 <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN>
 <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN>
 <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN>
 <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN>
X-Mailer: Apple Mail (2.3696.100.31)
X-Spam-Score: -0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)


--Apple-Mail=_4C868E66-B48E-4883-B336-437361CDAF3E
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8



> On 2022-06-24,, at 9:57 , Eli Zaretskii <eliz@HIDDEN> wrote:
>=20
>=20
> Gerd, your comments will be most appreciated, TIA.
>=20

I didn=E2=80=99t read the whole thread in the bug report, but i think I =
understand the gist of the matter, from our recent conversation, and =
from reading the change set.=20

I think it helps me in the following when I briefly describe the model =
of Emacs=E2=80=99 internals I have in my head.  That way, I can write =
about things in terms in which I think.  So, let me try.  When I think =
of Emacs' design, I think of functions and categories they belong to.  =
Categories in the sense of animal, dog, human, plant.   A bit like =
modules, but not quite, but if it=E2=80=99s helpful, just think of =
modules instead.=20

The categories I'd like to use here, are lisp, redisplay, iterator, =
update, regexp.   I leave the rest out. Here is what I group under these =
categories:

Lisp
	Eval, funcall
	API for buffers, windows, etc
	...
Iterator
	Walk over text in display order (including  bidi, display =
strings)
	Determine current character, image
	Keep track of pixel (x y w h)
	(x y) <-> text position computation
Redisplay
	Produce desired glyphs=20
	Produce as few as possible (optimizations)
Update
	Bring desired glyphs to the screen
Regexp=20
	Matching and searching support

That=E2=80=99s why I=E2=80=99m sometimes slow when redisplay is used for =
what I call iterator.=20
If -> denotes "uses", or "calls into", we have

Lisp=20
	-> iterator in (x y) <-> text pos=20
	-> regexp=20
	-> redisplay (I think, Fredisplay?)
Redisplay=20
	-> iterator=20
	-> lisp (hooks)
Iterator
	-> Lisp (eval funcall hooks)
Update=20
	-> maybe hook, I don=E2=80=99t remember
Regexp=20
	-> lisp, I=E2=80=99ve heard

Very roughly, and much too long, sorry for that.

What I so far understand about your design, and i haven't looked at =
details:

One of the first things that came to my mind is a new category "time =
fuse" (in German Zeitz=C3=BCnder), something counting ticks, and =
detonating (signaling) at some point.  I admit that I find the names you =
used with redisplay in them confusing.  Especially in the regexp code =
and so.

Functionality-wise, Iterator now signals an error that redisplay =
catches.=20

The error is signaled when a global tick counter exceeds a max value.  =
Each movement of an iterator increments the global tick counter.  The =
counter is global because you want to sum up all the ticks that occur =
between a given start point where the tick counter is set to 0, and the =
point where the ticks exceed the maximum, regardless of iterator -> lisp =
-> iterator nesting.

The global tick counter is also incremented from regexp.  I think =
font-lock plays a role here.  One scenario is redisplay or lisp -> =
iterator, iterator needs font-lock to run (-> lisp), font-lock matches a =
regexp (lisp -> regexp), and we get stuck on a long line.  Likewise with =
other stuff, like syntax.

Good.

(BTW, the call to update the tick in regexp can lead to a GC when the =
error is signaled, in the same way as in bug 56108 with maybe_quit.  So =
we might need that, too.)

Maybe we could disable the calls cheaply when max-ticks is 0?  I mean, =
something that inlines

	if (max_ticks > 0)
          update_ticks(...)

I would have a better gut feeling in that case, wrt older machines.  Not =
that I notice a slowdown on my machine, but I'm building with ASan =
enabled, so everything is kinda slow anyway.

The meaning of display_working_on_window_p is not clear to me.  I see =
what setting it does in the end, but I can't tell what this means:

/* True while some display-engine code is working on layout of some
   window.

Probably good.

Do you want me to take a deeper look at specific places?



--Apple-Mail=_4C868E66-B48E-4883-B336-437361CDAF3E
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=utf-8

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; =
charset=3Dutf-8"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; line-break: after-white-space;" class=3D""><br =
class=3D""><div><br class=3D""><blockquote type=3D"cite" class=3D""><div =
class=3D"">On 2022-06-24,, at 9:57 , Eli Zaretskii &lt;<a =
href=3D"mailto:eliz@HIDDEN" class=3D"">eliz@HIDDEN</a>&gt; =
wrote:</div><br class=3D"Apple-interchange-newline"><div class=3D""><div =
class=3D""><br class=3D"">Gerd, your comments will be most appreciated, =
TIA.<br class=3D""><br class=3D""></div></div></blockquote><br =
class=3D""></div><div><div style=3D"margin: 0px; font-stretch: normal; =
font-size: 13px; line-height: normal; font-family: &quot;Helvetica =
Neue&quot;;" class=3D"">I didn=E2=80=99t read the whole thread in the =
bug report, but i think I understand the gist of the matter, from our =
recent conversation, and from reading the change set.&nbsp;</div><div =
style=3D"margin: 0px; font-stretch: normal; font-size: 13px; =
line-height: normal; font-family: &quot;Helvetica Neue&quot;; =
min-height: 15px;" class=3D""><br class=3D""></div><div style=3D"margin: =
0px; font-stretch: normal; font-size: 13px; line-height: normal; =
font-family: &quot;Helvetica Neue&quot;;" class=3D"">I think it helps me =
in the following when I briefly describe the model of Emacs=E2=80=99 =
internals I have in my head.&nbsp; That way, I can write about things in =
terms in which I think.&nbsp; So, let me try.&nbsp; When I think of =
Emacs' design, I think of functions and categories they belong to.&nbsp; =
Categories in the sense of animal, dog, human, plant. &nbsp; A bit like =
modules, but not quite, but if it=E2=80=99s helpful, just think of =
modules instead.&nbsp;</div><div style=3D"margin: 0px; font-stretch: =
normal; font-size: 13px; line-height: normal; font-family: =
&quot;Helvetica Neue&quot;; min-height: 15px;" class=3D""><br =
class=3D""></div><div style=3D"margin: 0px; font-stretch: normal; =
font-size: 13px; line-height: normal; font-family: &quot;Helvetica =
Neue&quot;;" class=3D"">The categories I'd like to use here, are lisp, =
redisplay, iterator, update, regexp. &nbsp; I leave the rest out. Here =
is what I group under these categories:</div><div style=3D"margin: 0px; =
font-stretch: normal; font-size: 13px; line-height: normal; font-family: =
&quot;Helvetica Neue&quot;; min-height: 15px;" class=3D""><br =
class=3D""></div><div style=3D"margin: 0px; font-stretch: normal; =
font-size: 13px; line-height: normal; font-family: &quot;Helvetica =
Neue&quot;;" class=3D"">Lisp</div><div style=3D"margin: 0px; =
font-stretch: normal; font-size: 13px; line-height: normal; font-family: =
&quot;Helvetica Neue&quot;;" class=3D""><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>Eval, funcall</div><div =
style=3D"margin: 0px; font-stretch: normal; font-size: 13px; =
line-height: normal; font-family: &quot;Helvetica Neue&quot;;" =
class=3D""><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>API for buffers, windows, etc</div><div style=3D"margin: 0px; =
font-stretch: normal; font-size: 13px; line-height: normal; font-family: =
&quot;Helvetica Neue&quot;;" class=3D""><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>...</div><div style=3D"margin: =
0px; font-stretch: normal; font-size: 13px; line-height: normal; =
font-family: &quot;Helvetica Neue&quot;;" class=3D"">Iterator</div><div =
style=3D"margin: 0px; font-stretch: normal; font-size: 13px; =
line-height: normal; font-family: &quot;Helvetica Neue&quot;;" =
class=3D""><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>Walk over text in display order (including&nbsp; bidi, display =
strings)</div><div style=3D"margin: 0px; font-stretch: normal; =
font-size: 13px; line-height: normal; font-family: &quot;Helvetica =
Neue&quot;;" class=3D""><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>Determine current character, =
image</div><div style=3D"margin: 0px; font-stretch: normal; font-size: =
13px; line-height: normal; font-family: &quot;Helvetica Neue&quot;;" =
class=3D""><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>Keep track of pixel (x y w h)</div><div style=3D"margin: 0px; =
font-stretch: normal; font-size: 13px; line-height: normal; font-family: =
&quot;Helvetica Neue&quot;;" class=3D""><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>(x y) &lt;-&gt; text position =
computation</div><div style=3D"margin: 0px; font-stretch: normal; =
font-size: 13px; line-height: normal; font-family: &quot;Helvetica =
Neue&quot;;" class=3D"">Redisplay</div><div style=3D"margin: 0px; =
font-stretch: normal; font-size: 13px; line-height: normal; font-family: =
&quot;Helvetica Neue&quot;;" class=3D""><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>Produce desired =
glyphs&nbsp;</div><div style=3D"margin: 0px; font-stretch: normal; =
font-size: 13px; line-height: normal; font-family: &quot;Helvetica =
Neue&quot;;" class=3D""><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>Produce as few as possible =
(optimizations)</div><div style=3D"margin: 0px; font-stretch: normal; =
font-size: 13px; line-height: normal; font-family: &quot;Helvetica =
Neue&quot;;" class=3D"">Update</div><div style=3D"margin: 0px; =
font-stretch: normal; font-size: 13px; line-height: normal; font-family: =
&quot;Helvetica Neue&quot;;" class=3D""><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>Bring desired glyphs to the =
screen</div><div style=3D"margin: 0px; font-stretch: normal; font-size: =
13px; line-height: normal; font-family: &quot;Helvetica Neue&quot;;" =
class=3D"">Regexp&nbsp;</div><div style=3D"margin: 0px; font-stretch: =
normal; font-size: 13px; line-height: normal; font-family: =
&quot;Helvetica Neue&quot;;" class=3D""><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>Matching and searching =
support</div><div style=3D"margin: 0px; font-stretch: normal; font-size: =
13px; line-height: normal; font-family: &quot;Helvetica Neue&quot;; =
min-height: 15px;" class=3D""><br class=3D""></div><div style=3D"margin: =
0px; font-stretch: normal; font-size: 13px; line-height: normal; =
font-family: &quot;Helvetica Neue&quot;;" class=3D"">That=E2=80=99s why =
I=E2=80=99m sometimes slow when redisplay is used for what I call =
iterator.&nbsp;</div><div style=3D"margin: 0px; font-stretch: normal; =
font-size: 13px; line-height: normal; font-family: &quot;Helvetica =
Neue&quot;;" class=3D"">If -&gt; denotes "uses", or "calls into", we =
have</div><div style=3D"margin: 0px; font-stretch: normal; font-size: =
13px; line-height: normal; font-family: &quot;Helvetica Neue&quot;; =
min-height: 15px;" class=3D""><br class=3D""></div><div style=3D"margin: =
0px; font-stretch: normal; font-size: 13px; line-height: normal; =
font-family: &quot;Helvetica Neue&quot;;" class=3D"">Lisp&nbsp;</div><div =
style=3D"margin: 0px; font-stretch: normal; font-size: 13px; =
line-height: normal; font-family: &quot;Helvetica Neue&quot;;" =
class=3D""><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>-&gt; iterator in (x y) &lt;-&gt; text pos&nbsp;</div><div =
style=3D"margin: 0px; font-stretch: normal; font-size: 13px; =
line-height: normal; font-family: &quot;Helvetica Neue&quot;;" =
class=3D""><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>-&gt; regexp&nbsp;</div><div style=3D"margin: 0px; font-stretch: =
normal; font-size: 13px; line-height: normal; font-family: =
&quot;Helvetica Neue&quot;;" class=3D""><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>-&gt; redisplay (I think, =
Fredisplay?)</div><div style=3D"margin: 0px; font-stretch: normal; =
font-size: 13px; line-height: normal; font-family: &quot;Helvetica =
Neue&quot;;" class=3D"">Redisplay&nbsp;</div><div style=3D"margin: 0px; =
font-stretch: normal; font-size: 13px; line-height: normal; font-family: =
&quot;Helvetica Neue&quot;;" class=3D""><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>-&gt; iterator&nbsp;</div><div =
style=3D"margin: 0px; font-stretch: normal; font-size: 13px; =
line-height: normal; font-family: &quot;Helvetica Neue&quot;;" =
class=3D""><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>-&gt; lisp (hooks)</div><div style=3D"margin: 0px; font-stretch: =
normal; font-size: 13px; line-height: normal; font-family: =
&quot;Helvetica Neue&quot;;" class=3D"">Iterator</div><div =
style=3D"margin: 0px; font-stretch: normal; font-size: 13px; =
line-height: normal; font-family: &quot;Helvetica Neue&quot;;" =
class=3D""><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>-&gt; Lisp (eval funcall hooks)</div><div style=3D"margin: 0px; =
font-stretch: normal; font-size: 13px; line-height: normal; font-family: =
&quot;Helvetica Neue&quot;;" class=3D"">Update&nbsp;</div><div =
style=3D"margin: 0px; font-stretch: normal; font-size: 13px; =
line-height: normal; font-family: &quot;Helvetica Neue&quot;;" =
class=3D""><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>-&gt; maybe hook, I don=E2=80=99t remember</div><div =
style=3D"margin: 0px; font-stretch: normal; font-size: 13px; =
line-height: normal; font-family: &quot;Helvetica Neue&quot;;" =
class=3D"">Regexp&nbsp;</div><div style=3D"margin: 0px; font-stretch: =
normal; font-size: 13px; line-height: normal; font-family: =
&quot;Helvetica Neue&quot;;" class=3D""><span class=3D"Apple-tab-span" =
style=3D"white-space:pre">	</span>-&gt; lisp, I=E2=80=99ve =
heard</div><div style=3D"margin: 0px; font-stretch: normal; font-size: =
13px; line-height: normal; font-family: &quot;Helvetica Neue&quot;; =
min-height: 15px;" class=3D""><br class=3D""></div><div style=3D"margin: =
0px; font-stretch: normal; font-size: 13px; line-height: normal; =
font-family: &quot;Helvetica Neue&quot;;" class=3D"">Very roughly, and =
much too long, sorry for that.</div><div style=3D"margin: 0px; =
font-stretch: normal; font-size: 13px; line-height: normal; font-family: =
&quot;Helvetica Neue&quot;; min-height: 15px;" class=3D""><br =
class=3D""></div><div style=3D"margin: 0px; font-stretch: normal; =
font-size: 13px; line-height: normal; font-family: &quot;Helvetica =
Neue&quot;;" class=3D"">What I so far understand about your design, and =
i haven't looked at details:</div><div style=3D"margin: 0px; =
font-stretch: normal; font-size: 13px; line-height: normal; font-family: =
&quot;Helvetica Neue&quot;; min-height: 15px;" class=3D""><br =
class=3D""></div><div style=3D"margin: 0px; font-stretch: normal; =
font-size: 13px; line-height: normal; font-family: &quot;Helvetica =
Neue&quot;;" class=3D"">One of the first things that came to my mind is =
a new category "time fuse" (in German Zeitz=C3=BCnder), something =
counting ticks, and detonating (signaling) at some point.&nbsp; I admit =
that I find the names you used with redisplay in them confusing.&nbsp; =
Especially in the regexp code and so.</div><div style=3D"margin: 0px; =
font-stretch: normal; font-size: 13px; line-height: normal; font-family: =
&quot;Helvetica Neue&quot;; min-height: 15px;" class=3D""><br =
class=3D""></div><div style=3D"margin: 0px; font-stretch: normal; =
font-size: 13px; line-height: normal; font-family: &quot;Helvetica =
Neue&quot;;" class=3D"">Functionality-wise, Iterator now signals an =
error that redisplay catches.&nbsp;</div><div style=3D"margin: 0px; =
font-stretch: normal; font-size: 13px; line-height: normal; font-family: =
&quot;Helvetica Neue&quot;; min-height: 15px;" class=3D""><br =
class=3D""></div><div style=3D"margin: 0px; font-stretch: normal; =
font-size: 13px; line-height: normal; font-family: &quot;Helvetica =
Neue&quot;;" class=3D"">The error is signaled when a global tick counter =
exceeds a max value.&nbsp; Each movement of an iterator increments the =
global tick counter.&nbsp; The counter is global because you want to sum =
up all the ticks that occur between a given start point where the tick =
counter is set to 0, and the point where the ticks exceed the maximum, =
regardless of iterator -&gt; lisp -&gt; iterator nesting.</div><div =
style=3D"margin: 0px; font-stretch: normal; font-size: 13px; =
line-height: normal; font-family: &quot;Helvetica Neue&quot;; =
min-height: 15px;" class=3D""><br class=3D""></div><div style=3D"margin: =
0px; font-stretch: normal; font-size: 13px; line-height: normal; =
font-family: &quot;Helvetica Neue&quot;;" class=3D"">The global tick =
counter is also incremented from regexp.&nbsp; I think font-lock plays a =
role here.&nbsp; One scenario is redisplay or lisp -&gt; iterator, =
iterator needs font-lock to run (-&gt; lisp), font-lock matches a regexp =
(lisp -&gt; regexp), and we get stuck on a long line.&nbsp; Likewise =
with other stuff, like syntax.</div><div style=3D"margin: 0px; =
font-stretch: normal; font-size: 13px; line-height: normal; font-family: =
&quot;Helvetica Neue&quot;; min-height: 15px;" class=3D""><br =
class=3D""></div><div style=3D"margin: 0px; font-stretch: normal; =
font-size: 13px; line-height: normal; font-family: &quot;Helvetica =
Neue&quot;;" class=3D"">Good.</div><div style=3D"margin: 0px; =
font-stretch: normal; font-size: 13px; line-height: normal; font-family: =
&quot;Helvetica Neue&quot;; min-height: 15px;" class=3D""><br =
class=3D""></div><div style=3D"margin: 0px; font-stretch: normal; =
font-size: 13px; line-height: normal; font-family: &quot;Helvetica =
Neue&quot;;" class=3D"">(BTW, the call to update the tick in regexp can =
lead to a GC when the error is signaled, in the same way as in bug 56108 =
with maybe_quit.&nbsp; So we might need that, too.)</div><div =
style=3D"margin: 0px; font-stretch: normal; font-size: 13px; =
line-height: normal; font-family: &quot;Helvetica Neue&quot;; =
min-height: 15px;" class=3D""><br class=3D""></div><div style=3D"margin: =
0px; font-stretch: normal; font-size: 13px; line-height: normal; =
font-family: &quot;Helvetica Neue&quot;;" class=3D"">Maybe we could =
disable the calls cheaply when max-ticks is 0?&nbsp; I mean, something =
that inlines</div><div style=3D"margin: 0px; font-stretch: normal; =
font-size: 13px; line-height: normal; font-family: &quot;Helvetica =
Neue&quot;; min-height: 15px;" class=3D""><br class=3D""></div><div =
style=3D"margin: 0px; font-stretch: normal; font-size: 13px; =
line-height: normal; font-family: &quot;Helvetica Neue&quot;;" =
class=3D""><span class=3D"Apple-tab-span" style=3D"white-space:pre">	=
</span>if (max_ticks &gt; 0)</div><div style=3D"margin: 0px; =
font-stretch: normal; font-size: 13px; line-height: normal; font-family: =
&quot;Helvetica Neue&quot;;" class=3D"">&nbsp; &nbsp; &nbsp; &nbsp; =
&nbsp; update_ticks(...)</div><div style=3D"margin: 0px; font-stretch: =
normal; font-size: 13px; line-height: normal; font-family: =
&quot;Helvetica Neue&quot;; min-height: 15px;" class=3D""><br =
class=3D""></div><div style=3D"margin: 0px; font-stretch: normal; =
font-size: 13px; line-height: normal; font-family: &quot;Helvetica =
Neue&quot;;" class=3D"">I would have a better gut feeling in that case, =
wrt older machines.&nbsp; Not that I notice a slowdown on my machine, =
but I'm building with ASan enabled, so everything is kinda slow =
anyway.</div><div style=3D"margin: 0px; font-stretch: normal; font-size: =
13px; line-height: normal; font-family: &quot;Helvetica Neue&quot;; =
min-height: 15px;" class=3D""><br class=3D""></div><div style=3D"margin: =
0px; font-stretch: normal; font-size: 13px; line-height: normal; =
font-family: &quot;Helvetica Neue&quot;;" class=3D"">The meaning of =
display_working_on_window_p is not clear to me.&nbsp; I see what setting =
it does in the end, but I can't tell what this means:</div><div =
style=3D"margin: 0px; font-stretch: normal; font-size: 13px; =
line-height: normal; font-family: &quot;Helvetica Neue&quot;; =
min-height: 15px;" class=3D""><br class=3D""></div><div style=3D"margin: =
0px; font-stretch: normal; font-size: 13px; line-height: normal; =
font-family: &quot;Helvetica Neue&quot;;" class=3D"">/* True while some =
display-engine code is working on layout of some</div><div =
style=3D"margin: 0px; font-stretch: normal; font-size: 13px; =
line-height: normal; font-family: &quot;Helvetica Neue&quot;;" =
class=3D"">&nbsp;&nbsp; window.</div><div style=3D"margin: 0px; =
font-stretch: normal; font-size: 13px; line-height: normal; font-family: =
&quot;Helvetica Neue&quot;; min-height: 15px;" class=3D""><br =
class=3D""></div><div style=3D"margin: 0px; font-stretch: normal; =
font-size: 13px; line-height: normal; font-family: &quot;Helvetica =
Neue&quot;;" class=3D"">Probably good.</div><div style=3D"margin: 0px; =
font-stretch: normal; font-size: 13px; line-height: normal; font-family: =
&quot;Helvetica Neue&quot;; min-height: 15px;" class=3D""><br =
class=3D""></div><div style=3D"margin: 0px; font-stretch: normal; =
font-size: 13px; line-height: normal; font-family: &quot;Helvetica =
Neue&quot;;" class=3D"">Do you want me to take a deeper look at specific =
places?</div><div class=3D""><br class=3D""></div></div><br =
class=3D""></body></html>=

--Apple-Mail=_4C868E66-B48E-4883-B336-437361CDAF3E--




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Sat, 25 Jun 2022 06:31:02 +0000
Resent-Message-ID: <handler.45898.B45898.16561386088611 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Cc: 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.16561386088611
          (code B ref 45898); Sat, 25 Jun 2022 06:31:02 +0000
Received: (at 45898) by debbugs.gnu.org; 25 Jun 2022 06:30:08 +0000
Received: from localhost ([127.0.0.1]:44015 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o4zJ1-0002EA-Nc
	for submit <at> debbugs.gnu.org; Sat, 25 Jun 2022 02:30:08 -0400
Received: from eggs.gnu.org ([209.51.188.92]:35646)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1o4zIz-0002DD-AO
 for 45898 <at> debbugs.gnu.org; Sat, 25 Jun 2022 02:30:06 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:54382)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o4zIu-0000PR-2p; Sat, 25 Jun 2022 02:30:00 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=rGaqgkm8hv6JLqWAVjJZQ57+sgNDrcUybBMEOpmwxL8=; b=Jh9CSeWxJXjEgpfGbVXx
 L3ckjhV6mZ/2g/swKTzoY5+bmczjhhVOg71DQ20CCEEoCFBDweXQ0si54WvBpzSSq6PBdctAKroyS
 LyrmoscO7mnvZrwYTtR4o8TfKsmDR9WsosXTxt/KBP74xXCVSt++bMg7PGCgHUtFwSKYB/AhLiieo
 amC6ZiDv16K2c33VVoTKiKMRko+S3wGgAQ7i4FnvHA6+KjsowlbjZmm4CMKKweJE/INbPd8Dmq680
 WsOB01Df+6BsT/aabdMQomb2xa1Gd8dYbZOKUFGjABeADkdEU1eFIWk9TeeupNCHR2R4TUf5Jq3FP
 luT8TUTO4/8g3Q==;
Received: from [87.69.77.57] (port=2291 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o4zIt-0006VT-Im; Sat, 25 Jun 2022 02:29:59 -0400
Date: Sat, 25 Jun 2022 09:29:54 +0300
Message-Id: <83r13db6hp.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <0B5FE52E-BC81-4A05-86F1-91C6AFCB6F7D@HIDDEN> (message from
 Gerd =?UTF-8?Q?M=C3=B6llmann?= on Sat, 25 Jun 2022 06:54:19 +0200)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN>
 <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN>
 <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN>
 <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN>
 <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN>
 <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> <
 0B5FE52E-BC81-4A05-86F1-91C6AFCB6F7D@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Gerd Möllmann <gerd.moellmann@HIDDEN>
> Date: Sat, 25 Jun 2022 06:54:19 +0200
> Cc: 45898 <at> debbugs.gnu.org
> 
> I think it helps me in the following when I briefly describe the model of Emacs’ internals I have in my head. 
> That way, I can write about things in terms in which I think.  So, let me try.  When I think of Emacs' design, I
> think of functions and categories they belong to.  Categories in the sense of animal, dog, human, plant.   A
> bit like modules, but not quite, but if it’s helpful, just think of modules instead. 
> 
> The categories I'd like to use here, are lisp, redisplay, iterator, update, regexp.   I leave the rest out. Here is
> what I group under these categories:

That's clear, thanks.

> One of the first things that came to my mind is a new category "time fuse" (in German Zeitzünder),
> something counting ticks, and detonating (signaling) at some point.  I admit that I find the names you used
> with redisplay in them confusing.  Especially in the regexp code and so.

That's mainly to keep the names from getting too long to be useful.  I
could have used something like update_display_code_iteration_ticks,
but it looked to me that "redisplay" is a good way of saying "display
code" shorter.

> Functionality-wise, Iterator now signals an error that redisplay catches. 

Yes, that's the main idea.  But note that in some cases Iterator is
called directly from Lisp, not from Redisplay, in which case the error
is caught by the command loop (not sure where that is in your
taxonomy? is that also Lisp?), not by Redisplay.  Case in point: C-n.

> The error is signaled when a global tick counter exceeds a max value.  Each movement of an iterator
> increments the global tick counter.  The counter is global because you want to sum up all the ticks that
> occur between a given start point where the tick counter is set to 0, and the point where the ticks exceed the
> maximum, regardless of iterator -> lisp -> iterator nesting.
> 
> The global tick counter is also incremented from regexp.  I think font-lock plays a role here.  One scenario is
> redisplay or lisp -> iterator, iterator needs font-lock to run (-> lisp), font-lock matches a regexp (lisp ->
> regexp), and we get stuck on a long line.  Likewise with other stuff, like syntax.

Right.  But I want to explain why I count ticks in regexp, in
syntax.c, and in some places in bidi.c.  The reason is that a single
call to set_iterator_to_next, which basically counts as one tick, can
sometimes result in prolonged operations.  So some ticks are "more
equal" than others, and I looked for a way of expressing that.  What
you see in those other places is the result of that: it makes
iteration steps that trigger prolonged examination of buffer text to
count as more than one tick.

> (BTW, the call to update the tick in regexp can lead to a GC when the error is signaled, in the same way as
> in bug 56108 with maybe_quit.  So we might need that, too.)

Yes, it could cause GC, but I'm not sure what you mean by "we might
need that".  What is "that" here?  Did you mean we should count ticks
inside GC as well?  If so, we'd need to have some way of preventing a
signal when the tick count reaches the threshold, because we cannot
signal an error inside GC.

> Maybe we could disable the calls cheaply when max-ticks is 0?  I mean, something that inlines
> 
> if (max_ticks > 0)
>           update_ticks(...)

Yes, maybe.

> The meaning of display_working_on_window_p is not clear to me.  I see what setting it does in the end, but I
> can't tell what this means:
> 
> /* True while some display-engine code is working on layout of some
>    window.

The reason for that kludge is the urge to avoid signaling an error
when regexp or syntax.c is called in the context that is not related
to any display code whatsoever.  Since these functions don't know
whether they are invoked by some code in Iterator or by Lisp, they
will count the ticks regardless, and I don't want them to signal an
error if they happen to count too many ticks.

> Do you want me to take a deeper look at specific places?

As you wish.  I just wanted a second opinion on the overall design,
and my main worry besides that is whether there are situations where
this simple mechanism could cause trouble.  E.g., Lars already
uncovered one such situation, see

  https://lists.gnu.org/archive/html/emacs-diffs/2022-06/msg00761.html

(I will redirect that to here, as emacs-diffs is not for discussions
of this sort.)




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Sat, 25 Jun 2022 07:19:02 +0000
Resent-Message-ID: <handler.45898.B45898.165614148913041 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Lars Ingebrigtsen <larsi@HIDDEN>
Cc: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165614148913041
          (code B ref 45898); Sat, 25 Jun 2022 07:19:02 +0000
Received: (at 45898) by debbugs.gnu.org; 25 Jun 2022 07:18:09 +0000
Received: from localhost ([127.0.0.1]:44041 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o503U-0003OH-Vd
	for submit <at> debbugs.gnu.org; Sat, 25 Jun 2022 03:18:09 -0400
Received: from eggs.gnu.org ([209.51.188.92]:41176)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1o503I-0003NY-Hm
 for 45898 <at> debbugs.gnu.org; Sat, 25 Jun 2022 03:18:08 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:54658)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o503D-0004Wd-41; Sat, 25 Jun 2022 03:17:51 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=RQH7f1QQWqfTj+h5OBoM0q4xt7nPu7DQA6/JnEvVukI=; b=oQHuNV8jIzHrD5K9GwbJ
 Q2kvXaKQpof3Xg2TBGqMIfstU7y6w63VPXWx+tW0jN2DnQXriyL3V76El5OvUfdPPK9KSL2W5CtfJ
 +dHkyn8jlBA3sGZ91KElJsCmhadYG3Vm6SEBhIkToGQSd9hM6sZm0VCPWnlp9OJFQ4LvV5Fy76CKu
 /I2+LIMj5HYbD/AhLMMeDrL2+lRHqpffFmZFTE4q0ESC+6+3+FmDSqTsX5Buyepp5zWzFYoq/fbeV
 yqVBkC1UbA/87exCzYHCn2PZFtFmsAsj3Bd30aFf3X/hJLjQSN74bVVJodJZUFrige5ySlILiX+UK
 LL4OJbD4lcZp5Q==;
Received: from [87.69.77.57] (port=1275 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o503C-0007qX-FX; Sat, 25 Jun 2022 03:17:50 -0400
Date: Sat, 25 Jun 2022 10:17:45 +0300
Message-Id: <83o7yhb49y.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <874k09nau4.fsf@HIDDEN> (message from Lars Ingebrigtsen on Fri, 
 24 Jun 2022 21:02:59 +0200)
References: <165605725704.24125.17210424600068379407@HIDDEN>
 <20220624075417.BFA82C0169C@HIDDEN>
 <87wnd6v34k.fsf@HIDDEN> <83mte2coqg.fsf@HIDDEN>
 <87fsjuqpzi.fsf@HIDDEN> <83k096clsx.fsf@HIDDEN>
 <8735fup5oh.fsf@HIDDEN> <83a6a2cher.fsf@HIDDEN>
 <874k09nau4.fsf@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
X-Spam-Score: -0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

[I've redirected the discussion here, since emacs-diffs isn't the
right place for it.]

> From: Lars Ingebrigtsen <larsi@HIDDEN>
> Cc: emacs-diffs@HIDDEN
> Date: Fri, 24 Jun 2022 21:02:59 +0200
> 
> Eli Zaretskii <eliz@HIDDEN> writes:
> 
> >> > I cannot reproduce this.  Does it happen with the latest master?  If
> >> > so, can you put a breakpoint in xdisp.c here:
> >> >
> >> >       if (w && w->desired_matrix)
> >> > 	w->desired_matrix->no_scrolling_p = true;
> >> >       error ("Window showing buffer %s takes too long to redisplay", bufname);
> >> >
> >> > on the line that calls 'error', and when it breaks, show the
> >> > backtrace, both the C backtrace and Lisp backtrace?
> 
> (gdb) bt
> #0  update_redisplay_ticks (ticks=1, w=0x55555619b040) at xdisp.c:17256
> #1  0x00005555555d894e in set_iterator_to_next (it=0x7fffffff6d40, reseat_p=true) at xdisp.c:8189
> #2  0x00005555555ddabd in move_it_in_display_line_to (it=0x7fffffff6d40, to_charpos=69407, to_x=-1, op=MOVE_TO_POS) at xdisp.c:9967
> #3  0x00005555555de979 in move_it_to (it=0x7fffffff6d40, to_charpos=69407, to_x=-1, to_y=1494, to_vpos=-1, op=10) at xdisp.c:10221
> #4  0x00005555555e06c8 in partial_line_height (it_origin=0x7fffffff80b0) at xdisp.c:10852
> #5  0x00005555555f8cd5 in try_window (window=XIL(0x55555619b045), pos=..., flags=1) at xdisp.c:20229
> #6  0x00005555555f5e16 in redisplay_window (window=XIL(0x55555619b045), just_this_one_p=false) at xdisp.c:19606
> #7  0x00005555555ee563 in redisplay_window_0 (window=XIL(0x55555619b045)) at xdisp.c:17184
> #8  0x00005555557e6222 in internal_condition_case_1 (bfun=0x5555555ee521 <redisplay_window_0>, arg=XIL(0x55555619b045), handlers=XIL(0x7ffff17549f3), hfun=0x5555555ee43a <redisplay_window_error>) at eval.c:1509
> #9  0x00005555555ee410 in redisplay_windows (window=XIL(0x55555619b045)) at xdisp.c:17154
> #10 0x00005555555ed2ce in redisplay_internal () at xdisp.c:16609
> #11 0x00005555555edd94 in redisplay_preserve_echo_area (from_where=9) at xdisp.c:16967
> #12 0x000055555584c9f5 in wait_reading_process_output (time_limit=45, nsecs=0, read_kbd=-1, do_display=true, wait_for_cell=XIL(0), wait_proc=0x0, just_wait_proc=0) at process.c:5334
> #13 0x00005555555aa9f8 in sit_for (timeout=make_fixnum(45), reading=true, display_option=1) at dispnew.c:6238
> #14 0x000055555572aa94 in read_char (commandflag=1, map=XIL(0x55555941e113), prev_event=XIL(0), used_mouse_menu=0x7fffffffd9df, end_time=0x0) at keyboard.c:2840
> #15 0x000055555573ab2b in read_key_sequence (keybuf=0x7fffffffdbe0, prompt=XIL(0), dont_downcase_last=false, can_return_switch_frame=true, fix_current_buffer=true, prevent_redisplay=false) at keyboard.c:9988
> #16 0x0000555555726f35 in command_loop_1 () at keyboard.c:1391
> #17 0x00005555557e617b in internal_condition_case (bfun=0x555555726adf <command_loop_1>, handlers=XIL(0x90), hfun=0x5555557260e7 <cmd_error>) at eval.c:1485
> #18 0x000055555572678f in command_loop_2 (handlers=XIL(0x90)) at keyboard.c:1132
> #19 0x00005555557e583d in internal_catch (tag=XIL(0xf660), func=0x555555726765 <command_loop_2>, arg=XIL(0x90)) at eval.c:1208
> #20 0x0000555555726721 in command_loop () at keyboard.c:1110
> #21 0x0000555555725c89 in recursive_edit_1 () at keyboard.c:719
> #22 0x0000555555725e35 in Frecursive_edit () at keyboard.c:802
> #23 0x0000555555722188 in main (argc=3, argv=0x7fffffffe0f8) at emacs.c:2517
> 
> Lisp Backtrace:
> "redisplay_internal (C function)" (0x0)
> (gdb) 

Thanks.  I tried to fix this on master, please see if the problem is
gone.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Sat, 25 Jun 2022 07:48:02 +0000
Resent-Message-ID: <handler.45898.B45898.165614326315741 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: gerd.moellmann@HIDDEN
Cc: 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165614326315741
          (code B ref 45898); Sat, 25 Jun 2022 07:48:02 +0000
Received: (at 45898) by debbugs.gnu.org; 25 Jun 2022 07:47:43 +0000
Received: from localhost ([127.0.0.1]:44060 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o50W3-00045R-AO
	for submit <at> debbugs.gnu.org; Sat, 25 Jun 2022 03:47:43 -0400
Received: from eggs.gnu.org ([209.51.188.92]:45736)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1o50Vo-00044f-V5
 for 45898 <at> debbugs.gnu.org; Sat, 25 Jun 2022 03:47:37 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:54878)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o50Vj-0002DP-C9; Sat, 25 Jun 2022 03:47:19 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=0csm1D4XoJK1oknAm4nkYJFCvd1vscythpKuT0S8FuM=; b=gmf5HHUPl+hV
 OSnwrMpbtc3AOuiZ1owKChLikCt/O+GZbf4V0Lc8NcwJkPd+nMSw91UrtWv3kZ+hTyfgyfbZyPi4U
 wkbUXYGLbxsCeWuhn7CI5yjWnAF591laVvo+vNBcT7AYb3/OAyk5QbsFNPS4VB00i7rgZGmGz6WsT
 hCM/GtrziWD7QeTa1YB+POebpyR15IKRJ9KeIXL+i0a9Dyy78XnIlISM3iF5t+27PeD+D34MfMBYr
 qj/UH3x7pUBjid1S81TC9yGrCFbUzdRLvkzbU6vwmQmn5VJNs+RiOCs1YR44MzumpuxnvLACxuC1w
 90dpzZNBsfbEY7XNz8o9AQ==;
Received: from [87.69.77.57] (port=3086 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o50Vi-00005P-Rl; Sat, 25 Jun 2022 03:47:19 -0400
Date: Sat, 25 Jun 2022 10:47:15 +0300
Message-Id: <83mte1b2ws.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <83r13db6hp.fsf@HIDDEN> (message from Eli Zaretskii on Sat, 25
 Jun 2022 09:29:54 +0300)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN>
 <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN>
 <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN>
 <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN>
 <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN>
 <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> <
 0B5FE52E-BC81-4A05-86F1-91C6AFCB6F7D@HIDDEN> <83r13db6hp.fsf@HIDDEN>
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> Cc: 45898 <at> debbugs.gnu.org
> Date: Sat, 25 Jun 2022 09:29:54 +0300
> From: Eli Zaretskii <eliz@HIDDEN>
> 
> > Maybe we could disable the calls cheaply when max-ticks is 0?  I mean, something that inlines
> > 
> > if (max_ticks > 0)
> >           update_ticks(...)
> 
> Yes, maybe.

Now done.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Sat, 25 Jun 2022 08:19:02 +0000
Resent-Message-ID: <handler.45898.B45898.165614510118608 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165614510118608
          (code B ref 45898); Sat, 25 Jun 2022 08:19:02 +0000
Received: (at 45898) by debbugs.gnu.org; 25 Jun 2022 08:18:21 +0000
Received: from localhost ([127.0.0.1]:44072 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o50zl-0004q4-J6
	for submit <at> debbugs.gnu.org; Sat, 25 Jun 2022 04:18:21 -0400
Received: from mail-ed1-f49.google.com ([209.85.208.49]:34462)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <gerd.moellmann@HIDDEN>) id 1o50zi-0004pq-7w
 for 45898 <at> debbugs.gnu.org; Sat, 25 Jun 2022 04:18:20 -0400
Received: by mail-ed1-f49.google.com with SMTP id o10so6421493edi.1
 for <45898 <at> debbugs.gnu.org>; Sat, 25 Jun 2022 01:18:18 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;
 h=date:from:to:cc:message-id:in-reply-to:references:subject
 :mime-version; bh=ugclmhDtkn+UjgGDm0tX1JkU14p6AgK2ILMm5RDIAfE=;
 b=l1+7xjEoeoxvzYr9PXh173E+xq/x0kikTrVSmP3mdLYfd5V+KV1XRjhkpxcnbHBJHo
 REBfHYJRHuLqcqEhMdq0prM70PIn+/EjuT/cfxbyxC7FJjn84yPaRZVrDNk5MvZajjtV
 L/g2JZu4obwy0k2Brv3U9zJWj9p4eR4wMn9SNiuhBzgq0E3so15VTXU4e5MZ7RRfnrJg
 FLJCHS4kby6JZmCp/SQOsqw9uErG14OXUtXtIeARrU6MoTFZpBwr/vwsUbnMkrdi80+H
 bradasuwquemfoexVfpHQ5LmJXuPl4VnR69wHJQuI/6CyNU/Z/03t2mI6SmqulZuTaf9
 ZVYA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112;
 h=x-gm-message-state:date:from:to:cc:message-id:in-reply-to
 :references:subject:mime-version;
 bh=ugclmhDtkn+UjgGDm0tX1JkU14p6AgK2ILMm5RDIAfE=;
 b=LXcXEx6XkUmxW1/46ZEO9RUqsMOxzRns/QQHt3tYS/yv4JtOkqfgsNQ+KHApzNzA85
 rn3GlnraIhoPVdpPhxNtvadH0TCoZscmt6YFhKSkV4//1VwkNnPzLQprCUM4RgB90WNx
 hbBdfFFDD/D/VJ9Je+mBY/SX4KktjDY2+LTnNGp2rcZe2gep2smb4T6psrbjpsLwODL2
 FD3YvH4+ixlAEFwOMQcwmJauHKA9Y7j2SAryCnJSaS51f6I7oKL9lRhaYkBgvB81qJ63
 xCiReXR19r5xVtBspwFxf10AofaCJ21cy7dYKlqYLM5609S63vTlQPe8xUkLevZSKzcr
 OAJg==
X-Gm-Message-State: AJIora/TJG1koo8lR5fduF7CChyNZY1xh8mCD9FrFAR1Cj/MG0Ziu0Du
 fufUrivtS00O99r21PKNB0R0J42URkxoVQ==
X-Google-Smtp-Source: AGRyM1uAEmqagveNNsFmL+AV8v4+afsrsb1pSVrUHAL6EYHo/RQqSowMHfK/Pm/8yqUWDnWwNkKswg==
X-Received: by 2002:a05:6402:1f0a:b0:435:6e0a:7aba with SMTP id
 b10-20020a0564021f0a00b004356e0a7abamr3654939edb.318.1656145092260; 
 Sat, 25 Jun 2022 01:18:12 -0700 (PDT)
Received: from [192.168.178.21] (p4fe3a040.dip0.t-ipconnect.de.
 [79.227.160.64]) by smtp.gmail.com with ESMTPSA id
 d6-20020a170906174600b00715705dd23asm2303754eje.89.2022.06.25.01.18.11
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 25 Jun 2022 01:18:11 -0700 (PDT)
Date: Sat, 25 Jun 2022 10:18:03 +0200
From: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Message-ID: <2153c8d2-6ec2-4aef-b346-bbc52225fadd@Spark>
In-Reply-To: <83mte1b2ws.fsf@HIDDEN>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN>
 <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN>
 <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN>
 <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN>
 <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN>
 <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN>
 <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN>
 <0B5FE52E-BC81-4A05-86F1-91C6AFCB6F7D@HIDDEN> <83r13db6hp.fsf@HIDDEN>
 <83mte1b2ws.fsf@HIDDEN>
X-Readdle-Message-ID: 2153c8d2-6ec2-4aef-b346-bbc52225fadd@Spark
MIME-Version: 1.0
Content-Type: multipart/alternative; boundary="62b6c4c0_25b57ed4_588f"
X-Spam-Score: -0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

--62b6c4c0_25b57ed4_588f
Content-Type: text/plain; charset="utf-8"
Content-Transfer-Encoding: 7bit
Content-Disposition: inline

On 25. Jun 2022, 09:47 +0200, Eli Zaretskii <eliz@HIDDEN>, wrote:
> > > Maybe we could disable the calls cheaply when max-ticks is 0? I mean, something that inlines
> > >
> > > if (max_ticks > 0)
> > > update_ticks(...)
> >
> > Yes, maybe.
> >
> > Now done.

Thanks!

--62b6c4c0_25b57ed4_588f
Content-Type: text/html; charset="utf-8"
Content-Transfer-Encoding: quoted-printable
Content-Disposition: inline

<html xmlns=3D=22http://www.w3.org/1999/xhtml=22>
<head>
<title></title>
</head>
<body>
<div name=3D=22messageReplySection=22>
<div dir=3D=22auto=22>On 25. Jun 2022, 09:47 +0200, Eli Zaretskii &lt;eli=
z=40gnu.org&gt;, wrote:</div>
<blockquote style=3D=22border-left-color: rgb(26, 188, 156); margin: 5px;=
 padding-left: 10px; border-left-width: thin; border-left-style: solid;=22=
>
<blockquote style=3D=22border-left-color: rgb(230, 126, 34); margin: 5px;=
 padding-left: 10px; border-left-width: thin; border-left-style: solid;=22=
>
<blockquote style=3D=22border-left-color: rgb(52, 152, 219); margin: 5px;=
 padding-left: 10px; border-left-width: thin; border-left-style: solid;=22=
>Maybe we could disable the calls cheaply when max-ticks is 0=3F I mean, =
something that inlines<br />
<br />
if (max=5Fticks &gt; 0)<br />
update=5Fticks(...)</blockquote>
<br />
Yes, maybe.<br />
<br />
Now done.</blockquote>
</blockquote>
<div dir=3D=22auto=22><br />
Thanks=21</div>
</div>
</body>
</html>

--62b6c4c0_25b57ed4_588f--





Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Sat, 25 Jun 2022 09:50:01 +0000
Resent-Message-ID: <handler.45898.B45898.165615059227351 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165615059227351
          (code B ref 45898); Sat, 25 Jun 2022 09:50:01 +0000
Received: (at 45898) by debbugs.gnu.org; 25 Jun 2022 09:49:52 +0000
Received: from localhost ([127.0.0.1]:44155 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o52QK-000774-BF
	for submit <at> debbugs.gnu.org; Sat, 25 Jun 2022 05:49:52 -0400
Received: from mail-ed1-f43.google.com ([209.85.208.43]:39507)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <gerd.moellmann@HIDDEN>) id 1o52QH-00076q-RH
 for 45898 <at> debbugs.gnu.org; Sat, 25 Jun 2022 05:49:50 -0400
Received: by mail-ed1-f43.google.com with SMTP id eq6so6544798edb.6
 for <45898 <at> debbugs.gnu.org>; Sat, 25 Jun 2022 02:49:49 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;
 h=mime-version:subject:from:in-reply-to:date:cc
 :content-transfer-encoding:message-id:references:to;
 bh=ZFklzMEmYOmqwKrzn5W+DcDDqrYaiiocABZT93+1BhE=;
 b=aXiyOaI43Lb3HdpaOL+HFfajwqwdopyMoLDyxWpi+nOHhcnbMT62Q6uWb8buwW/RlW
 C5BeX52/Nn/shmms0hWevEFjbH3lvrJhgiC9RutL0oyr4ydrwN7FNliuLAsbX+UEkDQ5
 PsseCMpimG848iUyLiSpV/4JGaqdbOw3wc3fNA+dw0gKTtQDwFn/QkZWTEicFql4wDeD
 qF+RNMvSAYuR/KUMnHCEAlfsGxIaBEgw4igb7s+Y3+2ANEJc0kfKZPQYEF2YRXIZczQ6
 OQQEdY5sVH+44gt08jbX3rOk2Q2oryAfNzXW/61VyL9s209ODhrzoDaI+T01v5RbL6p3
 1G4Q==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112;
 h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc
 :content-transfer-encoding:message-id:references:to;
 bh=ZFklzMEmYOmqwKrzn5W+DcDDqrYaiiocABZT93+1BhE=;
 b=F56oLRPwPK6bnlyqW4oI850JXmR4INn/Tz+xwxt6PC/psz9rf8fQEzTI2f2fkRB3lv
 YxwBj6R2ZQSPS4BhUqpt7Rf6V0PzLGmZaoqe+FLUMXsdKZekHBzu5wVUudXO0q3TcqqQ
 VxOKWPsFBPkVHsACGeArdOchcfnh0Mp8DZAGSjbjtn2oj9Mbcz0+oN/c4IAjJ5DRtFyq
 B8k8L2feE5SNqHu0x9spOv/Xsz3HK9qvdWq2f84gjfLONJ4+fTRpcdpih96c2zJ7naID
 YuI8W/EIQ9LTQ3ceg5O9iYVOwe+nIFY80/kzBWVrM/QKpVmc7qxU5DMtbiL2b0/6zMOP
 +q3g==
X-Gm-Message-State: AJIora8Yj5Dbie3ISGY9mfBCKTMqZro2vul33HF+DsgsB2K54D3OE/CD
 rRxK1Ct9c6l6YEKLEHzvXkA=
X-Google-Smtp-Source: AGRyM1sgi3vo2susV49UW5qeFmrRqZKXEtaX7PMNFJ1TjR6aNfS4ScdtE41IVVqduAUgifJuiyu+AA==
X-Received: by 2002:aa7:c846:0:b0:431:6c7b:26af with SMTP id
 g6-20020aa7c846000000b004316c7b26afmr4042070edt.123.1656150583620; 
 Sat, 25 Jun 2022 02:49:43 -0700 (PDT)
Received: from smtpclient.apple (p4fe3a040.dip0.t-ipconnect.de.
 [79.227.160.64]) by smtp.gmail.com with ESMTPSA id
 u17-20020a056402111100b0042deea0e961sm3807455edv.67.2022.06.25.02.49.42
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 25 Jun 2022 02:49:42 -0700 (PDT)
Content-Type: text/plain;
	charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.100.31\))
From: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
In-Reply-To: <83r13db6hp.fsf@HIDDEN>
Date: Sat, 25 Jun 2022 11:49:42 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <56F03F59-40AD-48F2-92C8-9858C2423327@HIDDEN>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN>
 <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN>
 <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN>
 <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN>
 <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN>
 <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN> <
 0B5FE52E-BC81-4A05-86F1-91C6AFCB6F7D@HIDDEN> <83r13db6hp.fsf@HIDDEN>
X-Mailer: Apple Mail (2.3696.100.31)
X-Spam-Score: -0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)



> On 2022-06-25,, at 8:29 , Eli Zaretskii <eliz@HIDDEN> wrote:
>=20
>> One of the first things that came to my mind is a new category "time =
fuse" (in German Zeitz=C3=BCnder),
>> something counting ticks, and detonating (signaling) at some point.  =
I admit that I find the names you used
>> with redisplay in them confusing.  Especially in the regexp code and =
so.
>=20
> That's mainly to keep the names from getting too long to be useful.  I
> could have used something like update_display_code_iteration_ticks,
> but it looked to me that "redisplay" is a good way of saying "display
> code" shorter.

Well... update_display_code_iteration_ticks also makes me twitch because =
I think of the tick/signal business not part of "display".  What I have =
in my head is regexp -> ticks, and iterator -> ticks, where "ticks" =
would be replaced with some suitable name. I think regexp should also be =
interrupted with long lines, when we match a line that is too long.  Or =
not?

Or maybe "ticks" is already a good enough name?  We could then simply =
have update_ticks and good.  Or eticks to not confuse it with time =
ticks, if that ever happens.

>=20
>> Functionality-wise, Iterator now signals an error that redisplay =
catches.=20
>=20
> Yes, that's the main idea.  But note that in some cases Iterator is
> called directly from Lisp, not from Redisplay, in which case the error
> is caught by the command loop (not sure where that is in your
> taxonomy? is that also Lisp?), not by Redisplay.  Case in point: C-n.

Yes, that's what I meant by lisp -> iterator, using the move_it* "API".

I left out the command-loop, but it's also something I'd consider a =
category.

>=20
>> The error is signaled when a global tick counter exceeds a max value. =
 Each movement of an iterator
>> increments the global tick counter.  The counter is global because =
you want to sum up all the ticks that
>> occur between a given start point where the tick counter is set to 0, =
and the point where the ticks exceed the
>> maximum, regardless of iterator -> lisp -> iterator nesting.
>>=20
>> The global tick counter is also incremented from regexp.  I think =
font-lock plays a role here.  One scenario is
>> redisplay or lisp -> iterator, iterator needs font-lock to run (-> =
lisp), font-lock matches a regexp (lisp ->
>> regexp), and we get stuck on a long line.  Likewise with other stuff, =
like syntax.
>=20
> Right.  But I want to explain why I count ticks in regexp, in
> syntax.c, and in some places in bidi.c.  The reason is that a single
> call to set_iterator_to_next, which basically counts as one tick, can
> sometimes result in prolonged operations.  So some ticks are "more
> equal" than others, and I looked for a way of expressing that.  What
> you see in those other places is the result of that: it makes
> iteration steps that trigger prolonged examination of buffer text to
> count as more than one tick.

I've seen that, and I think that's fine.

>=20
>> (BTW, the call to update the tick in regexp can lead to a GC when the =
error is signaled, in the same way as
>> in bug 56108 with maybe_quit.  So we might need that, too.)
>=20
> Yes, it could cause GC, but I'm not sure what you mean by "we might
> need that".  What is "that" here? =20

I meant a fix for that bug. =20

Might be something specific to German.  People say "I need that bug for =
the next release", and mean the fix, because they have the bug already =
:-).

> Did you mean we should count ticks
> inside GC as well?  If so, we'd need to have some way of preventing a
> signal when the tick count reaches the threshold, because we cannot
> signal an error inside GC.

No, I didn't think of that.

>> The meaning of display_working_on_window_p is not clear to me.  I see =
what setting it does in the end, but I
>> can't tell what this means:
>>=20
>> /* True while some display-engine code is working on layout of some
>>   window.
>=20
> The reason for that kludge is the urge to avoid signaling an error
> when regexp or syntax.c is called in the context that is not related
> to any display code whatsoever.  Since these functions don't know
> whether they are invoked by some code in Iterator or by Lisp, they
> will count the ticks regardless, and I don't want them to signal an
> error if they happen to count too many ticks.

You mean a case, where small numbers of ticks sum up by calling these =
Lisp functions often enough?

>=20
>> Do you want me to take a deeper look at specific places?
>=20
> As you wish.  I just wanted a second opinion on the overall design,
> and my main worry besides that is whether there are situations where
> this simple mechanism could cause trouble.  E.g., Lars already
> uncovered one such situation, see
>=20
>  https://lists.gnu.org/archive/html/emacs-diffs/2022-06/msg00761.html
>=20
> (I will redirect that to here, as emacs-diffs is not for discussions
> of this sort.)

Apart from features I don't know, I don't see any fundamental problem =
with your approach.






Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Sat, 25 Jun 2022 09:59:02 +0000
Resent-Message-ID: <handler.45898.B45898.165615108928128 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Cc: 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165615108928128
          (code B ref 45898); Sat, 25 Jun 2022 09:59:02 +0000
Received: (at 45898) by debbugs.gnu.org; 25 Jun 2022 09:58:09 +0000
Received: from localhost ([127.0.0.1]:44167 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o52YL-0007Jc-Iv
	for submit <at> debbugs.gnu.org; Sat, 25 Jun 2022 05:58:09 -0400
Received: from eggs.gnu.org ([209.51.188.92]:37492)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1o52YG-0007J5-RG
 for 45898 <at> debbugs.gnu.org; Sat, 25 Jun 2022 05:58:08 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:56608)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o52YB-0005hY-CV; Sat, 25 Jun 2022 05:57:59 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=riZMqochTr7kyPmpXLk51PrznTzve7+SbSpzmUm8O3A=; b=jwitZVuzB5SLDFsLSFLz
 SQAsHUjvEM5BbJ2yV+yq8wkUxMjmvnelr8nquMcUKq/q2mer4aYAVyJLipTaZfQByYfDQrtmhx90M
 v0xjneXLw3i7GfxzWeN0g8zvXfgBiRQxct7GGa/AFf6YR+jk4MmIgWk/+BBjcDCkLf8l7HlofRM05
 rhJV533cEZBz7s42SJisL7FqHesPrLQ3sEr0ZsyFrDITbYS60Xv/FIYg+9mLJgz2Iv3yhCUxtpbgU
 RLExSD/QB3AuDS4/ThtU5r28nnA+Drj8dHZYrvdQUiQ2SWnkBvHxzjYTOKCXZTnE8V5zBgNF3oKMG
 H8KNRFCqoKXTzg==;
Received: from [87.69.77.57] (port=3668 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o52YA-0003NL-S4; Sat, 25 Jun 2022 05:57:59 -0400
Date: Sat, 25 Jun 2022 12:57:55 +0300
Message-Id: <83a6a1awv0.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <56F03F59-40AD-48F2-92C8-9858C2423327@HIDDEN> (message from
 Gerd =?UTF-8?Q?M=C3=B6llmann?= on Sat, 25 Jun 2022 11:49:42 +0200)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN>
 <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN>
 <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN>
 <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN>
 <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN>
 <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN>
 <0B5FE52E-BC81-4A05-86F1-91C6AFCB6F7D@HIDDEN> <83r13db6hp.fsf@HIDDEN>
 <56F03F59-40AD-48F2-92C8-9858C2423327@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Gerd Möllmann <gerd.moellmann@HIDDEN>
> Date: Sat, 25 Jun 2022 11:49:42 +0200
> Cc: 45898 <at> debbugs.gnu.org
> 
> Well... update_display_code_iteration_ticks also makes me twitch because I think of the tick/signal business not part of "display".  What I have in my head is regexp -> ticks, and iterator -> ticks, where "ticks" would be replaced with some suitable name. I think regexp should also be interrupted with long lines, when we match a line that is too long.  Or not?
> 
> Or maybe "ticks" is already a good enough name?  We could then simply have update_ticks and good.  Or eticks to not confuse it with time ticks, if that ever happens.

You mean, just update_ticks?  That's too general, IMO.  I'd like
people to have an idea what that does when they just see the call.

But I'm not good with names.

> >> (BTW, the call to update the tick in regexp can lead to a GC when the error is signaled, in the same way as
> >> in bug 56108 with maybe_quit.  So we might need that, too.)
> > 
> > Yes, it could cause GC, but I'm not sure what you mean by "we might
> > need that".  What is "that" here?  
> 
> I meant a fix for that bug.  

Ah, okay.  That will get installed soon, I'm just waiting for Stefan
to comment if he has comments.

> >> /* True while some display-engine code is working on layout of some
> >>   window.
> > 
> > The reason for that kludge is the urge to avoid signaling an error
> > when regexp or syntax.c is called in the context that is not related
> > to any display code whatsoever.  Since these functions don't know
> > whether they are invoked by some code in Iterator or by Lisp, they
> > will count the ticks regardless, and I don't want them to signal an
> > error if they happen to count too many ticks.
> 
> You mean a case, where small numbers of ticks sum up by calling these Lisp functions often enough?

Actually, I meant something even simpler: a Lisp program that calls,
say, regexp search repeatedly, to accumulate enough ticks that would
signal an error, thus aborting that Lisp program.

> Apart from features I don't know, I don't see any fundamental problem with your approach.

Great, thanks.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Lars Ingebrigtsen <larsi@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Sat, 25 Jun 2022 10:12:01 +0000
Resent-Message-ID: <handler.45898.B45898.165615187229357 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165615187229357
          (code B ref 45898); Sat, 25 Jun 2022 10:12:01 +0000
Received: (at 45898) by debbugs.gnu.org; 25 Jun 2022 10:11:12 +0000
Received: from localhost ([127.0.0.1]:44172 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o52kx-0007dR-RP
	for submit <at> debbugs.gnu.org; Sat, 25 Jun 2022 06:11:12 -0400
Received: from quimby.gnus.org ([95.216.78.240]:43604)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <larsi@HIDDEN>) id 1o52ku-0007dB-LB
 for 45898 <at> debbugs.gnu.org; Sat, 25 Jun 2022 06:11:10 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnus.org;
 s=20200322; h=Content-Type:MIME-Version:Message-ID:In-Reply-To:Date:
 References:Subject:Cc:To:From:Sender:Reply-To:Content-Transfer-Encoding:
 Content-ID:Content-Description:Resent-Date:Resent-From:Resent-Sender:
 Resent-To:Resent-Cc:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:
 List-Subscribe:List-Post:List-Owner:List-Archive;
 bh=b3E2JycJCLVyd2x/BdLPiM1+7n+NOkuUSfmoCXKzj/k=; b=hbVZx0ZgUrti2AXoTd4uZriTO8
 2jSyvVxISGw2lcG9+rl8HGDkCGbb8T2P5IzvNrDrunmeIL651Frzj0aHtY3EpU+4OYQpyPaqbWQF3
 aGnKepj240qH2RCs0BfqhFEBET7QPpn9XEKcRqz1MjWvXHJk8muHWiynm5tj5K/YainU=;
Received: from [84.212.220.105] (helo=xo)
 by quimby.gnus.org with esmtpsa (TLS1.3:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.92) (envelope-from <larsi@HIDDEN>)
 id 1o52kl-0004Sj-3B; Sat, 25 Jun 2022 12:11:01 +0200
From: Lars Ingebrigtsen <larsi@HIDDEN>
References: <165605725704.24125.17210424600068379407@HIDDEN>
 <20220624075417.BFA82C0169C@HIDDEN>
 <87wnd6v34k.fsf@HIDDEN> <83mte2coqg.fsf@HIDDEN>
 <87fsjuqpzi.fsf@HIDDEN> <83k096clsx.fsf@HIDDEN>
 <8735fup5oh.fsf@HIDDEN> <83a6a2cher.fsf@HIDDEN>
 <874k09nau4.fsf@HIDDEN> <83o7yhb49y.fsf@HIDDEN>
Face: iVBORw0KGgoAAAANSUhEUgAAADAAAAAwBAMAAAClLOS0AAAABGdBTUEAALGPC/xhBQAAACBj
 SFJNAAB6JgAAgIQAAPoAAACA6AAAdTAAAOpgAAA6mAAAF3CculE8AAAAD1BMVEXbDFuwJEijPUbh
 nrP///8C+YAWAAAAAWJLR0QEj2jZUQAAAAd0SU1FB+YGGBYEAR3k8r8AAAGwSURBVDjLtVJRrtww
 CITnCwC5QCAXiM3979YBZ7vdp0pVPx67ihLGzAxgIiaEaIULK2ucpoocnwLsi8Iigk/1MDtPAPOY
 447Dkb5WWh5+TXeisY485spYeQEIfOTKvGnceYy1Ft2Zh+Wd48bbBsaY96CZec2ke8yZV4IKB0F1
 rAI0bY71AvC7AYD4ChSN4iwAbwDSAgDAHPNa1wW76mSIsounulc/IWhQiFXD1Lp70yiox4HOvVOY
 RA3GNWokVIOpbzVnxhOU4QVw6WjRRVEiGxsgUG2SrqvSswCWBvQR16r0BkoC+zDrw232cVX8XCTb
 Qjj71qgsdrcFGER7g8TPUkvEao8QEdmNCDMY682LMbwrXsZ4XwmWeAB5t2Co8GI7n4puo68JDheZ
 PwC1dufDilC2XWIW9t1zDcwecS0darvdquhj6qnbDpje8QAgKCbUSYtz/+GsFo4ZKrmYvVwhvMaL
 w1xW5JNtD0joM+qy7CvzDYBR2JfWlA9j1T9xC76YlYul5iUC+a/fJfxapEpPvofxDt4M/N3Vn0c+
 xLmNykv5LyH/kd2N7CZ/MOSfJ34BxMc9qiZyOsEAAAAldEVYdGRhdGU6Y3JlYXRlADIwMjItMDYt
 MjRUMjI6MDQ6MDErMDA6MDCRs6IJAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDIyLTA2LTI0VDIyOjA0
 OjAxKzAwOjAw4O4atQAAAABJRU5ErkJggg==
X-Now-Playing: Boris with Merzbow's _2R0I2P0_: "Evol"
Date: Sat, 25 Jun 2022 12:10:54 +0200
In-Reply-To: <83o7yhb49y.fsf@HIDDEN> (Eli Zaretskii's message of "Sat, 25 Jun
 2022 10:17:45 +0300")
Message-ID: <87bkuhkq8h.fsf@HIDDEN>
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-Spam-Report: Spam detection software, running on the system "quimby.gnus.org",
 has NOT identified this incoming email as spam.  The original
 message has been attached to this so you can view it or label
 similar future email.  If you have any questions, see
 @@CONTACT_ADDRESS@@ for details.
 Content preview:  Eli Zaretskii <eliz@HIDDEN> writes: > Thanks. I tried to
 fix this on master, please see if the problem is > gone. Thanks; with that
 patch, I'm no longer able to reproduce the warning (after testing a handful
 of times). 
 Content analysis details:   (-2.9 points, 5.0 required)
 pts rule name              description
 ---- ---------------------- --------------------------------------------------
 -1.0 ALL_TRUSTED            Passed through trusted hosts only via SMTP
 -1.9 BAYES_00               BODY: Bayes spam probability is 0 to 1%
 [score: 0.0000]
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Eli Zaretskii <eliz@HIDDEN> writes:

> Thanks.  I tried to fix this on master, please see if the problem is
> gone.

Thanks; with that patch, I'm no longer able to reproduce the warning
(after testing a handful of times).

-- 
(domestic pets only, the antidote for overdose, milk.)
   bloggy blog: http://lars.ingebrigtsen.no




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Sat, 25 Jun 2022 11:11:02 +0000
Resent-Message-ID: <handler.45898.B45898.16561554263314 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.16561554263314
          (code B ref 45898); Sat, 25 Jun 2022 11:11:02 +0000
Received: (at 45898) by debbugs.gnu.org; 25 Jun 2022 11:10:26 +0000
Received: from localhost ([127.0.0.1]:44219 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o53gI-0000rO-0T
	for submit <at> debbugs.gnu.org; Sat, 25 Jun 2022 07:10:26 -0400
Received: from mail-ej1-f50.google.com ([209.85.218.50]:35683)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <gerd.moellmann@HIDDEN>) id 1o53gE-0000r9-Ea
 for 45898 <at> debbugs.gnu.org; Sat, 25 Jun 2022 07:10:24 -0400
Received: by mail-ej1-f50.google.com with SMTP id pk21so9645582ejb.2
 for <45898 <at> debbugs.gnu.org>; Sat, 25 Jun 2022 04:10:22 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;
 h=mime-version:subject:from:in-reply-to:date:cc
 :content-transfer-encoding:message-id:references:to;
 bh=Z0mQ3zUltwaj5tVmIzKpJc+2SHMweQ0xeoH1a36v5jc=;
 b=DENkdSFykifCsyB98/zrv6Xl6g+yGL2xz03LpF/FXoiUNq0qVUc8kk//5EFe0TRUe0
 YGaDZArAxkmh0AcFsrgO5WGrt2x0EXDWtq2hkgv68BYwu14715Iu8eslSNNGMH7WvVAP
 Za2ZjTevaQnop/bAzLl0LIYWcMNrm3QerypvYymhNvtxycneeQ7oo54hVapCo7FaTe3S
 RzUwr8eJPquUZmDt/0VhuQCZBDA1SOfPu1kK9nIoqpTY7f/ILfI0OUqx1HGWmeMcTcY4
 NSdt/LRBEYArfrkfJ7arXDz8jhyeWDCuG2zGv6ljnh7okoZQkCEwosn/pIpdxz0RtZB2
 XC5w==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112;
 h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc
 :content-transfer-encoding:message-id:references:to;
 bh=Z0mQ3zUltwaj5tVmIzKpJc+2SHMweQ0xeoH1a36v5jc=;
 b=RA/aWbOPjEfyOpOM/49ySqo6MBxzjKYVtnNFQ1r+oPX+lRfnzUmC81KfSFKpPA5mem
 y+NXaFd4PafWJGakWYbFlVCEFTJQ9UYlAxSze4ddRPicB30nmzqv1vwdTcefBmA4Girm
 nDUlJPkTOwbzmNhqwF8Fdl30+jTIZqYWMX1nDuY6OQTLPLvmk2OE7EounSqxb31drpzm
 IQ0/4vrF7/ixgBIiwaTqEVIMO0n/ekG9FXi5F2kIz6O1VQXTTT0lqu7bGhMKZuIiX0fj
 MLNzdpFiVWNbagN1LcsyRigC2Z4iXSSRxVdOT/MgemDDInD5hHUcvnUI/ylPQ4qzVH/d
 UC7A==
X-Gm-Message-State: AJIora/kOOwMfcQx+mjUz6Z8M9kaBWo6JCs3uHjjmocG+KsjeGwZNvx6
 NjgGQotijP5st5BT9e410GqJS4Ud1fqimQ==
X-Google-Smtp-Source: AGRyM1sM/MNkXxPfgJRwoc8EmBRqK8OwqULWmx/38xrtTSB3b45yiLXrVwh8J/HWK5Ey1zNSmZo64A==
X-Received: by 2002:a17:907:a427:b0:71b:6f0b:8beb with SMTP id
 sg39-20020a170907a42700b0071b6f0b8bebmr3387513ejc.496.1656155416466; 
 Sat, 25 Jun 2022 04:10:16 -0700 (PDT)
Received: from smtpclient.apple (p4fe3a040.dip0.t-ipconnect.de.
 [79.227.160.64]) by smtp.gmail.com with ESMTPSA id
 k20-20020a1709063fd400b00722f66fb36csm2447333ejj.112.2022.06.25.04.10.15
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 25 Jun 2022 04:10:15 -0700 (PDT)
Content-Type: text/plain;
	charset=utf-8
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.100.31\))
From: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
In-Reply-To: <83a6a1awv0.fsf@HIDDEN>
Date: Sat, 25 Jun 2022 13:10:14 +0200
Content-Transfer-Encoding: quoted-printable
Message-Id: <B212869F-9D76-4664-BF05-2B17D02F4368@HIDDEN>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN>
 <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN>
 <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN>
 <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN>
 <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN>
 <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN>
 <0B5FE52E-BC81-4A05-86F1-91C6AFCB6F7D@HIDDEN> <83r13db6hp.fsf@HIDDEN>
 <56F03F59-40AD-48F2-92C8-9858C2423327@HIDDEN> <83a6a1awv0.fsf@HIDDEN>
X-Mailer: Apple Mail (2.3696.100.31)
X-Spam-Score: -0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)



> On 2022-06-25,, at 11:57 , Eli Zaretskii <eliz@HIDDEN> wrote:
>=20
>> From: Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN>
>> Date: Sat, 25 Jun 2022 11:49:42 +0200
>> Cc: 45898 <at> debbugs.gnu.org
>>=20
>> Or maybe "ticks" is already a good enough name?  We could then simply =
have update_ticks and good.  Or eticks to not confuse it with time =
ticks, if that ever happens.
>=20
> You mean, just update_ticks?  That's too general, IMO.  I'd like
> people to have an idea what that does when they just see the call.
>=20
> But I'm not good with names.

I love update_ticks!  And I'm good with names, trust me ;-).  And I'm =
volunteering to do the work!

>> You mean a case, where small numbers of ticks sum up by calling these =
Lisp functions often enough?
>=20
> Actually, I meant something even simpler: a Lisp program that calls,
> say, regexp search repeatedly, to accumulate enough ticks that would
> signal an error, thus aborting that Lisp program.

That's 100% what I also meant.  Sorry for not being clear.

Do you think redisplaying_p would suffice as an indicator? =20

That should be true if and only if redisplay_internal is in the call =
stack.  Also, redisplay_internal is a no-op if called recursively.  Or =
better said, both used to be the case.






Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Sat, 25 Jun 2022 11:22:02 +0000
Resent-Message-ID: <handler.45898.B45898.165615609912644 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Lars Ingebrigtsen <larsi@HIDDEN>
Cc: gerd.moellmann@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165615609912644
          (code B ref 45898); Sat, 25 Jun 2022 11:22:02 +0000
Received: (at 45898) by debbugs.gnu.org; 25 Jun 2022 11:21:39 +0000
Received: from localhost ([127.0.0.1]:44231 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o53r9-0003Hr-8K
	for submit <at> debbugs.gnu.org; Sat, 25 Jun 2022 07:21:39 -0400
Received: from eggs.gnu.org ([209.51.188.92]:50518)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1o53r3-0003Ha-SF
 for 45898 <at> debbugs.gnu.org; Sat, 25 Jun 2022 07:21:38 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:57320)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o53qy-0005hF-AL; Sat, 25 Jun 2022 07:21:28 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=/PsQf2Ib1Pk7ByLHhVJes8iYGdlbJcuc+ZlRZz0dgEo=; b=PEUlKNXIn6l5msJYZYSo
 sgVKvkwxKkYuCyPvwmoVeIWEXVs9B0w79S/a/LiqhCg0G9KlPfs8CYmrLR1DdrKXeiWk3yCeT2DjG
 wZw5n44cWQFh3kS5T8xTyWRX4BjVQyeonR1gsJkjfCoEOU+3Iya/ta6bsKp4U00kVQNk+FrAS2h1r
 57vjyBk6WBTOf8OwAqigIfcADqsHxgnWVMjnpMcubBP6+nhGCqpjMDHDtHKiotapn7wT1qBbM1+C9
 ZLzoprFQwByaPJO7KvSZl8YLauhSZbWRg4Xp+abYFmVdQlYEHt0ycp04dFaL3VnNkX0u3AZyQi41G
 HWGu5GFPPEvi9w==;
Received: from [87.69.77.57] (port=4869 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o53qx-0003tG-Op; Sat, 25 Jun 2022 07:21:28 -0400
Date: Sat, 25 Jun 2022 14:21:25 +0300
Message-Id: <838rplaszu.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <87bkuhkq8h.fsf@HIDDEN> (message from Lars Ingebrigtsen on Sat, 
 25 Jun 2022 12:10:54 +0200)
References: <165605725704.24125.17210424600068379407@HIDDEN>
 <20220624075417.BFA82C0169C@HIDDEN>
 <87wnd6v34k.fsf@HIDDEN> <83mte2coqg.fsf@HIDDEN>
 <87fsjuqpzi.fsf@HIDDEN> <83k096clsx.fsf@HIDDEN>
 <8735fup5oh.fsf@HIDDEN> <83a6a2cher.fsf@HIDDEN>
 <874k09nau4.fsf@HIDDEN> <83o7yhb49y.fsf@HIDDEN> <87bkuhkq8h.fsf@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=iso-8859-1
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Lars Ingebrigtsen <larsi@HIDDEN>
> Cc: 45898 <at> debbugs.gnu.org,  Gerd Möllmann
>  <gerd.moellmann@HIDDEN>
> Date: Sat, 25 Jun 2022 12:10:54 +0200
> 
> Eli Zaretskii <eliz@HIDDEN> writes:
> 
> > Thanks.  I tried to fix this on master, please see if the problem is
> > gone.
> 
> Thanks; with that patch, I'm no longer able to reproduce the warning
> (after testing a handful of times).

Great, thanks for testing.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Sat, 25 Jun 2022 11:30:02 +0000
Resent-Message-ID: <handler.45898.B45898.165615659813406 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Cc: 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165615659813406
          (code B ref 45898); Sat, 25 Jun 2022 11:30:02 +0000
Received: (at 45898) by debbugs.gnu.org; 25 Jun 2022 11:29:58 +0000
Received: from localhost ([127.0.0.1]:44246 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o53zB-0003UA-LA
	for submit <at> debbugs.gnu.org; Sat, 25 Jun 2022 07:29:57 -0400
Received: from eggs.gnu.org ([209.51.188.92]:51932)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1o53z7-0003Ts-3g
 for 45898 <at> debbugs.gnu.org; Sat, 25 Jun 2022 07:29:56 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:57430)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o53z1-0000aM-4s; Sat, 25 Jun 2022 07:29:47 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=yb5m8TIzPa+4leW8rVTbSh+S1Z1cziqFg3uYZvrV1FE=; b=ICFqYiK1RgPJVQzkpYe4
 vVaa8rWkdXHkB5S/jbsttq9ORrTKgKpxx3kZUGCGEq/ziOJvhtiDMXRlZvmsHccAQpKTlmjOjQu8U
 cx4SwfUiqzaCOcPfgKBnolRUBJCyFWz25uI1f38hMIXHge+Znd1yBuqdGivM+J6Ys1SqgsaAqdEBf
 sHzUNEC0NzgD+I10Aydgixg6Ki/m23KqKlije4v3iQns+ZcbPwdiRN7970y8QWv2cm2HqXHSHon9r
 SIIsWDJT/OFx/PYp5DVSlfApzv3zjg31Io5n4dvlYygkQTM1CND7mXgII1ZxwaB0rlFmI5YEvVohE
 tk8Da1WzYnQNsA==;
Received: from [87.69.77.57] (port=1405 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o53yz-00054Z-4z; Sat, 25 Jun 2022 07:29:46 -0400
Date: Sat, 25 Jun 2022 14:29:41 +0300
Message-Id: <835ykpasm2.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <B212869F-9D76-4664-BF05-2B17D02F4368@HIDDEN> (message from
 Gerd =?UTF-8?Q?M=C3=B6llmann?= on Sat, 25 Jun 2022 13:10:14 +0200)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN>
 <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN>
 <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN>
 <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN>
 <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN>
 <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN>
 <0B5FE52E-BC81-4A05-86F1-91C6AFCB6F7D@HIDDEN> <83r13db6hp.fsf@HIDDEN>
 <56F03F59-40AD-48F2-92C8-9858C2423327@HIDDEN> <83a6a1awv0.fsf@HIDDEN>
 <B212869F-9D76-4664-BF05-2B17D02F4368@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Gerd Möllmann <gerd.moellmann@HIDDEN>
> Date: Sat, 25 Jun 2022 13:10:14 +0200
> Cc: 45898 <at> debbugs.gnu.org
> 
> > You mean, just update_ticks?  That's too general, IMO.  I'd like
> > people to have an idea what that does when they just see the call.
> > 
> > But I'm not good with names.
> 
> I love update_ticks!  And I'm good with names, trust me ;-).  And I'm volunteering to do the work!

Fine with me, have fun.

> >> You mean a case, where small numbers of ticks sum up by calling these Lisp functions often enough?
> > 
> > Actually, I meant something even simpler: a Lisp program that calls,
> > say, regexp search repeatedly, to accumulate enough ticks that would
> > signal an error, thus aborting that Lisp program.
> 
> That's 100% what I also meant.  Sorry for not being clear.
> 
> Do you think redisplaying_p would suffice as an indicator?  
> 
> That should be true if and only if redisplay_internal is in the call stack.  Also, redisplay_internal is a no-op if called recursively.  Or better said, both used to be the case.

Yes, I know; and it's still the case.  Originally, I indeed only
looked at redisplaying_p.  But then cases with C-n and C-v wouldn't be
caught, because these commands, although they call the display code,
run without redisplay_internal in the call stack.  And very sluggish
response from these and similar commands is generally perceived as
"redisplay problems".  So I wanted to catch them as well, without
waiting for redisplay cycle they cause (which by itself may or may not
be "too slow" -- just moving the cursor is an optimization there, as
you know).




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Sat, 25 Jun 2022 12:22:01 +0000
Resent-Message-ID: <handler.45898.B45898.16561596752842 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.16561596752842
          (code B ref 45898); Sat, 25 Jun 2022 12:22:01 +0000
Received: (at 45898) by debbugs.gnu.org; 25 Jun 2022 12:21:15 +0000
Received: from localhost ([127.0.0.1]:44342 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o54mp-0000jm-0a
	for submit <at> debbugs.gnu.org; Sat, 25 Jun 2022 08:21:15 -0400
Received: from mail-ej1-f41.google.com ([209.85.218.41]:38903)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <gerd.moellmann@HIDDEN>) id 1o54mZ-0000iP-CF
 for 45898 <at> debbugs.gnu.org; Sat, 25 Jun 2022 08:21:13 -0400
Received: by mail-ej1-f41.google.com with SMTP id g26so9827619ejb.5
 for <45898 <at> debbugs.gnu.org>; Sat, 25 Jun 2022 05:20:59 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;
 h=mime-version:subject:from:in-reply-to:date:cc
 :content-transfer-encoding:message-id:references:to;
 bh=IieYeQf49bC/daMU5mMW4dMfDPHKQiE7WxtuqTVC+Fg=;
 b=BQ83CnUHISQ9/JRBas2g4JYnsiZ//kWX9RpJgh+FfkZxgHA7bJqKYPkAaa+L3T4ql7
 XMcISbejeqYCAHMEa9+YDigI049CNsv/+durfXFYjWrz9gmwVS4ton0r+PZESRhvrl1V
 wbWjW1irI6qPa/PwQsD8LhHycAOdKN7IHCjigJorH6Qs/nxBb+lmpuFloGLkOuT7Ku/T
 TD3ThlH2d83Som/4ndHadDLABhtjk0ZJW+9kDhqNwo8pTvi+W+3+k5NspSEeObrMVU+S
 Wfl4O/W1v3bHAesnZXd1taQ/eaVnjLB25DqFtCshqKWd62/8rWzf1XiyrMK9IT/d4OCs
 9DWw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112;
 h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc
 :content-transfer-encoding:message-id:references:to;
 bh=IieYeQf49bC/daMU5mMW4dMfDPHKQiE7WxtuqTVC+Fg=;
 b=HGM9eYxo+fxHkb07OzMmGSyfXK/VBRFXi+f8KJFTfOKWvWLc9AF9KlyVkBAyBPvnHx
 6tkz11KSFX2pZXBPzdBEz/dDuP1ZCy9g3U9q1Uujx4o3TCzi8EaqBt1lGGLsknhx1ilm
 kRkh+LSpfIyVl1G1G0ho3LfEo2KPv+bRktnIjH7/6b6FyaN8HtsFIzzGEJUUdbzEj4ci
 t26AAOp5qZ6hSmjHAdySDBRFACgNLhxK7thU/p7FMopugQN6suBL93xAmyenmgoZ+aZZ
 84h4JnY2WN/kMKQAILL4a1FfCBzVzFqNCuuUWUakGUPTuHjdxeQsezEHguJ4WysSFHw0
 V7KQ==
X-Gm-Message-State: AJIora80XS4pBQ9Q4ljkNHQwuohJCSdBzjcevSq5p8/0sZTARUJ8qLH2
 w4YIVDKuGRxqgiKUHQvtYzClDCTGn5F3iA==
X-Google-Smtp-Source: AGRyM1saaJsWlNMHUdg0yHHmvmx3MDwlK5xpl3B8BErC+jwXrPIVCPQmIMeZX+uwU1lOAxMsNKkJiQ==
X-Received: by 2002:a17:907:7da2:b0:711:f36e:b855 with SMTP id
 oz34-20020a1709077da200b00711f36eb855mr3809718ejc.308.1656159653606; 
 Sat, 25 Jun 2022 05:20:53 -0700 (PDT)
Received: from smtpclient.apple (p4fe3a040.dip0.t-ipconnect.de.
 [79.227.160.64]) by smtp.gmail.com with ESMTPSA id
 z23-20020a170906435700b007094f98788csm2551255ejm.113.2022.06.25.05.20.52
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Sat, 25 Jun 2022 05:20:52 -0700 (PDT)
Content-Type: text/plain;
	charset=us-ascii
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.100.31\))
From: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
In-Reply-To: <835ykpasm2.fsf@HIDDEN>
Date: Sat, 25 Jun 2022 14:20:52 +0200
Content-Transfer-Encoding: 7bit
Message-Id: <F23D0CE3-239E-4F36-BE19-627A584114F1@HIDDEN>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN>
 <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN>
 <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN>
 <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN>
 <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN>
 <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN>
 <0B5FE52E-BC81-4A05-86F1-91C6AFCB6F7D@HIDDEN> <83r13db6hp.fsf@HIDDEN>
 <56F03F59-40AD-48F2-92C8-9858C2423327@HIDDEN> <83a6a1awv0.fsf@HIDDEN>
 <B212869F-9D76-4664-BF05-2B17D02F4368@HIDDEN> <835ykpasm2.fsf@HIDDEN>
X-Mailer: Apple Mail (2.3696.100.31)
X-Spam-Score: 0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)



> Yes, I know; and it's still the case.  Originally, I indeed only
> looked at redisplaying_p.  But then cases with C-n and C-v wouldn't be
> caught, because these commands, although they call the display code,
> run without redisplay_internal in the call stack.  And very sluggish
> response from these and similar commands is generally perceived as
> "redisplay problems".  So I wanted to catch them as well, without
> waiting for redisplay cycle they cause (which by itself may or may not
> be "too slow" -- just moving the cursor is an optimization there, as
> you know).

Do you have a recipe for reproducing that?

I might take at look into this, if/when I manage to debug Emacs on my M1.







Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Sat, 25 Jun 2022 12:55:02 +0000
Resent-Message-ID: <handler.45898.B45898.16561616796101 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Cc: 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.16561616796101
          (code B ref 45898); Sat, 25 Jun 2022 12:55:02 +0000
Received: (at 45898) by debbugs.gnu.org; 25 Jun 2022 12:54:39 +0000
Received: from localhost ([127.0.0.1]:44387 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o55J9-0001aL-8x
	for submit <at> debbugs.gnu.org; Sat, 25 Jun 2022 08:54:39 -0400
Received: from eggs.gnu.org ([209.51.188.92]:37820)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1o55J7-0001a4-24
 for 45898 <at> debbugs.gnu.org; Sat, 25 Jun 2022 08:54:38 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:60390)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o55J1-0003cs-OX; Sat, 25 Jun 2022 08:54:31 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=AXbdo1zCcBdj75T/GqIYHyBdsRH+jzsvcAGco1GrUNE=; b=hlLQW6Szc7chQgu0Nf8z
 ALShXTPXszf+TNYvzscAfviP+1BD0hmISd56eWE1g7Zv2Og6ZcrA2m4eY6tlL99hqzvr9fgdJljyE
 Qp29BLhjZcqrCH7jLw7nPRg+o3xV1/YyRdlOK/MPjFa1ZvKJzJQp0G0z11Z9G4TvgX8vwPadPDp+i
 pN4y2VwHoghnjLsfSCP5MNVyskE36d8v69M4vUI63hPNV+VqY2Ub1qZrqM4APci2ss5a6dQ0JVUIF
 AfSHrr1t2r0p0aYF1EYRbzm8n4FNPowue09yMYrW+UJtMlQYeo3iDShZJTcdw/hyDDcbhizfauJbC
 0v5bW4IrxifIYg==;
Received: from [87.69.77.57] (port=2627 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o55Iy-0006AA-KK; Sat, 25 Jun 2022 08:54:30 -0400
Date: Sat, 25 Jun 2022 15:54:25 +0300
Message-Id: <8335fsc39a.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <F23D0CE3-239E-4F36-BE19-627A584114F1@HIDDEN> (message from
 Gerd =?UTF-8?Q?M=C3=B6llmann?= on Sat, 25 Jun 2022 14:20:52 +0200)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <8335gf5er3.fsf@HIDDEN> <87leu686z4.fsf@HIDDEN> <83sfoe2k0j.fsf@HIDDEN>
 <87zgim6qtt.fsf@HIDDEN> <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN>
 <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN> <83v8t6us8t.fsf@HIDDEN>
 <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN>
 <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN>
 <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN>
 <0B5FE52E-BC81-4A05-86F1-91C6AFCB6F7D@HIDDEN> <83r13db6hp.fsf@HIDDEN>
 <56F03F59-40AD-48F2-92C8-9858C2423327@HIDDEN> <83a6a1awv0.fsf@HIDDEN>
 <B212869F-9D76-4664-BF05-2B17D02F4368@HIDDEN> <835ykpasm2.fsf@HIDDEN>
 <F23D0CE3-239E-4F36-BE19-627A584114F1@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Gerd Möllmann <gerd.moellmann@HIDDEN>
> Date: Sat, 25 Jun 2022 14:20:52 +0200
> Cc: 45898 <at> debbugs.gnu.org
> 
> 
> 
> > Yes, I know; and it's still the case.  Originally, I indeed only
> > looked at redisplaying_p.  But then cases with C-n and C-v wouldn't be
> > caught, because these commands, although they call the display code,
> > run without redisplay_internal in the call stack.  And very sluggish
> > response from these and similar commands is generally perceived as
> > "redisplay problems".  So I wanted to catch them as well, without
> > waiting for redisplay cycle they cause (which by itself may or may not
> > be "too slow" -- just moving the cursor is an optimization there, as
> > you know).
> 
> Do you have a recipe for reproducing that?
> 
> I might take at look into this, if/when I manage to debug Emacs on my M1.

In

  https://debbugs.gnu.org/cgi/bugreport.cgi?bug=45898#80

Phil Sainty shared URLs for some files that are notoriously slow to
display (and originally were the motivation for developing and
improving the so-long-mode).  Try C-n and C-v with any of them.

This message:

  https://lists.gnu.org/archive/html/help-gnu-emacs/2022-05/msg00070.html

mentions another problematic file.  With it, you need first to arrive
to buffer position 135,000, before C-n/C-v become sluggish.

These are the sample files I used to test the implementation of this
feature.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Sat, 25 Jun 2022 12:58:01 +0000
Resent-Message-ID: <handler.45898.B45898.16561618376344 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.16561618376344
          (code B ref 45898); Sat, 25 Jun 2022 12:58:01 +0000
Received: (at 45898) by debbugs.gnu.org; 25 Jun 2022 12:57:17 +0000
Received: from localhost ([127.0.0.1]:44391 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o55Lg-0001eF-Mz
	for submit <at> debbugs.gnu.org; Sat, 25 Jun 2022 08:57:16 -0400
Received: from mail-ej1-f53.google.com ([209.85.218.53]:34583)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <gerd.moellmann@HIDDEN>) id 1o55Le-0001e1-KC
 for 45898 <at> debbugs.gnu.org; Sat, 25 Jun 2022 08:57:15 -0400
Received: by mail-ej1-f53.google.com with SMTP id t5so10002533eje.1
 for <45898 <at> debbugs.gnu.org>; Sat, 25 Jun 2022 05:57:14 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;
 h=content-transfer-encoding:from:mime-version:subject:date:message-id
 :references:cc:in-reply-to:to;
 bh=KCeP6S8zadsQ6Jg8euqCV4G/DhLtu8p+3hnQBVp8oro=;
 b=HhbyKOTmnKoYstUFVZFZC3ukWS00ZlBfV9j36vuXXaJwFet2uatzo0YiA17xu700ql
 p8GryzBmzq2c1BAUJy6AItS3Zn0Cu9ablUOfQZmElb9gFtZzMLwVBDaA4eDwLLEs578o
 Af2Dps9QRsBMK4rGS5LIcHnZJP9FpXrE8KRVARR9iwA9AVoksrbuYtPwOf00BYN/r3gO
 JKNiUx7GarUzjda2mmX3eAucF+YCZbaSX5GXYBc0Uzcsf+KhMmB9db1hODh9BSkV51A5
 Y99peWiiNSWMS1O99FYtjMg3OEs2Uv02r0CCeBcG5JB84fWF461WSBcAVk8to4kHKCQC
 L58A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112;
 h=x-gm-message-state:content-transfer-encoding:from:mime-version
 :subject:date:message-id:references:cc:in-reply-to:to;
 bh=KCeP6S8zadsQ6Jg8euqCV4G/DhLtu8p+3hnQBVp8oro=;
 b=xMSQ2XTwlN4rmqUecyTlFzOzq79nvLX09sTG7lBqIZGl4iK5PHgBUrCYiRyfoRaJ2l
 Owae1goFk90IyJ/bYzgkJBTmMNdp6W1od7qs3E4x6vUng8iMzbQNtGpZH+xgDM5RyFHa
 q3wfokj++hPItVGAL7l29bXcoc9duB8EgPXY9WK2zjuo4H6uSD9r+xic5yf6j4BDulOB
 Kpa9AWK8gq4KpqMZTCWXpDauLNKT5yL5tKv57OYTIs2N6ypV96L0ZhfI+DLO6xeedPfA
 lK8koWQZSzJaXXbrwlITpq38y9QAXATTrmQ0jO7srqtdypi+VuJyL0MMdWi4LLLdKuwz
 4yow==
X-Gm-Message-State: AJIora/+fDxgQlW4NJlCGvB5q9HLpTeaT4hLP9rdWV2kESPuUbMIuVH1
 ifSmbn7W9Td2AOStn347GgypYCXyLcupUw==
X-Google-Smtp-Source: AGRyM1sKYNFlygy/Lgnjxi1tWdDp6vZjnbyo8SK524DdVpjBL59oyQ2gy3Mka0b9mkEH9ArNDlgihA==
X-Received: by 2002:a17:907:9625:b0:726:3a61:224d with SMTP id
 gb37-20020a170907962500b007263a61224dmr3808943ejc.286.1656161828216; 
 Sat, 25 Jun 2022 05:57:08 -0700 (PDT)
Received: from smtpclient.apple (p4fe3a040.dip0.t-ipconnect.de.
 [79.227.160.64]) by smtp.gmail.com with ESMTPSA id
 p23-20020a1709061b5700b0070e3f58ed5csm2619397ejg.48.2022.06.25.05.57.07
 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128);
 Sat, 25 Jun 2022 05:57:07 -0700 (PDT)
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
From: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Mime-Version: 1.0 (1.0)
Date: Sat, 25 Jun 2022 14:57:06 +0200
Message-Id: <FB0C6F37-DCC1-4826-93AC-FBDF1EFB3222@HIDDEN>
References: <8335fsc39a.fsf@HIDDEN>
In-Reply-To: <8335fsc39a.fsf@HIDDEN>
X-Mailer: iPad Mail (19F77)
X-Spam-Score: -0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)

Thanks!

> Am 25.06.2022 um 14:54 schrieb Eli Zaretskii <eliz@HIDDEN>:
>=20
> =EF=BB=BF
>>=20
>> From: Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN>
>> Date: Sat, 25 Jun 2022 14:20:52 +0200
>> Cc: 45898 <at> debbugs.gnu.org
>>=20
>>=20
>>=20
>>> Yes, I know; and it's still the case.  Originally, I indeed only
>>> looked at redisplaying_p.  But then cases with C-n and C-v wouldn't be
>>> caught, because these commands, although they call the display code,
>>> run without redisplay_internal in the call stack.  And very sluggish
>>> response from these and similar commands is generally perceived as
>>> "redisplay problems".  So I wanted to catch them as well, without
>>> waiting for redisplay cycle they cause (which by itself may or may not
>>> be "too slow" -- just moving the cursor is an optimization there, as
>>> you know).
>>=20
>> Do you have a recipe for reproducing that?
>>=20
>> I might take at look into this, if/when I manage to debug Emacs on my M1.=

>=20
> In
>=20
>  https://debbugs.gnu.org/cgi/bugreport.cgi?bug=3D45898#80
>=20
> Phil Sainty shared URLs for some files that are notoriously slow to
> display (and originally were the motivation for developing and
> improving the so-long-mode).  Try C-n and C-v with any of them.
>=20
> This message:
>=20
>  https://lists.gnu.org/archive/html/help-gnu-emacs/2022-05/msg00070.html
>=20
> mentions another problematic file.  With it, you need first to arrive
> to buffer position 135,000, before C-n/C-v become sluggish.
>=20
> These are the sample files I used to test the implementation of this
> feature.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Stefan Monnier <monnier@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Wed, 29 Jun 2022 16:19:02 +0000
Resent-Message-ID: <handler.45898.B45898.165651953730651 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>, psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165651953730651
          (code B ref 45898); Wed, 29 Jun 2022 16:19:02 +0000
Received: (at 45898) by debbugs.gnu.org; 29 Jun 2022 16:18:57 +0000
Received: from localhost ([127.0.0.1]:60029 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o6aP3-0007yJ-CD
	for submit <at> debbugs.gnu.org; Wed, 29 Jun 2022 12:18:57 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:60205)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <monnier@HIDDEN>) id 1o6aP1-0007y4-Nd
 for 45898 <at> debbugs.gnu.org; Wed, 29 Jun 2022 12:18:56 -0400
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
 by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 4CB798070D;
 Wed, 29 Jun 2022 12:18:50 -0400 (EDT)
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
 by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id C7FE180636;
 Wed, 29 Jun 2022 12:18:48 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
 s=mail; t=1656519528;
 bh=1/vJfF9WXKV3JE5yUYiRMxlFbRBs8BYk0lxrs7/mQm8=;
 h=From:To:Cc:Subject:References:Date:In-Reply-To:From;
 b=jeEYh8S7M9lggiP09QsNDncI0lUbX4eOP5Be98FG3yX8mjRDfhqq91GkZm4wkC1qC
 +K1PCkR5egGMv4vfqdFbdocoBJFDPiOoBWMA5v+d56VDB5YZpDOdkf78VOjzMVw1dD
 pJdOmevUt6KzC+Lol5GlEPzuzm/QgiSZ5lfRV9kqP6Klr0keuIu3DBl+iHaIuYsh8J
 Mczkc4hnzAbYCxWYH2cT5vpgo3DSz3LBNGsmxxMWZk/81W5u22n7/RStLd1mdDGbI9
 IuRX/lUNIronVaLw9GOWZmuMvL8strjWbqmqpQTpV3/mHsPOHdcd+ElMlDpCaBN4RA
 /KKLcqEZmQHzQ==
Received: from lechazo (lechon.iro.umontreal.ca [132.204.27.242])
 by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id B29AE1204C0;
 Wed, 29 Jun 2022 12:18:48 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
Message-ID: <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN>
 <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN>
 <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN>
 <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN>
 <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN>
 <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN>
Date: Wed, 29 Jun 2022 12:18:47 -0400
In-Reply-To: <83o7yicx3p.fsf@HIDDEN> (Eli Zaretskii's message of "Fri, 24 Jun
 2022 10:57:30 +0300")
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results:  0
 ALL_TRUSTED                -1 Passed through trusted hosts only via SMTP
 AWL 0.200 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DKIM_SIGNED               0.1 Message has a DKIM or DK signature,
 not necessarily valid
 DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
 DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
 domain T_SCC_BODY_TEXT_LINE    -0.01 -
X-SPAM-LEVEL: 
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

Eli Zaretskii [2022-06-24 10:57:30] wrote:
>> Yes, that's exactly what I'm proposing in the paragraph you quoted.
>> I think it makes sense to bound the growth of the region due to
>> `font-lock-extend-region-functions`.  We could bound it where we handle
>> `font-lock-extend-region-functions`, or we could bound it just inside
>> `font-lock-extend-region-wholelines`.
>
> I hope this will be done soon.

How 'bout the patch below?

It doesn't seem to make much difference on the `medium_line.json`
example from Phil, tho :-(


        Stefan


diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index df0a26f4d0f..c6bd93eb2c8 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -1258,19 +1258,31 @@ font-lock-extend-region-multiline
           (setq font-lock-end new-end))))
     changed))
 
+(defvar font-lock-wholeline-max 10000
+  "Maximum line length for `font-lock-extend-region-wholelines'.
+If lines are longer than that, `font-lock-extend-region-wholelines' will
+not always round up to whole lines, and misfontification may occur.
+This is a tradeoff between correctly applying the fontification rules,
+and avoiding major slowdown on pathologically long lines.")
+
 (defun font-lock-extend-region-wholelines ()
   "Move fontification boundaries to beginning of lines."
   (let ((changed nil))
     (goto-char font-lock-beg)
     (unless (bolp)
-      (setq changed t font-lock-beg
-            (let ((inhibit-field-text-motion t))
-              (line-beginning-position))))
+      (let ((new (max (- font-lock-beg font-lock-wholeline-max)
+                      (let ((inhibit-field-text-motion t))
+                        (line-beginning-position)))))
+        (unless (eql new font-lock-beg)
+          (setq changed t)
+          (setq font-lock-beg new))))
     (goto-char font-lock-end)
     (unless (bolp)
-      (unless (eq font-lock-end
-                  (setq font-lock-end (line-beginning-position 2)))
-        (setq changed t)))
+      (let ((new (min (+ font-lock-end font-lock-wholeline-max)
+                      (line-beginning-position 2))))
+        (unless (eql new font-lock-end)
+          (setq changed t)
+          (setq font-lock-end new))))
     changed))
 
 (defun font-lock-default-fontify-region (beg end loudly)





Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Wed, 29 Jun 2022 19:08:02 +0000
Resent-Message-ID: <handler.45898.B45898.16565296448853 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Stefan Monnier <monnier@HIDDEN>
Cc: gerd.moellmann@HIDDEN, psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.16565296448853
          (code B ref 45898); Wed, 29 Jun 2022 19:08:02 +0000
Received: (at 45898) by debbugs.gnu.org; 29 Jun 2022 19:07:24 +0000
Received: from localhost ([127.0.0.1]:60250 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o6d24-0002Ij-3V
	for submit <at> debbugs.gnu.org; Wed, 29 Jun 2022 15:07:24 -0400
Received: from eggs.gnu.org ([209.51.188.92]:45896)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1o6d1w-0002IO-40
 for 45898 <at> debbugs.gnu.org; Wed, 29 Jun 2022 15:07:22 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:35128)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o6d1q-0003Z8-BQ; Wed, 29 Jun 2022 15:07:10 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=vko8GnhHix1bRTPmdxy6E6fymWZUwuBYSTqogxdEYaE=; b=nh3p/GwAjjjEbKAOxnbY
 6b6Gyw0AnhLIEO5aQJXAbH+F284zN/HJ09r1tICaW/dAHcb5MK6F7OTfNmrmNstt0UHLh4LN5+bNc
 hjasp8HUC3aQMa09RlSxaVc9SBkds78oPWx2q5J1n988zen9D6MaYsxtbVtLhvnv7Ab+vwtDXVY8D
 gswh1XE5vuLiZespJndPedqQXc95oeYoJcszaMIzm9SNcZ4NJqHw6SpBk301MW3DazDV09laAsoNw
 nOsTEx/I1RgPyFDfc3xY0a7C+pvH459hD1mYSom3bxhPPi5JINYWzNI5xJ2sdsIXeWceQu+Y7aXp2
 JCUOHzns6m34Gg==;
Received: from [87.69.77.57] (port=1675 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o6d1p-0006Gl-Rd; Wed, 29 Jun 2022 15:07:10 -0400
Date: Wed, 29 Jun 2022 22:07:15 +0300
Message-Id: <83pmir5lwc.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> (message from Stefan
 Monnier on Wed, 29 Jun 2022 12:18:47 -0400)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <83sfoe2k0j.fsf@HIDDEN> <87zgim6qtt.fsf@HIDDEN>
 <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN>
 <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN>
 <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN>
 <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN>
 <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN>
 <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Stefan Monnier <monnier@HIDDEN>
> Cc: Gerd Möllmann <gerd.moellmann@HIDDEN>,
>   larsi@HIDDEN,
>   psainty@HIDDEN,  Emacs-hacker2018@HIDDEN,  45898 <at> debbugs.gnu.org
> Date: Wed, 29 Jun 2022 12:18:47 -0400
> 
> Eli Zaretskii [2022-06-24 10:57:30] wrote:
> >> Yes, that's exactly what I'm proposing in the paragraph you quoted.
> >> I think it makes sense to bound the growth of the region due to
> >> `font-lock-extend-region-functions`.  We could bound it where we handle
> >> `font-lock-extend-region-functions`, or we could bound it just inside
> >> `font-lock-extend-region-wholelines`.
> >
> > I hope this will be done soon.
> 
> How 'bout the patch below?

Thanks.

> It doesn't seem to make much difference on the `medium_line.json`
> example from Phil, tho :-(

In what case does it make much difference?

And how did you test whether it makes a difference?




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Stefan Monnier <monnier@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Wed, 29 Jun 2022 21:08:01 +0000
Resent-Message-ID: <handler.45898.B45898.165653688021780 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: gerd.moellmann@HIDDEN, psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165653688021780
          (code B ref 45898); Wed, 29 Jun 2022 21:08:01 +0000
Received: (at 45898) by debbugs.gnu.org; 29 Jun 2022 21:08:00 +0000
Received: from localhost ([127.0.0.1]:60352 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o6eul-0005fE-Th
	for submit <at> debbugs.gnu.org; Wed, 29 Jun 2022 17:08:00 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:48088)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <monnier@HIDDEN>) id 1o6eui-0005et-38
 for 45898 <at> debbugs.gnu.org; Wed, 29 Jun 2022 17:07:58 -0400
Received: from pmg3.iro.umontreal.ca (localhost [127.0.0.1])
 by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 54892441318;
 Wed, 29 Jun 2022 17:07:50 -0400 (EDT)
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
 by pmg3.iro.umontreal.ca (Proxmox) with ESMTP id 55E7D4416B1;
 Wed, 29 Jun 2022 17:07:47 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
 s=mail; t=1656536867;
 bh=PXojWVq8F32lFvGSm6l0dylPWAnblA1KAAjuazpoT34=;
 h=From:To:Cc:Subject:References:Date:In-Reply-To:From;
 b=bUihG1jgn1ir2+5jLn1NhyqbGa0zjEfPW0WLxNBhJ8N163whLvAiGIUyGuSDJ9a+C
 rH5tJacT031Qg18lOtprvNhSREt+/+B3LUVKZa8IPoOm2OAUCxRE0qxK0fg/VjmdCU
 Of6mzLpz19HVff/JU5Om4D9DEn9WkzR93R/DEEp9LFAY6OkNKZpqS++6IwxxTpMM5D
 oDEICcm7h+j8DXQIN3rfMavh/OjRHXqzcXKN7VMq6EU8x6mgTHRI4tw23icV77U65B
 WHGWJ45gX1AhMoa+LkUACuQsYL7nG9M0s/FoWvm+wpk7JEegncgOmI8SbAa76VG+m8
 GxLnquxBrPxjw==
Received: from lechazo (lechon.iro.umontreal.ca [132.204.27.242])
 by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 0F071120180;
 Wed, 29 Jun 2022 17:07:47 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
Message-ID: <jwvilojnqfb.fsf-monnier+emacs@HIDDEN>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN>
 <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN>
 <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN>
 <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN>
 <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN>
 <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN>
Date: Wed, 29 Jun 2022 17:07:45 -0400
In-Reply-To: <83pmir5lwc.fsf@HIDDEN> (Eli Zaretskii's message of "Wed, 29 Jun
 2022 22:07:15 +0300")
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results:  0
 ALL_TRUSTED                -1 Passed through trusted hosts only via SMTP
 AWL 0.231 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DKIM_SIGNED               0.1 Message has a DKIM or DK signature,
 not necessarily valid
 DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
 DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
 domain T_SCC_BODY_TEXT_LINE    -0.01 -
X-SPAM-LEVEL: 
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

>> How 'bout the patch below?
> Thanks.

Doesn't work: the looping around font-lock-extend-region-functions ends
up calling `font-lock-extend-region-wholelines` repeatedly as long as
the bounds a grown and so the bounds keep growing until we're back at
square one.

The patch below addresses this problem by truncating in a more careful
way, so `font-lock-extend-region-wholelines` is idempotent
(i.e. repeated calls don't keep growing the bounds).  It's also careful
to use that same "chunking" in syntax.el and in the antiblink code of
jit-lock.  Tracing `syntax-ppss` and `syntax-propertize-wholelines`
suggests that this patch is sufficient to keep most of the work "local"
rather than applying to the whole line/file all the time.

>> It doesn't seem to make much difference on the `medium_line.json`
>> example from Phil, tho :-(
> In what case does it make much difference?

None that I can see :-(

> And how did you test whether it makes a difference?

I just did

    src/emacs -Q ~/tmp/medium_line.json

and then tried to move around in the buffer, search with Isearch, and
insert a few chars.
I don't notice any difference with or without the patch :-(



        Stefan


diff --git a/lisp/emacs-lisp/syntax.el b/lisp/emacs-lisp/syntax.el
index 36b0c56e953..e1be3015838 100644
--- a/lisp/emacs-lisp/syntax.el
+++ b/lisp/emacs-lisp/syntax.el
@@ -124,15 +124,49 @@ syntax-propertize-extend-region-functions
 otherwise nil.  That construct can be a two character comment
 delimiter or an Escaped or Char-quoted character."))
 
-(defun syntax-propertize-wholelines (start end)
-  "Extend the region delimited by START and END to whole lines.
+(defvar syntax-wholeline-max 10000
+  "Maximum line length for syntax operations.
+If lines are longer than that, syntax operations will treat them as chunks
+of this size.  Misfontification may then occur.
+This is a tradeoff between correctly applying the syntax rules,
+and avoiding major slowdown on pathologically long lines.")
+
+(defun syntax--lbp (&optional arg)
+  "Like `line-beginning-position' but obeying `syntax-wholeline-max'."
+  (let ((pos (point))
+        (res (line-beginning-position arg)))
+    (cond
+     ((< (abs (- pos res)) syntax-wholeline-max) res)
+     ;; For lines that are too long, round to the nearest multiple of
+     ;; `syntax-wholeline-max'.  We use rounding rather than just
+     ;; (min res (+ pos syntax-wholeline-max)) so that repeated calls
+     ;; to `syntax-propertize-wholelines' don't keep growing the bounds,
+     ;; i.e. it really behaves like additional line-breaks.
+     ((< res pos)
+      (let ((max syntax-wholeline-max))
+        (max (point-min) (* max (truncate pos max)))))
+     (t
+      (let ((max syntax-wholeline-max))
+        (min (point-max) (* max (ceiling pos max))))))))
+
+(defun syntax-propertize-wholelines (beg end)
+  "Extend the region delimited by BEG and END to whole lines.
 This function is useful for
 `syntax-propertize-extend-region-functions';
 see Info node `(elisp) Syntax Properties'."
-  (goto-char start)
-  (cons (line-beginning-position)
-        (progn (goto-char end)
-               (if (bolp) (point) (line-beginning-position 2)))))
+  ;; This let-binding was taken from
+  ;; `font-lock-extend-region-wholelines' where it was used to avoid
+  ;; inf-looping (Bug#21615) but for some reason it was not applied
+  ;; here in syntax.el and was used only for the "beg" side.
+  (let ((inhibit-field-text-motion t))
+    (let ((new-beg (progn (goto-char beg)
+                          (if (bolp) beg
+                            (syntax--lbp))))
+          (new-end (progn (goto-char end)
+                          (if (bolp) end
+                            (syntax--lbp 2)))))
+      (unless (and (eql beg new-beg) (eql end new-end))
+        (cons new-beg new-end)))))
 
 (defun syntax-propertize-multiline (beg end)
   "Let `syntax-propertize' pay attention to the syntax-multiline property."
diff --git a/lisp/font-lock.el b/lisp/font-lock.el
index df0a26f4d0f..7eeaf2f547f 100644
--- a/lisp/font-lock.el
+++ b/lisp/font-lock.el
@@ -1260,18 +1260,11 @@ font-lock-extend-region-multiline
 
 (defun font-lock-extend-region-wholelines ()
   "Move fontification boundaries to beginning of lines."
-  (let ((changed nil))
-    (goto-char font-lock-beg)
-    (unless (bolp)
-      (setq changed t font-lock-beg
-            (let ((inhibit-field-text-motion t))
-              (line-beginning-position))))
-    (goto-char font-lock-end)
-    (unless (bolp)
-      (unless (eq font-lock-end
-                  (setq font-lock-end (line-beginning-position 2)))
-        (setq changed t)))
-    changed))
+  (let ((new (syntax-propertize-wholelines font-lock-beg font-lock-end)))
+    (when new
+      (setq font-lock-beg (car new))
+      (setq font-lock-end (cdr new))
+      t)))
 
 (defun font-lock-default-fontify-region (beg end loudly)
   "Fontify the text between BEG and END.
@@ -1565,7 +1558,7 @@ font-lock-apply-syntactic-highlight
 	(or (nth 3 highlight)
 	    (error "No match %d in highlight %S" match highlight))
       (when (and (consp value) (not (numberp (car value))))
-	(setq value (eval value)))
+	(setq value (eval value t)))
       (when (stringp value) (setq value (string-to-syntax value)))
       ;; Flush the syntax-cache.  I believe this is not necessary for
       ;; font-lock's use of syntax-ppss, but I'm not 100% sure and it can
@@ -1589,7 +1582,7 @@ font-lock-fontify-syntactic-anchored-keywords
 LIMIT can be modified by the value of its PRE-MATCH-FORM."
   (let ((matcher (nth 0 keywords)) (lowdarks (nthcdr 3 keywords)) highlights
 	;; Evaluate PRE-MATCH-FORM.
-	(pre-match-value (eval (nth 1 keywords))))
+	(pre-match-value (eval (nth 1 keywords) t)))
     ;; Set LIMIT to value of PRE-MATCH-FORM or the end of line.
     (if (and (numberp pre-match-value) (> pre-match-value (point)))
 	(setq limit pre-match-value)
@@ -1605,7 +1598,7 @@ font-lock-fontify-syntactic-anchored-keywords
 	  (font-lock-apply-syntactic-highlight (car highlights))
 	  (setq highlights (cdr highlights)))))
     ;; Evaluate POST-MATCH-FORM.
-    (eval (nth 2 keywords))))
+    (eval (nth 2 keywords) t)))
 
 (defun font-lock-fontify-syntactic-keywords-region (start end)
   "Fontify according to `font-lock-syntactic-keywords' between START and END.
@@ -1718,7 +1711,7 @@ font-lock-apply-highlight
 	;; No match but we might not signal an error.
 	(or (nth 3 highlight)
 	    (error "No match %d in highlight %S" match highlight))
-      (let ((val (eval (nth 1 highlight))))
+      (let ((val (eval (nth 1 highlight) t)))
 	(when (eq (car-safe val) 'face)
 	  (add-text-properties start end (cddr val))
 	  (setq val (cadr val)))
@@ -1753,7 +1746,7 @@ font-lock-fontify-anchored-keywords
   (let ((matcher (nth 0 keywords)) (lowdarks (nthcdr 3 keywords)) highlights
 	(lead-start (match-beginning 0))
 	;; Evaluate PRE-MATCH-FORM.
-	(pre-match-value (eval (nth 1 keywords))))
+	(pre-match-value (eval (nth 1 keywords) t)))
     ;; Set LIMIT to value of PRE-MATCH-FORM or the end of line.
     (if (not (and (numberp pre-match-value) (> pre-match-value (point))))
 	(setq limit (line-end-position))
@@ -1778,7 +1771,7 @@ font-lock-fontify-anchored-keywords
 	  (font-lock-apply-highlight (car highlights))
 	  (setq highlights (cdr highlights)))))
     ;; Evaluate POST-MATCH-FORM.
-    (eval (nth 2 keywords))))
+    (eval (nth 2 keywords) t)))
 
 (defun font-lock-fontify-keywords-region (start end &optional loudly)
   "Fontify according to `font-lock-keywords' between START and END.
@@ -1884,7 +1877,7 @@ font-lock-compile-keyword
   (cond ((or (functionp keyword) (nlistp keyword)) ; MATCHER
 	 (list keyword '(0 font-lock-keyword-face)))
 	((eq (car keyword) 'eval)		; (eval . FORM)
-	 (font-lock-compile-keyword (eval (cdr keyword))))
+	 (font-lock-compile-keyword (eval (cdr keyword) t)))
 	((eq (car-safe (cdr keyword)) 'quote)	; (MATCHER . 'FORM)
 	 ;; If FORM is a FACENAME then quote it.  Otherwise ignore the quote.
 	 (if (symbolp (nth 2 keyword))
@@ -1905,7 +1898,7 @@ font-lock-eval-keywords
       keywords
     (font-lock-eval-keywords (if (fboundp keywords)
 				 (funcall keywords)
-			       (eval keywords)))))
+			       (eval keywords t)))))
 
 (defun font-lock-value-in-major-mode (values)
   "If VALUES is a list, use `major-mode' as a key and return the `assq' value.
diff --git a/lisp/jit-lock.el b/lisp/jit-lock.el
index 17969d57620..a3ada443702 100644
--- a/lisp/jit-lock.el
+++ b/lisp/jit-lock.el
@@ -242,20 +242,20 @@ jit-lock-mode
     (when (and jit-lock-stealth-time (null jit-lock-stealth-timer))
       (setq jit-lock-stealth-timer
             (run-with-idle-timer jit-lock-stealth-time t
-                                 'jit-lock-stealth-fontify)))
+                                 #'jit-lock-stealth-fontify)))
 
     ;; Create, but do not activate, the idle timer for repeated
     ;; stealth fontification.
     (when (and jit-lock-stealth-time (null jit-lock-stealth-repeat-timer))
       (setq jit-lock-stealth-repeat-timer (timer-create))
       (timer-set-function jit-lock-stealth-repeat-timer
-                          'jit-lock-stealth-fontify '(t)))
+                          #'jit-lock-stealth-fontify '(t)))
 
     ;; Init deferred fontification timer.
     (when (and jit-lock-defer-time (null jit-lock-defer-timer))
       (setq jit-lock-defer-timer
             (run-with-idle-timer jit-lock-defer-time t
-                                 'jit-lock-deferred-fontify)))
+                                 #'jit-lock-deferred-fontify)))
 
     ;; Initialize contextual fontification if requested.
     (when (eq jit-lock-contextually t)
@@ -265,13 +265,13 @@ jit-lock-mode
                                    (lambda ()
                                      (unless jit-lock--antiblink-grace-timer
                                        (jit-lock-context-fontify))))))
-      (add-hook 'post-command-hook 'jit-lock--antiblink-post-command nil t)
+      (add-hook 'post-command-hook #'jit-lock--antiblink-post-command nil t)
       (setq jit-lock-context-unfontify-pos
             (or jit-lock-context-unfontify-pos (point-max))))
 
     ;; Setup our hooks.
-    (add-hook 'after-change-functions 'jit-lock-after-change nil t)
-    (add-hook 'fontification-functions 'jit-lock-function nil t))
+    (add-hook 'after-change-functions #'jit-lock-after-change nil t)
+    (add-hook 'fontification-functions #'jit-lock-function nil t))
 
    ;; Turn Just-in-time Lock mode off.
    (t
@@ -294,8 +294,9 @@ jit-lock-mode
         (setq jit-lock-defer-timer nil)))
 
     ;; Remove hooks.
-    (remove-hook 'after-change-functions 'jit-lock-after-change t)
-    (remove-hook 'fontification-functions 'jit-lock-function))))
+    (remove-hook 'post-command-hook #'jit-lock--antiblink-post-command t)
+    (remove-hook 'after-change-functions #'jit-lock-after-change t)
+    (remove-hook 'fontification-functions #'jit-lock-function))))
 
 (define-minor-mode jit-lock-debug-mode
   "Minor mode to help debug code run from jit-lock.
@@ -707,8 +708,8 @@ jit-lock-after-change
               (min jit-lock-context-unfontify-pos jit-lock-start))))))
 
 (defun jit-lock--antiblink-post-command ()
-  (let* ((new-l-b-p (copy-marker (line-beginning-position)))
-         (l-b-p-2 (line-beginning-position 2))
+  (let* ((new-l-b-p (copy-marker (syntax--lbp)))
+         (l-b-p-2 (syntax--lbp 2))
          (same-line
           (and jit-lock-antiblink-grace
                (not (= new-l-b-p l-b-p-2))





Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Thu, 30 Jun 2022 05:15:02 +0000
Resent-Message-ID: <handler.45898.B45898.165656608310074 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Stefan Monnier <monnier@HIDDEN>
Cc: gerd.moellmann@HIDDEN, psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165656608310074
          (code B ref 45898); Thu, 30 Jun 2022 05:15:02 +0000
Received: (at 45898) by debbugs.gnu.org; 30 Jun 2022 05:14:43 +0000
Received: from localhost ([127.0.0.1]:60739 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o6mVi-0002cD-NE
	for submit <at> debbugs.gnu.org; Thu, 30 Jun 2022 01:14:43 -0400
Received: from eggs.gnu.org ([209.51.188.92]:37870)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1o6mVf-0002bo-OY
 for 45898 <at> debbugs.gnu.org; Thu, 30 Jun 2022 01:14:36 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:43496)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o6mVY-0005UI-EU; Thu, 30 Jun 2022 01:14:28 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=tVFjS/KXHoKVLe9JJtT0Ncdvmb/FTUBGJVxP8k0qpCg=; b=DHFGODFfmRdT
 cFOgqDAaDajoZ+gbcnsOSqDvj1tURMjJ02xSAcUgCL4Tl2++Wd1V09dtIkQ0YQv5D1AfLBAvJ9zBq
 LlEIkcI8O7LvUcr++APrZNuCounV4+gmayrK1bsGXqj8DDc5H+TGGftur6cZeQw6GbKCEyLsTTWf2
 0Om+SyStqzU4WFblmBk02GDt4zBc3uSJL68xQ71QSyBWkRWxhdSo0GPnWOyRxxOmqWG0Ucunx0FTl
 +p9ASw+FyRUYz6RYEQ4GHETjtk/2z7Rln6ZxSez+ikJ6bI505Di0tcdSGk+ObYxjd/PkApV0BXDov
 oj+mMUNX0Gg0olMp9EJDpg==;
Received: from [87.69.77.57] (port=3011 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o6mVX-0006q5-Sv; Thu, 30 Jun 2022 01:14:28 -0400
Date: Thu, 30 Jun 2022 08:14:34 +0300
Message-Id: <83mtdu68cl.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> (message from Stefan
 Monnier on Wed, 29 Jun 2022 17:07:45 -0400)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <83mtem2dc9.fsf@HIDDEN> <87y1y63qmq.fsf@HIDDEN>
 <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN>
 <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN>
 <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN>
 <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN>
 <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN> 
 <jwvilojnqfb.fsf-monnier+emacs@HIDDEN>
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Stefan Monnier <monnier@HIDDEN>
> Cc: gerd.moellmann@HIDDEN,  larsi@HIDDEN,  psainty@HIDDEN,
>   Emacs-hacker2018@HIDDEN,  45898 <at> debbugs.gnu.org
> Date: Wed, 29 Jun 2022 17:07:45 -0400
> 
> >> It doesn't seem to make much difference on the `medium_line.json`
> >> example from Phil, tho :-(
> > In what case does it make much difference?
> 
> None that I can see :-(
> 
> > And how did you test whether it makes a difference?
> 
> I just did
> 
>     src/emacs -Q ~/tmp/medium_line.json
> 
> and then tried to move around in the buffer, search with Isearch, and
> insert a few chars.
> I don't notice any difference with or without the patch :-(

If you start moving with C-n or C-v, Emacs becomes unusable
approximately around the same buffer position with and without the
patch?  If so, I guess the expensive part is somewhere else.

I'd install this patch regardless, because it sounds like TRT not to
let syntactic fontifications run amok this way.  We do similar stuff
in bidi.c for similar reasons.

Thanks.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Stefan Monnier <monnier@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Thu, 30 Jun 2022 17:23:01 +0000
Resent-Message-ID: <handler.45898.B45898.16566097635060 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: gerd.moellmann@HIDDEN, psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.16566097635060
          (code B ref 45898); Thu, 30 Jun 2022 17:23:01 +0000
Received: (at 45898) by debbugs.gnu.org; 30 Jun 2022 17:22:43 +0000
Received: from localhost ([127.0.0.1]:35532 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o6xsI-0001JY-KV
	for submit <at> debbugs.gnu.org; Thu, 30 Jun 2022 13:22:42 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:50721)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <monnier@HIDDEN>) id 1o6xsE-0001JF-70
 for 45898 <at> debbugs.gnu.org; Thu, 30 Jun 2022 13:22:40 -0400
Received: from pmg1.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
 by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 746F3100135;
 Thu, 30 Jun 2022 13:22:32 -0400 (EDT)
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
 by pmg1.iro.umontreal.ca (Proxmox) with ESMTP id 27086100121;
 Thu, 30 Jun 2022 13:22:31 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
 s=mail; t=1656609751;
 bh=ZXJZajxAYPj9AWPL/Xy8ES3m1MukRpJyRGXEpRb8vXQ=;
 h=From:To:Cc:Subject:References:Date:In-Reply-To:From;
 b=dtQUendV3bU4WGCjVNBUKQnj76feBM7mKOdudWC7ynbI15GOs5pjl86xjucVqUoGf
 bxUAej3PeiYajzWK//xDRcH0wcuXxlxoWcQBxd18XIQ1gA79wOL3JAYOrOuWvkRk02
 Yy3APx05LTxVietRxmWCKixbvmSt/tz338k+y2p83me7cV4m8PBHVl3XE8pCWxZaB4
 MyAEXZ2xsVQ7tqjb1uINLFCUkvF/10jdjghSsNBdrZzd0xkfnimBaZc6D1bDjE+dMQ
 oSFOhZY4cZLcAquzYRd7kIA3ToLpbSUP20tKVyypdZOyaNnHH2Sz3g9bm9CLMrJ7c2
 shzbnwCtx5IZQ==
Received: from alfajor (unknown [45.44.229.252])
 by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 98E73120180;
 Thu, 30 Jun 2022 13:22:30 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
Message-ID: <jwvr136xg6m.fsf-monnier+emacs@HIDDEN>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN>
 <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN>
 <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN>
 <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN>
 <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN>
 <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN>
Date: Thu, 30 Jun 2022 13:22:29 -0400
In-Reply-To: <83mtdu68cl.fsf@HIDDEN> (Eli Zaretskii's message of "Thu, 30 Jun
 2022 08:14:34 +0300")
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results:  0
 ALL_TRUSTED                -1 Passed through trusted hosts only via SMTP
 AWL -0.015 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DKIM_SIGNED               0.1 Message has a DKIM or DK signature,
 not necessarily valid
 DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
 DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
 domain T_SCC_BODY_TEXT_LINE    -0.01 -
X-SPAM-LEVEL: 
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

>> and then tried to move around in the buffer, search with Isearch, and
>> insert a few chars.
>> I don't notice any difference with or without the patch :-(
>
> If you start moving with C-n or C-v, Emacs becomes unusable
> approximately around the same buffer position with and without the
> patch?

Yup.  And moving at the end of the file with C-p and M-v is also "about
as bad".

> If so, I guess the expensive part is somewhere else.

Unsuprisingly so: none of `C-n/C-p/C-v/...` involve font-lock or
jit-lock either during their operation or during the
subsequent redisplay phase in the current code: the one-line is all
fontified once and for all when you open the file and after that
font-lock is not involved any more (until you make an edit, that is).

The only operation where I can see an improvement is when editing the
file near the beginning where the `master` code take a couple seconds
per edit (the time to refontify the whole line/buffer) whereas with the
patch it takes a fraction of a second (definitely not immediate, tho).

It also does open up the file a bit faster, but it pays for it by taking
more time to jump to the end:

- open file:  master=5s  patch=3s
- M->      :  master=10s patch=14s

[ Note: these time measurements are *very* approximate. ]

So while we do get some benefit occasionally by chunking, the chunking
itself slows us down.

> I'd install this patch regardless, because it sounds like TRT not to
> let syntactic fontifications run amok this way.  We do similar stuff
> in bidi.c for similar reasons.

OK, I pushed it to `master`.  The improvement is far from convincing,
but I tend to agree that it's "The Right Thing".






Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Thu, 30 Jun 2022 18:36:01 +0000
Resent-Message-ID: <handler.45898.B45898.165661414220689 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Stefan Monnier <monnier@HIDDEN>
Cc: gerd.moellmann@HIDDEN, psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165661414220689
          (code B ref 45898); Thu, 30 Jun 2022 18:36:01 +0000
Received: (at 45898) by debbugs.gnu.org; 30 Jun 2022 18:35:42 +0000
Received: from localhost ([127.0.0.1]:35606 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o6z0s-0005NX-2K
	for submit <at> debbugs.gnu.org; Thu, 30 Jun 2022 14:35:42 -0400
Received: from eggs.gnu.org ([209.51.188.92]:55572)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1o6z0p-0005NJ-Qu
 for 45898 <at> debbugs.gnu.org; Thu, 30 Jun 2022 14:35:36 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:58380)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o6z0i-0005qp-Q8; Thu, 30 Jun 2022 14:35:28 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=fFCcbDyULsI7Cs/KEADZ9cWzKW5XE0XtkBYqhGbNaTw=; b=CIHNzdmigDsB
 UEdOyzaZf7wAMvOYUJ7tAELl5t1gdz2BShufS4HgibJIYXzZ2RS9pywF7NUftJLxD7Ka0mGEOWkp9
 e9rhEaSD4xVJLjgkwlxuef0IWijGV6NzfrMFzE/L3D/1q1zEafYn90KaC0tD234VbbfqTq6ZaT6qS
 Y3YjwMltFlq9bKtliEXWICDBrd0VlQSpF+W9QlUJ/GcSudvR9JPlydHdQM3cUlrhBIImHqpsNPSLH
 5PmCR1Y4vjxW7FETt90YFJ+bdvb6IQXqdhS+E6g3k/+QrVcLvYuDUlNgcOCNlZ8EUdhDtrzxaVpJs
 KlKmrlUcvF73oAyp2OBMVQ==;
Received: from [87.69.77.57] (port=1171 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o6z0i-0006v3-A0; Thu, 30 Jun 2022 14:35:28 -0400
Date: Thu, 30 Jun 2022 21:35:36 +0300
Message-Id: <837d4yf18n.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> (message from Stefan
 Monnier on Thu, 30 Jun 2022 13:22:29 -0400)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <83h74t3k5u.fsf@HIDDEN> <87tu8sx569.fsf@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN>
 <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN>
 <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN>
 <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN>
 <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN>
 <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN>
 <jwvr136xg6m.fsf-monnier+emacs@HIDDEN>
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Stefan Monnier <monnier@HIDDEN>
> Cc: gerd.moellmann@HIDDEN,  larsi@HIDDEN,  psainty@HIDDEN,
>   Emacs-hacker2018@HIDDEN,  45898 <at> debbugs.gnu.org
> Date: Thu, 30 Jun 2022 13:22:29 -0400
> 
> > If so, I guess the expensive part is somewhere else.
> 
> Unsuprisingly so: none of `C-n/C-p/C-v/...` involve font-lock or
> jit-lock either during their operation or during the
> subsequent redisplay phase in the current code: the one-line is all
> fontified once and for all when you open the file and after that
> font-lock is not involved any more (until you make an edit, that is).

That's only true if max-redisplay-ticks is zero.

> > I'd install this patch regardless, because it sounds like TRT not to
> > let syntactic fontifications run amok this way.  We do similar stuff
> > in bidi.c for similar reasons.
> 
> OK, I pushed it to `master`.  The improvement is far from convincing,
> but I tend to agree that it's "The Right Thing".

Thanks.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Stefan Monnier <monnier@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Thu, 30 Jun 2022 19:57:01 +0000
Resent-Message-ID: <handler.45898.B45898.165661901330077 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: gerd.moellmann@HIDDEN, psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165661901330077
          (code B ref 45898); Thu, 30 Jun 2022 19:57:01 +0000
Received: (at 45898) by debbugs.gnu.org; 30 Jun 2022 19:56:53 +0000
Received: from localhost ([127.0.0.1]:35642 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o70HV-0007p3-2J
	for submit <at> debbugs.gnu.org; Thu, 30 Jun 2022 15:56:53 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:30174)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <monnier@HIDDEN>) id 1o70HS-0007ok-UG
 for 45898 <at> debbugs.gnu.org; Thu, 30 Jun 2022 15:56:51 -0400
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
 by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 6496680677;
 Thu, 30 Jun 2022 15:56:45 -0400 (EDT)
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
 by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 1BDFE804F6;
 Thu, 30 Jun 2022 15:56:44 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
 s=mail; t=1656619004;
 bh=ulw7piGMO0wur2AUpwWwbYs1Yutb+RV1P7AL/Ab89Yc=;
 h=From:To:Cc:Subject:References:Date:In-Reply-To:From;
 b=G/vCy18dpLrgAGH1N1eNa1z2onektJlU7eLexQFMYA/Do2SdJnIrazAN1UFEJy7Pq
 X0pN7lKhHhV4zxhgE52W1bk+uot2A9VqgoFG97x+hayf1P6j48YL7ogqWlcOnbjKBb
 ac5xQmkPwzF66KbcaJLAGM0WeJFok0ncsNW2YT7l5Fn/5+wlvi9lB7Z4AR5Z95a/wW
 aTj/oi6L64QqNhd8zEa+oTt36hXMRB1i6R2M6kCIywaBCrWcmHuO+CK+sXceOykemn
 jivpi4WmTGn4H5WFFwxohP/szbT6d3CfgC1yG+OCTU0UE4h+oyM5eIG5ayvDOBdbBs
 rstpBh0kVcq6g==
Received: from alfajor (unknown [45.72.196.165])
 by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id B12D412023B;
 Thu, 30 Jun 2022 15:56:43 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
Message-ID: <jwvedz6x729.fsf-monnier+emacs@HIDDEN>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN>
 <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN>
 <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN>
 <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN>
 <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN>
 <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN>
 <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> <837d4yf18n.fsf@HIDDEN>
Date: Thu, 30 Jun 2022 15:56:41 -0400
In-Reply-To: <837d4yf18n.fsf@HIDDEN> (Eli Zaretskii's message of "Thu, 30 Jun
 2022 21:35:36 +0300")
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results:  0
 ALL_TRUSTED                -1 Passed through trusted hosts only via SMTP
 AWL -0.053 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DKIM_SIGNED               0.1 Message has a DKIM or DK signature,
 not necessarily valid
 DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
 DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
 domain T_SCC_BODY_TEXT_LINE    -0.01 -
X-SPAM-LEVEL: 
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

>> Unsuprisingly so: none of `C-n/C-p/C-v/...` involve font-lock or
>> jit-lock either during their operation or during the
>> subsequent redisplay phase in the current code: the one-line is all
>> fontified once and for all when you open the file and after that
>> font-lock is not involved any more (until you make an edit, that is).
>
> That's only true if max-redisplay-ticks is zero.

Why would that make a difference?  When I try `master` with this set to
100000, the file still shows up with font-locking, so apparently it's
been fully font-locked despite `max-redisplay-ticks` and after that
font-locking (and syntax-propertize) won't make any difference any more
(until the buffer is edited) since they're already done.
[ Of course font-locking (and syntax-propertize) still do have an
  effect in that the text-properties they applied can impact the time it
  takes for the redisplay to do its job; so by "won't make any difference"
  I mean that 0-cycles will be spent running font-lock of
  syntax-propertize code.  ]


        Stefan





Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Fri, 01 Jul 2022 04:43:02 +0000
Resent-Message-ID: <handler.45898.B45898.165665055612624 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Stefan Monnier <monnier@HIDDEN>
Cc: psainty@HIDDEN, Eli Zaretskii <eliz@HIDDEN>, Emacs-hacker2018@HIDDEN, larsi@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165665055612624
          (code B ref 45898); Fri, 01 Jul 2022 04:43:02 +0000
Received: (at 45898) by debbugs.gnu.org; 1 Jul 2022 04:42:36 +0000
Received: from localhost ([127.0.0.1]:36072 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o78UG-0003HY-Cq
	for submit <at> debbugs.gnu.org; Fri, 01 Jul 2022 00:42:36 -0400
Received: from mail-ed1-f54.google.com ([209.85.208.54]:36711)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <gerd.moellmann@HIDDEN>) id 1o78UB-0003HE-LW
 for 45898 <at> debbugs.gnu.org; Fri, 01 Jul 2022 00:42:35 -0400
Received: by mail-ed1-f54.google.com with SMTP id e2so1479950edv.3
 for <45898 <at> debbugs.gnu.org>; Thu, 30 Jun 2022 21:42:31 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;
 h=mime-version:subject:from:in-reply-to:date:cc:message-id:references
 :to; bh=k3t9ZO1H8Lg0MBjCAFNrDkNReEr5t0KBE53LUWh1gUQ=;
 b=OnzVrZbi9/26oAFBIOPWfcaLJ+tYkSW9NmAd7SqPiZ+sVHJaP0XOh6or9qXHj567v7
 NwWq7c1za7Y0E4xBRZSY2VOvY985eH7mI0NZuMYcAWkxubTuON61NCQCoeEvv71uLgbk
 V/jnh5B7kKVHzCnJIgrRgBk9wswguzZ45GlXrXcqBm/tZYjHHpnh9HMxliuyTtxVZNZB
 dayKcKTem2FekRSWLRoyqfYRv5RMJ5VVBQYh1SLJ5P41tPC59v0/66DO9x/R0KiiOS7H
 NLUibaPiOKGf6W8n/WAtwn2+a+pdqivf0dGh0ok/o4ywx84WZXKblKtIJzuycifDhsvt
 Z1yA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112;
 h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc
 :message-id:references:to;
 bh=k3t9ZO1H8Lg0MBjCAFNrDkNReEr5t0KBE53LUWh1gUQ=;
 b=fzjBDc/eLerQZkFChg0s5ZZ/XrQAlR1e0ar+Msmzhp7cqlBW87C4Ubww3F42IAm5nE
 Ae3gMFZf0qi+Sb1nMQ7/qXuv9xrgyjkJ9vk5njFlW+r8X/xjJ0DYOSvUgMfdp0HmcLtn
 dg4k4w7QEKkA7C6a9/+CgA9bx4I7YLTATHOirTLbvuU8gIM3UkMdOJTtRn/4WI1jjDzQ
 7wRALb5BU9wDz3cr5KOKAODQ63e8USIWY88CV1HIKEtj4jl2zL63pvRRC7bRpBtrepZh
 ZSBH7QOk+Y6F+Gf6Adxn9etUJJL0RGf6CtoT/tTSxelHuXsJLWByAqcvFm8HsxwoQcZ4
 iWhA==
X-Gm-Message-State: AJIora+8ITOfN+CTnIohdJ/Y8ERDKVMc2bAyvOG7xDFFOe7k2/AWRZdH
 cdMRVT45CcZjWHaJ/F6eRPc=
X-Google-Smtp-Source: AGRyM1t3gWu3/lnXgBi6VX8yU6TLsH7mPteyNBEAQCVx4BUEO+ehCUUby3NpUQOaH79lEp6MkMBjtw==
X-Received: by 2002:a05:6402:d05:b0:425:b5c8:faeb with SMTP id
 eb5-20020a0564020d0500b00425b5c8faebmr16055153edb.273.1656650545618; 
 Thu, 30 Jun 2022 21:42:25 -0700 (PDT)
Received: from smtpclient.apple (pd9e369c3.dip0.t-ipconnect.de.
 [217.227.105.195]) by smtp.gmail.com with ESMTPSA id
 n22-20020a1709067b5600b00722ea7a7febsm9875782ejo.194.2022.06.30.21.42.23
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Thu, 30 Jun 2022 21:42:24 -0700 (PDT)
Content-Type: multipart/signed;
 boundary="Apple-Mail=_15B25F76-91CE-4D99-B16A-8BDB89ED1B09";
 protocol="application/pgp-signature"; micalg=pgp-sha512
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.100.31\))
From: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
In-Reply-To: <jwvedz6x729.fsf-monnier+emacs@HIDDEN>
Date: Fri, 1 Jul 2022 06:42:23 +0200
Message-Id: <6A3A8E3E-9FF6-4509-893B-EBFF7B573CDA@HIDDEN>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN>
 <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN>
 <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN>
 <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN>
 <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN>
 <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> <837d4yf18n.fsf@HIDDEN>
 <jwvedz6x729.fsf-monnier+emacs@HIDDEN>
X-Mailer: Apple Mail (2.3696.100.31)
X-Spam-Score: -0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)


--Apple-Mail=_15B25F76-91CE-4D99-B16A-8BDB89ED1B09
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii


> On 2022-06-30,, at 21:56 , Stefan Monnier <monnier@HIDDEN> =
wrote:
>=20
>>> Unsuprisingly so: none of `C-n/C-p/C-v/...` involve font-lock or
>>> jit-lock either during their operation or during the
>>> subsequent redisplay phase in the current code: the one-line is all
>>> fontified once and for all when you open the file and after that
>>> font-lock is not involved any more (until you make an edit, that =
is).
>>=20
>> That's only true if max-redisplay-ticks is zero.
>=20
> Why would that make a difference?  When I try `master` with this set =
to
> 100000, the file still shows up with font-locking, so apparently it's
> been fully font-locked despite `max-redisplay-ticks` and after that
> font-locking (and syntax-propertize) won't make any difference any =
more
> (until the buffer is edited) since they're already done.
> [ Of course font-locking (and syntax-propertize) still do have an
>  effect in that the text-properties they applied can impact the time =
it
>  takes for the redisplay to do its job; so by "won't make any =
difference"
>  I mean that 0-cycles will be spent running font-lock of
>  syntax-propertize code.  ]

Would it be possible to run this with gprof profiling?  I think that =
could give some clues what is going on.

--Apple-Mail=_15B25F76-91CE-4D99-B16A-8BDB89ED1B09
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename=signature.asc
Content-Type: application/pgp-signature;
	name=signature.asc
Content-Description: Message signed with OpenPGP

-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - https://gpgtools.org

iQIzBAEBCgAdFiEEirYePpiT82Hjkftpc+obGZDFPmMFAmK+ey8ACgkQc+obGZDF
PmM8fQ/7BvrbXL917at0cufuZuoUXAP+vmmDCjAzk0OqgFxJiYl89UaCt06PbEXn
miTNuWnpycWUX00TzQaEUc+7Qn3EqQdq1BqWPjXf3ra6mra2Lszs3bN7U3lS4d3l
5eZtNzmBl35wR3iHKPcHVSU/mINacNVOs478PKEsL9tX5o6eY99tNViONfqAfeni
0nM1ygPwqhBys7A7x1rtJT/ha+OPtQoxw6ncJwvdDbBQFwfCV0SHA83X43aFW/JT
VMdWiFElERsvaKKg5kP33Icb2XObIMd8C/Tn1yXmUby+7sZnFJgygYZ0i5M0lxE8
aGRjOGY09osrQrmEUnrcvyRBydn+3zkFoYz4IYG7LiwRLQF9xEwSpJi17T3ceGPI
vY8NT/fRwWPdAfImgFRXKVPOj9nnE/bmmIp4UYrgi1GJNZzGGk7qNzjGqSiLwxLk
FEeI/O9Tx36vHsKyksLzl3XnW4hq+zLcxWCkFkLoiS4LRB4uGtaxzpEMDu2DVyac
/82rzu8k/WQJODzH8k/gAMi/NOlEeRZqfGruuQfENtYB6HtkKugBN3Vs2wU6pt2Y
aiaCbdWFzdhPVJ0hDcm4I20X9weOFK3aUwYjAXA4F7rBsLkcHivO9r+N0o1AoJiK
TU51Z6O2aRdfY0ICIuPJNSf+I3OHW4urBXkkQ3qMZox8Sl3GIO0=
=obe2
-----END PGP SIGNATURE-----

--Apple-Mail=_15B25F76-91CE-4D99-B16A-8BDB89ED1B09--




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Fri, 01 Jul 2022 05:28:02 +0000
Resent-Message-ID: <handler.45898.B45898.165665325118042 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Stefan Monnier <monnier@HIDDEN>
Cc: gerd.moellmann@HIDDEN, psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165665325118042
          (code B ref 45898); Fri, 01 Jul 2022 05:28:02 +0000
Received: (at 45898) by debbugs.gnu.org; 1 Jul 2022 05:27:31 +0000
Received: from localhost ([127.0.0.1]:36099 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o79Be-0004gs-Gx
	for submit <at> debbugs.gnu.org; Fri, 01 Jul 2022 01:27:30 -0400
Received: from eggs.gnu.org ([209.51.188.92]:47524)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1o79Bb-0004gc-TJ
 for 45898 <at> debbugs.gnu.org; Fri, 01 Jul 2022 01:27:25 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:42676)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o79BU-0000Mt-GE; Fri, 01 Jul 2022 01:27:16 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=WkC74hCrttgLG70vX9XY3jovMEHyatydubaZV/ofr6M=; b=SYh78Ha85iwX
 hj/QgibhHVURadrKPvObcVgJYvfcY7OeVcnTz9OE6xAb6vqJB0cQEw3cTGYufkRXFuxwVWBf7GjEL
 CnpFQcfveKZojoobDmfNGIJTSq+lWeoSBFxpSMOSuqPPlOfvNGg/+OjemGZq8q6+jM//AQ+YH6wMM
 t/jnXTePiky/VNIgBQMFrKwl/YFXxUsC6X4A9Asqh/iJThStmUtEQkJeSwtk/+gFav08zzuiysaca
 wMd33VI9p2NAcFDKE48NAoEgrbDXMs81jJFAteCyhJrTmdqLXcjYShoozj1Rf9n3AnjMZHlXXp5in
 9qFKNkQUgL9jtjCeGor23w==;
Received: from [87.69.77.57] (port=1368 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o79BT-0002hy-IU; Fri, 01 Jul 2022 01:27:16 -0400
Date: Fri, 01 Jul 2022 08:27:24 +0300
Message-Id: <835ykhflmr.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <jwvedz6x729.fsf-monnier+emacs@HIDDEN> (message from Stefan
 Monnier on Thu, 30 Jun 2022 15:56:41 -0400)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN>
 <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN>
 <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN>
 <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN>
 <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN>
 <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN>
 <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> <837d4yf18n.fsf@HIDDEN>
 <jwvedz6x729.fsf-monnier+emacs@HIDDEN>
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Stefan Monnier <monnier@HIDDEN>
> Cc: gerd.moellmann@HIDDEN,  larsi@HIDDEN,  psainty@HIDDEN,
>   Emacs-hacker2018@HIDDEN,  45898 <at> debbugs.gnu.org
> Date: Thu, 30 Jun 2022 15:56:41 -0400
> 
> >> Unsuprisingly so: none of `C-n/C-p/C-v/...` involve font-lock or
> >> jit-lock either during their operation or during the
> >> subsequent redisplay phase in the current code: the one-line is all
> >> fontified once and for all when you open the file and after that
> >> font-lock is not involved any more (until you make an edit, that is).
> >
> > That's only true if max-redisplay-ticks is zero.
> 
> Why would that make a difference?

Because if it is not zero, we won't let the entire line to be
fontified, we will stop that before it gets to the end of the line.

> When I try `master` with this set to
> 100000, the file still shows up with font-locking, so apparently it's
> been fully font-locked despite `max-redisplay-ticks`

You see only a small portion of the file.

> and after that
> font-locking (and syntax-propertize) won't make any difference any more
> (until the buffer is edited) since they're already done.
> [ Of course font-locking (and syntax-propertize) still do have an
>   effect in that the text-properties they applied can impact the time it
>   takes for the redisplay to do its job; so by "won't make any difference"
>   I mean that 0-cycles will be spent running font-lock of
>   syntax-propertize code.  ]

Sorry, I cannot parse this at all.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Fri, 01 Jul 2022 06:05:01 +0000
Resent-Message-ID: <handler.45898.B45898.165665546822247 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, monnier@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165665546822247
          (code B ref 45898); Fri, 01 Jul 2022 06:05:01 +0000
Received: (at 45898) by debbugs.gnu.org; 1 Jul 2022 06:04:28 +0000
Received: from localhost ([127.0.0.1]:36122 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o79lQ-0005mg-Ai
	for submit <at> debbugs.gnu.org; Fri, 01 Jul 2022 02:04:28 -0400
Received: from eggs.gnu.org ([209.51.188.92]:53916)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1o79lL-0005mQ-DH
 for 45898 <at> debbugs.gnu.org; Fri, 01 Jul 2022 02:04:22 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:43036)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o79lE-0005rw-Nv; Fri, 01 Jul 2022 02:04:12 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=M8s4HZ5zWBP9ztEmvTaQkaJlcgO9YG96DiQbNjzRDA0=; b=eol4sWdwWA1A6kVHf1tq
 qpEz+AtBUw6drgRucgUWlLxoFnmzqfKi6v+nBrw6tfz22I11fmO7+GF309105mKJBNfnAHf9HCFrq
 +nAet0kYXj+smlXbfYaD2uqf8I6u/XW3WO4hX5DdnRJDLwLv58WrgmdK4jcEktGdmC1g/uiBPcwzn
 dexQn9KXT7dED03WFhXvnF6fJR0mKqJ8PoJYmDFELj2QQN4PDq/4+y9m+2Co8TCy2hit5gXUgUcf8
 +szsDN5MrA30NPojVvLBQ5bb5DiiZ2J4j8q/HFK4KG9MVdlRrAh+0Eht8s6K1ceNFSEjyE9MYqqjj
 D88sHcYSoJX2IQ==;
Received: from [87.69.77.57] (port=3619 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o79lB-0003fN-W5; Fri, 01 Jul 2022 02:04:12 -0400
Date: Fri, 01 Jul 2022 09:04:19 +0300
Message-Id: <83y1xde5cs.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <6A3A8E3E-9FF6-4509-893B-EBFF7B573CDA@HIDDEN> (message from
 Gerd =?UTF-8?Q?M=C3=B6llmann?= on Fri, 1 Jul 2022 06:42:23 +0200)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN>
 <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN>
 <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN>
 <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN>
 <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN>
 <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> <837d4yf18n.fsf@HIDDEN>
 <jwvedz6x729.fsf-monnier+emacs@HIDDEN>
 <6A3A8E3E-9FF6-4509-893B-EBFF7B573CDA@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Gerd Möllmann <gerd.moellmann@HIDDEN>
> Date: Fri, 1 Jul 2022 06:42:23 +0200
> Cc: Eli Zaretskii <eliz@HIDDEN>,
>  larsi@HIDDEN,
>  psainty@HIDDEN,
>  Emacs-hacker2018@HIDDEN,
>  45898 <at> debbugs.gnu.org
> 
> 
> [1:text/plain Hide]
> 
> 
> > On 2022-06-30,, at 21:56 , Stefan Monnier <monnier@HIDDEN> wrote:
> > 
> >>> Unsuprisingly so: none of `C-n/C-p/C-v/...` involve font-lock or
> >>> jit-lock either during their operation or during the
> >>> subsequent redisplay phase in the current code: the one-line is all
> >>> fontified once and for all when you open the file and after that
> >>> font-lock is not involved any more (until you make an edit, that is).
> >> 
> >> That's only true if max-redisplay-ticks is zero.
> > 
> > Why would that make a difference?  When I try `master` with this set to
> > 100000, the file still shows up with font-locking, so apparently it's
> > been fully font-locked despite `max-redisplay-ticks` and after that
> > font-locking (and syntax-propertize) won't make any difference any more
> > (until the buffer is edited) since they're already done.
> > [ Of course font-locking (and syntax-propertize) still do have an
> >  effect in that the text-properties they applied can impact the time it
> >  takes for the redisplay to do its job; so by "won't make any difference"
> >  I mean that 0-cycles will be spent running font-lock of
> >  syntax-propertize code.  ]
> 
> Would it be possible to run this with gprof profiling?  I think that could give some clues what is going on.

Or (on GNU/Linux only) under 'prof' -- which doesn't require you to
build a special version of Emacs, and still produces detailed CPU
usage info.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Fri, 01 Jul 2022 08:50:01 +0000
Resent-Message-ID: <handler.45898.B45898.16566653577610 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, monnier@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.16566653577610
          (code B ref 45898); Fri, 01 Jul 2022 08:50:01 +0000
Received: (at 45898) by debbugs.gnu.org; 1 Jul 2022 08:49:17 +0000
Received: from localhost ([127.0.0.1]:36233 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o7CKz-0001yb-9v
	for submit <at> debbugs.gnu.org; Fri, 01 Jul 2022 04:49:17 -0400
Received: from mail-ej1-f42.google.com ([209.85.218.42]:35665)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <gerd.moellmann@HIDDEN>) id 1o7CKv-0001yE-07
 for 45898 <at> debbugs.gnu.org; Fri, 01 Jul 2022 04:49:16 -0400
Received: by mail-ej1-f42.google.com with SMTP id pk21so2829384ejb.2
 for <45898 <at> debbugs.gnu.org>; Fri, 01 Jul 2022 01:49:12 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;
 h=from:message-id:mime-version:subject:date:in-reply-to:cc:to
 :references; bh=KiX/reUdlzLlUkoc/NLHKnI7I8kX61+/G3VOaBWoKys=;
 b=fsnmFLlvy/1fJpcdNaY/3ZdHJftUMLr2jNkNlDWJPdGVVfV889HhXr8vH5E6QxCKZG
 aVefWtGvOkrwYtDHLeeyLorl03/F6YHMa/Ida5pW6EurpfHO2R2rjgFUCPLN81G3lgyl
 K5hYt52fv7hAe2/JVW0ryNunzVhY56G1zF+N56uPX13JJRX/p05aZA/gyT02843B2h5f
 RnaYHnJiYiXUSTrlF4DEUjeGs4Ljvz2Vw4tbU8DNBKdUowqZg2Qh3ayEiTcDVQXo/nL4
 S6O6Q7GHT/fHBaWAwRPENDP7lhrRLmeyhbo37tn4BJ7I89xzH5RyBI83Ow88sLRm/Ws5
 s4TQ==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112;
 h=x-gm-message-state:from:message-id:mime-version:subject:date
 :in-reply-to:cc:to:references;
 bh=KiX/reUdlzLlUkoc/NLHKnI7I8kX61+/G3VOaBWoKys=;
 b=Zk98lQ0Ap4H9EUKswV8SdNBRyHO1TaSUb0NtpHWAqhmzdSOH4XbAr4OxtEnKfGCuCj
 8A5tj/+6OxhO9WjCmAhdRLRMRLWtKnI1W8kybHftbEn7Wdmlq1qMTzgJck4NPgFxe0jr
 JM53FJiaxxC9scrqnZua9YczKZPoNkcdenUWhiIYBhH79f/g+iwJf782lPS4iJvNbKk4
 de0vIPpCz1NqG57wjNsiZt+B3YcWU92ZcgoO0VSN1era73usgCFxm5mBbvt/4+bo7l+D
 bEqAx7CHQ7LcWIMzWsK45Ti5j96cpra/Tof5QVGtt79rB5gdL0z7NDQNyMC1U4O861hb
 aWaQ==
X-Gm-Message-State: AJIora+fMLcGyErkab9Yb2KDF74zfmVpuXQ5qZv4VQVUFb3Z3Zq4ft9i
 q4BtdGHyeH+PnTwjTjfoWuA=
X-Google-Smtp-Source: AGRyM1vkFh2G0rYf3DnFk+MxaeiaDKt4IwNWwouY2LW1W6VJ8zfreY3cYTahXRb5C10qmLpLHDBgjw==
X-Received: by 2002:a17:907:9605:b0:6f5:c66:7c13 with SMTP id
 gb5-20020a170907960500b006f50c667c13mr13547861ejc.66.1656665346818; 
 Fri, 01 Jul 2022 01:49:06 -0700 (PDT)
Received: from smtpclient.apple (pd9e369c3.dip0.t-ipconnect.de.
 [217.227.105.195]) by smtp.gmail.com with ESMTPSA id
 kw7-20020a170907770700b0072a815f3344sm1017696ejc.137.2022.07.01.01.49.05
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Fri, 01 Jul 2022 01:49:05 -0700 (PDT)
From: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Message-Id: <201D8E28-F7BD-4E3D-826F-37008CF73003@HIDDEN>
Content-Type: multipart/signed;
 boundary="Apple-Mail=_037C6668-4802-4837-A7FE-AC1502F24E39";
 protocol="application/pgp-signature"; micalg=pgp-sha512
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.100.31\))
Date: Fri, 1 Jul 2022 10:49:04 +0200
In-Reply-To: <83y1xde5cs.fsf@HIDDEN>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN>
 <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN>
 <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN>
 <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN>
 <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN>
 <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> <837d4yf18n.fsf@HIDDEN>
 <jwvedz6x729.fsf-monnier+emacs@HIDDEN>
 <6A3A8E3E-9FF6-4509-893B-EBFF7B573CDA@HIDDEN> <83y1xde5cs.fsf@HIDDEN>
X-Mailer: Apple Mail (2.3696.100.31)
X-Spam-Score: -0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)


--Apple-Mail=_037C6668-4802-4837-A7FE-AC1502F24E39
Content-Type: multipart/mixed;
	boundary="Apple-Mail=_89984787-C040-489D-8B4B-3BE92155FBAD"


--Apple-Mail=_89984787-C040-489D-8B4B-3BE92155FBAD
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii


> On 2022-07-01,, at 8:04 , Eli Zaretskii <eliz@HIDDEN> wrote:
>=20
>> Would it be possible to run this with gprof profiling?  I think that =
could give some clues what is going on.
>=20
> Or (on GNU/Linux only) under 'prof' -- which doesn't require you to
> build a special version of Emacs, and still produces detailed CPU
> usage info.

No one will care, that's why I'm telling:

I just found a way to profile Emacs on macOS 12.4, with Apple M1 chip, =
using Xcode 13.4.1.  Please see the attached shell script.  It seems =
that Gprof is not supported on my platform, like GDB.

I'm not yet sure how useful/reliable and whatnot that is, but it looks =
promising, and it doesn't require building with special compiler flags =
(I used -g -O0).


--Apple-Mail=_89984787-C040-489D-8B4B-3BE92155FBAD
Content-Disposition: attachment;
	filename=xctrace-emacs.sh
Content-Type: application/octet-stream;
	name=xctrace-emacs.sh;
	x-unix-mode=0755
Content-Transfer-Encoding: 7bit

#! /bin/sh

# Execution profile for Emacs on macOS.
#
# Xcode command-line tools must be installed (use xcode-select
# --install).
#
# Build Emacs with -g.  Install Emacs with 'make install' which copies
# stuff to nextstep/Emacs.app

# Assume we are inside a Git repo.  Chdir to its root.
# Note that .git might be a file when in a git worktree.
while [ ! -e .git ]; do
    cd ..
    if [ `pwd` == "!HOME" ]; then
	echo "$0: Not in a Git repo"
	exit 1
    fi
done

# Check if app was built
if [ ! -d ./nextstep/Emacs.app ]; then
    echo "$0: Cannot find Emacs.app directory"
    exit 1
fi
cd ./nextstep/Emacs.app

# Directory where to store xctrace outout
trace_dir=Xctrace
if [ ! -d "$trace_dir" ]; then
    mkdir "$trace_dir"
fi

# Trace and show the result in Instruments
trace=`xcrun xctrace record --template="Time Profiler" --target-stdout - \
 	      --output "$trace_dir" --launch -- ./Contents/MacOS/Emacs \
	     | grep Output | cut -d : -f 2 | sed -e 's/^ //' -e 's/.$//'`
echo "Trace file is $trace_dir/$trace"
open /Applications/Xcode.app/Contents/Applications/Instruments.app \
     "$trace_dir/$trace"



--Apple-Mail=_89984787-C040-489D-8B4B-3BE92155FBAD--

--Apple-Mail=_037C6668-4802-4837-A7FE-AC1502F24E39
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename=signature.asc
Content-Type: application/pgp-signature;
	name=signature.asc
Content-Description: Message signed with OpenPGP

-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - https://gpgtools.org

iQIzBAEBCgAdFiEEirYePpiT82Hjkftpc+obGZDFPmMFAmK+tQAACgkQc+obGZDF
PmPYjQ/9HfdrOHm3mmJgtqsTYCxWV3HqMvbpaoIwQZmJgQQ0ouOTDPZwY0WkeR+Q
UIWHPwKsYhrrip8vwCGBeXQn4aPfVi6EdRRY+Hdp7TecP/2LKxLmWuJ6SgK8xNA2
iPVUowTyBaafOYGTeTt/IJqhyH+VHJM6EMVF1zq+I8cImuTWXWjFTj7qDd/ZZ/8E
i5t1RLCufT/SoIVLjrKDW8HjuO3xOf4+QThK/pZ90pPzmqsk0jsN630aK4ECGp52
LfvVPo3Qfw1DBdf4sT76PqAdddc6/gG7z1YruFCBryojZp5E3SxOUfIYhRziI7FK
wgTwNIIMxEX4LNBEmSsiatk5DBOciAMFD9mYXq6FTgtVG/5OgInh5TzkGnKnqbZ7
jyiISMpLiHO4wGcZEA04sh3OBpQo3i4wWV8v6Rlp0aGiUS1N3k8hWzmIpKT0ek3+
FXx1U8HD/qSSDdqeRRKwLlGCaPirGHpO8/9Z62kXDneDKLAkp1/zaxjiwDMDwLzK
Wijjx9wMsnkgbbxOUAVOYpLXJjBF4xz7sYIb4J06sQdHXAdfi+jtAlazH59n7yJU
s5ICjtvZba2XaJGrDnWYPjAeAlwdvwPcfaH5PY9BsxFCXQnDGbeiiEsRh0yqXFkS
AkBTuwaBy3cOe0HTk74CkRTtuZLhLgegVeGHuIw4/TobjuEb8lY=
=dSBl
-----END PGP SIGNATURE-----

--Apple-Mail=_037C6668-4802-4837-A7FE-AC1502F24E39--




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Fri, 01 Jul 2022 10:32:02 +0000
Resent-Message-ID: <handler.45898.B45898.165667151118769 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, monnier@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165667151118769
          (code B ref 45898); Fri, 01 Jul 2022 10:32:02 +0000
Received: (at 45898) by debbugs.gnu.org; 1 Jul 2022 10:31:51 +0000
Received: from localhost ([127.0.0.1]:36327 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o7DwB-0004sb-EX
	for submit <at> debbugs.gnu.org; Fri, 01 Jul 2022 06:31:51 -0400
Received: from eggs.gnu.org ([209.51.188.92]:57556)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1o7DwA-0004sP-DF
 for 45898 <at> debbugs.gnu.org; Fri, 01 Jul 2022 06:31:46 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:56220)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o7Dw0-0001vz-P8; Fri, 01 Jul 2022 06:31:38 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=vO6QXQuJ2P1oiCBoXJ+uXYwqovwxSq6z05mk3F5drFo=; b=ADbPCdUB/E9er3kiumBB
 dBQvXK2ffWDzM+UoQChnNFq4c/1oTkq0K41oa/tea95sVOGT+drjiWFa76msyHmpXLXtP8poJRHRG
 S50P7qShoPYpOct0hxD9h82XMfALn1k7F5pPkxv7wA0km3oCf6CUAu4M2HQ/o+0NBjdhgeC5HsiY2
 fWjgA+q7EVzEFZHCQ0kH4dtOWqXOE9i+CNNrKywKMrA6C1RQ738IocCDsQkODuol9Pq+AxmN6Z0YT
 FoCqcEfD64L6z29o8bfRV/mLHMJtXy7diMYNXrlD1gzcIsqFIRiCH2EqcEbDTjkyzRVX68M5h+uCd
 NYraz3P3ia6qBw==;
Received: from [87.69.77.57] (port=4008 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o7DvX-0001Fq-9V; Fri, 01 Jul 2022 06:31:27 -0400
Date: Fri, 01 Jul 2022 13:31:16 +0300
Message-Id: <83tu81dszv.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <201D8E28-F7BD-4E3D-826F-37008CF73003@HIDDEN> (message from
 Gerd =?UTF-8?Q?M=C3=B6llmann?= on Fri, 1 Jul 2022 10:49:04 +0200)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN>
 <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN>
 <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN>
 <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN>
 <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN>
 <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> <837d4yf18n.fsf@HIDDEN>
 <jwvedz6x729.fsf-monnier+emacs@HIDDEN>
 <6A3A8E3E-9FF6-4509-893B-EBFF7B573CDA@HIDDEN> <83y1xde5cs.fsf@HIDDEN>
 <201D8E28-F7BD-4E3D-826F-37008CF73003@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Gerd Möllmann <gerd.moellmann@HIDDEN>
> Date: Fri, 1 Jul 2022 10:49:04 +0200
> Cc: monnier@HIDDEN,
>  larsi@HIDDEN,
>  psainty@HIDDEN,
>  Emacs-hacker2018@HIDDEN,
>  45898 <at> debbugs.gnu.org
> 
> > Or (on GNU/Linux only) under 'prof' -- which doesn't require you to
> > build a special version of Emacs, and still produces detailed CPU
> > usage info.
> 
> No one will care, that's why I'm telling:
> 
> I just found a way to profile Emacs on macOS 12.4, with Apple M1 chip, using Xcode 13.4.1.  Please see the attached shell script.  It seems that Gprof is not supported on my platform, like GDB.
> 
> I'm not yet sure how useful/reliable and whatnot that is, but it looks promising, and it doesn't require building with special compiler flags (I used -g -O0).

What kind of information is this capable to display?

If it's useful, we could have this script in the repository somewhere.

Thanks.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Fri, 01 Jul 2022 11:05:02 +0000
Resent-Message-ID: <handler.45898.B45898.165667348230769 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, monnier@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165667348230769
          (code B ref 45898); Fri, 01 Jul 2022 11:05:02 +0000
Received: (at 45898) by debbugs.gnu.org; 1 Jul 2022 11:04:42 +0000
Received: from localhost ([127.0.0.1]:36364 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o7ES2-00080C-4m
	for submit <at> debbugs.gnu.org; Fri, 01 Jul 2022 07:04:42 -0400
Received: from mail-ej1-f50.google.com ([209.85.218.50]:42724)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <gerd.moellmann@HIDDEN>) id 1o7ERw-0007zt-MC
 for 45898 <at> debbugs.gnu.org; Fri, 01 Jul 2022 07:04:40 -0400
Received: by mail-ej1-f50.google.com with SMTP id fi2so3369121ejb.9
 for <45898 <at> debbugs.gnu.org>; Fri, 01 Jul 2022 04:04:36 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;
 h=mime-version:subject:from:in-reply-to:date:cc:message-id:references
 :to; bh=aFHHNwDkARJWQgzyBgZmjGgd2IO0eWuTTvcVTzFZSXw=;
 b=ARmMrFGyRVeJZ4B4RFXmw60Sb/IEmHSVkKMX5qzQ1xcrPMvBqIXD8x1AfrQWaBdPUf
 L6g7mJZmrpOMJsns2CIf1mnhWRSALvvkpbH9J89zE2u/qH/KoHOTIAxMZNUnY7T2XNdo
 WKVBGg9CPGKzTw2h1kP/5Kg4v/1tK31x6Jxiw1PBZYref8ERX/q90CgNK6b3JmZmC7A6
 7p2LtU/DxPlZ9Dud1E8TvTZtGoDJ0RmGMGK5ldVyfIHflnj0g+crzrMD6MeNQSA0/Yf1
 u2ehSJOpHJ/1f1BesmxNKyuyb3ilKZWiV+LpJolZc91WRogsoVTI9GZIbpyuCBCRIPwu
 6zjA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112;
 h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc
 :message-id:references:to;
 bh=aFHHNwDkARJWQgzyBgZmjGgd2IO0eWuTTvcVTzFZSXw=;
 b=xTM1EIN0tLbpBR35YppUM4D/yAyyNtwoWR6SbPbsd+jdyQhA6qItu65XuvMAQ59f+/
 bMQ7DfT6kx7LM67LFjM9H/IyJ2P6mKMfeF2d9YX4WATw8Lqy4rv6TKAtAjgPhQuLD7iY
 Y+9SWuCGwsyg1CzIYmFSz8A0I38uMa8SlwCtiiKWB+lcYm2Cj99G+699BT6sfT1lTl78
 blSPIT+Y7R4b6TxQ6lgWYHfTQWZ19ig058L2j+fnK1kaGD0g7igea3otvIjSw6oI1WKL
 fCh1sY9xp+ojvPDtfXsY19EKdgUMYnhI5eaTwTthKW+pLqQBz+Jrnajx74pTf8iYeMco
 AocQ==
X-Gm-Message-State: AJIora9SRZHVPd55Uly7NOTmLsRD4ToiF36YmstOlREru1KiNfphkOnm
 glVjSKcMmd54tIdbE1bjTAs=
X-Google-Smtp-Source: AGRyM1sPYWViqEGRmuTxYOg0f+fhsLwXiQ9TFENSLNT0C4ZaSw3yVMxpxgQeCsnvrbaGntxm+Vy4bA==
X-Received: by 2002:a17:906:4c9a:b0:726:38df:6f6f with SMTP id
 q26-20020a1709064c9a00b0072638df6f6fmr13738457eju.485.1656673470774; 
 Fri, 01 Jul 2022 04:04:30 -0700 (PDT)
Received: from smtpclient.apple (pd9e369c3.dip0.t-ipconnect.de.
 [217.227.105.195]) by smtp.gmail.com with ESMTPSA id
 i21-20020a17090639d500b006fe98fb9523sm10384469eje.129.2022.07.01.04.04.29
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Fri, 01 Jul 2022 04:04:29 -0700 (PDT)
Content-Type: multipart/signed;
 boundary="Apple-Mail=_B05B4633-621D-4C63-ADEF-2CDD8BEC57AA";
 protocol="application/pgp-signature"; micalg=pgp-sha512
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.100.31\))
From: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
In-Reply-To: <83tu81dszv.fsf@HIDDEN>
Date: Fri, 1 Jul 2022 13:04:28 +0200
Message-Id: <6829D55A-C056-485A-82BE-4E01F80307DE@HIDDEN>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN>
 <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN>
 <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN>
 <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN>
 <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN>
 <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> <837d4yf18n.fsf@HIDDEN>
 <jwvedz6x729.fsf-monnier+emacs@HIDDEN>
 <6A3A8E3E-9FF6-4509-893B-EBFF7B573CDA@HIDDEN> <83y1xde5cs.fsf@HIDDEN>
 <201D8E28-F7BD-4E3D-826F-37008CF73003@HIDDEN> <83tu81dszv.fsf@HIDDEN>
X-Mailer: Apple Mail (2.3696.100.31)
X-Spam-Score: 0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)


--Apple-Mail=_B05B4633-621D-4C63-ADEF-2CDD8BEC57AA
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii


> On 2022-07-01,, at 12:31 , Eli Zaretskii <eliz@HIDDEN> wrote:
>=20
>=20
> What kind of information is this capable to display?
>=20
> If it's useful, we could have this script in the repository somewhere.

Good question, I'm exploring this right now.

The only way one can look at the result of the trace is, AFAICT, using =
the GUI app Instruments.  I'll send a screenshot to everyone except =
debbugs in a separate mail, because I don't know if debbugs can swallow =
that.  Does it?

In the GUI, one can see the heaviest time consumers (% execution time, =
and time in seconds).  One can see call stacks for them, narrow down on =
parts of call stack.  The rest I'm trying to figure out myself.

Big downside is not being able to produce some form of sharable text or =
pdf output.

Looks useful to me.

What would be a good place for such a script in the repo?  Does =
admin/macos sound right?  But I'll wait for your okay for that.



--Apple-Mail=_B05B4633-621D-4C63-ADEF-2CDD8BEC57AA
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename=signature.asc
Content-Type: application/pgp-signature;
	name=signature.asc
Content-Description: Message signed with OpenPGP

-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - https://gpgtools.org

iQIzBAEBCgAdFiEEirYePpiT82Hjkftpc+obGZDFPmMFAmK+1LwACgkQc+obGZDF
PmPP/w//dv9Xs/QFBKBEHogGxDD7OFIPmRqjlwzAoAl05ZHX8fxfX0wl2VBfvYH7
Yf+NuMCiA4V6kCcSZT1Kr8L+egjHXwWatqFizOe/szFQKQor2c15W8XrNSWUl4Y5
Xz0u2h6SnlpaqG0JXVqH59eSPsX1JmDg7GzsEQuFGkxtgHOSuDF0fpDahT2zwxbC
U/7Fi+stXIb8s6FKfbu5f51Iuwh8Lq9oM3YP5eFBGXhUKQmDMOLoD/honYhk3wsP
3+ZWYzBJ0jIq4VzSkoJgKj4JdOLmjVyH8QtkyUeBxJmBl78x/HKuLLMiZIAPEhKd
WNHcQ2Mfrhb0iquf7k1/9ka763ao3ypctb0O80vDB4h0MCdFHkoSDjf8+wt4DUgi
OA13Dpioph167yapYoX1cweHH9FB47gkSQyzAYp3iNm/0jbcg6uVnmZ6uJgAzni4
eNNkE5xHXLTUTkWYF/KJflQv4WHCJr9Z/gVGK3e7Vrf+tXdBHtxP9CN5Yc/MysK1
d5mxtTJMQsm14eGOWyZlD9PlANV3qvQannyloIbpVCVDDBb/Aq75I6EgoN6VS3nw
lbAShlmEY6ihQKab81zWA3Q/9Q566gsewIwQHIdlv6pnUvD1P4bGiO32zIFHxeuP
60I6MsI7bar+Qy+WTm27r9TuoIQUekeOBLkoHCQU/okEQYR8xcY=
=Ti8X
-----END PGP SIGNATURE-----

--Apple-Mail=_B05B4633-621D-4C63-ADEF-2CDD8BEC57AA--




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Fri, 01 Jul 2022 11:14:01 +0000
Resent-Message-ID: <handler.45898.B45898.165667398431976 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, monnier@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165667398431976
          (code B ref 45898); Fri, 01 Jul 2022 11:14:01 +0000
Received: (at 45898) by debbugs.gnu.org; 1 Jul 2022 11:13:04 +0000
Received: from localhost ([127.0.0.1]:36393 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o7Ea3-0008JK-Sv
	for submit <at> debbugs.gnu.org; Fri, 01 Jul 2022 07:13:04 -0400
Received: from eggs.gnu.org ([209.51.188.92]:40382)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1o7Ea0-0008J4-2k
 for 45898 <at> debbugs.gnu.org; Fri, 01 Jul 2022 07:12:58 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:32932)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o7EZs-00086z-8e; Fri, 01 Jul 2022 07:12:49 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=BNILhsrL6JT3hH6qCrPfRZaXQLPU1i1VgK4pUc2j/gQ=; b=gYFZKMpWd6T2XGiCx7FH
 w+i+hGhHB/S9MYliN39pZHJ6j3p2pNUXDIGsHv+VTVuOLSpK5zFiXk+U5SCXImWXAXoPo/WYZ+9Jj
 G58n7XiSvzM2eV6ej7EyrZ7Hn0MZMaeQHedzMOidiwtP9BQerjO8z8R6x+uchpbHcoMhwxqk35C7K
 wLjYznRZTb9CUEkcOrCC3jHerBBavWMY2fMmiIGPgksTF9E0Cg7FurZXoWE1vyn2A0Vkmf0honfQy
 SK5G1X7A00V4gamXj3SNUy6NNUEcwYesJZnzEnaxCKk+PZoMhVQaq5+mmXfc0yqwGC65aoHRgouAM
 tIqpFUlbKvWZTA==;
Received: from [87.69.77.57] (port=2610 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o7EZr-0008SK-2t; Fri, 01 Jul 2022 07:12:48 -0400
Date: Fri, 01 Jul 2022 14:12:56 +0300
Message-Id: <83o7y9dr2f.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <6829D55A-C056-485A-82BE-4E01F80307DE@HIDDEN> (message from
 Gerd =?UTF-8?Q?M=C3=B6llmann?= on Fri, 1 Jul 2022 13:04:28 +0200)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN>
 <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN>
 <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN>
 <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN>
 <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN>
 <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> <837d4yf18n.fsf@HIDDEN>
 <jwvedz6x729.fsf-monnier+emacs@HIDDEN>
 <6A3A8E3E-9FF6-4509-893B-EBFF7B573CDA@HIDDEN> <83y1xde5cs.fsf@HIDDEN>
 <201D8E28-F7BD-4E3D-826F-37008CF73003@HIDDEN> <83tu81dszv.fsf@HIDDEN>
 <6829D55A-C056-485A-82BE-4E01F80307DE@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Gerd Möllmann <gerd.moellmann@HIDDEN>
> Date: Fri, 1 Jul 2022 13:04:28 +0200
> Cc: monnier@HIDDEN,
>  larsi@HIDDEN,
>  psainty@HIDDEN,
>  Emacs-hacker2018@HIDDEN,
>  45898 <at> debbugs.gnu.org
> 
> > What kind of information is this capable to display?
> > 
> > If it's useful, we could have this script in the repository somewhere.
> 
> Good question, I'm exploring this right now.
> 
> The only way one can look at the result of the trace is, AFAICT, using the GUI app Instruments.  I'll send a screenshot to everyone except debbugs in a separate mail, because I don't know if debbugs can swallow that.  Does it?

It does (unless the image is very large, I think).

> In the GUI, one can see the heaviest time consumers (% execution time, and time in seconds).  One can see call stacks for them, narrow down on parts of call stack.  The rest I'm trying to figure out myself.

Looks and sounds useful.

> Big downside is not being able to produce some form of sharable text or pdf output.

I'm sure there is some way of producing text from an image, nowadays.
But even if just the image is posted, it provides useful information.

> What would be a good place for such a script in the repo?  Does admin/macos sound right?  But I'll wait for your okay for that.

I think nextstep/ is a better place.  admin/ is for stuff useful only
to Emacs developers, whereas this script sounds like being more
generally useful.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Fri, 01 Jul 2022 11:34:01 +0000
Resent-Message-ID: <handler.45898.B45898.165667520018886 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, monnier@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165667520018886
          (code B ref 45898); Fri, 01 Jul 2022 11:34:01 +0000
Received: (at 45898) by debbugs.gnu.org; 1 Jul 2022 11:33:20 +0000
Received: from localhost ([127.0.0.1]:36441 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o7Etk-0004uY-K8
	for submit <at> debbugs.gnu.org; Fri, 01 Jul 2022 07:33:20 -0400
Received: from mail-ej1-f41.google.com ([209.85.218.41]:36542)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <gerd.moellmann@HIDDEN>) id 1o7Eti-0004uF-F1
 for 45898 <at> debbugs.gnu.org; Fri, 01 Jul 2022 07:33:18 -0400
Received: by mail-ej1-f41.google.com with SMTP id o25so3557493ejm.3
 for <45898 <at> debbugs.gnu.org>; Fri, 01 Jul 2022 04:33:18 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;
 h=mime-version:subject:from:in-reply-to:date:cc:message-id:references
 :to; bh=+ZkjMFg+5xJiwL+jS2i7rmPkLEjGuBF0PplOs6zUsTA=;
 b=e079bA2YMLoV6VJwr9vYSiRCrv0PoiPDcfeX41sdJ4gtAkTdGR7b+SU6M0nHQITXey
 j5rEQ8+WXVOckUA72A4zP1E0byWU2LQCeIrCmE0DgVtNpcQ9VoO6rAuyQWCYc+ukOl+F
 isuTA0Rquu96gd9ajPmYCmlxrweNtic6lj8C5VFC7qqjAV0oEEpZNOxWwsqdoJsW1P/M
 hzWyAckp5Ihxw5koysbI4SNT0eWCJKmVWlsG6I7j1i6oempu2hhqv8J0O/DvjdudlqxW
 LhV4sv2DXPs/2aBi9uDDT60TWnqXjZ2CYdCRKOBZ8YBbe3AND4SK6T4yirGeTqILwWno
 dCUw==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112;
 h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc
 :message-id:references:to;
 bh=+ZkjMFg+5xJiwL+jS2i7rmPkLEjGuBF0PplOs6zUsTA=;
 b=OiikhESe5RxaemtZeBdImUKVKZ1CbcCIwAUscU0HcqIANSoWSnvFIgpJsqPlTEKucM
 rkFM1+Iv05OFkE0SndbuT/ChedQemK7D2+UVxxkIPHv5zzjGnJ4SWdUUeSINPei/4C77
 ODx7xeEMiuiMKq9f4TOSbGBu0zfQ09+PU1ZLGKfst8sZg5Pepkg+VDgRjWpBDUg3bw1w
 7Z1Ih6XLqeYoCL0m2ATkaEahBEKU9T7XL10Taieg2fXZ/y6ateUv38AqiWoALYFXybQg
 Q2qTs1uO3EF1Xx7cXFx+UBi9GmdXWpjpaQWgh/uxbF87D+3mJbth+CU4hnWA1svtCukr
 pPWA==
X-Gm-Message-State: AJIora9u7aYt6t+77/2gHEE/5Qd0hsKOlva9ttaz6qMimonL2g7vVUaS
 rvm5/kYyCvQn2nM4nAbBOXA=
X-Google-Smtp-Source: AGRyM1vlqGbSLRkYdj/bTmVJqAfQsVZxbyy1YDc6ssYW++0bnIKdpmJslFzVgPzKXsY6c5WhjuwX8A==
X-Received: by 2002:a17:906:ae0f:b0:726:32b3:17f4 with SMTP id
 le15-20020a170906ae0f00b0072632b317f4mr14296457ejb.116.1656675192422; 
 Fri, 01 Jul 2022 04:33:12 -0700 (PDT)
Received: from smtpclient.apple (pd9e369c3.dip0.t-ipconnect.de.
 [217.227.105.195]) by smtp.gmail.com with ESMTPSA id
 q21-20020aa7cc15000000b0042617ba638esm14751459edt.24.2022.07.01.04.33.10
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Fri, 01 Jul 2022 04:33:11 -0700 (PDT)
Content-Type: multipart/signed;
 boundary="Apple-Mail=_CB778813-18C4-4DB7-8B4C-591568C7B62F";
 protocol="application/pgp-signature"; micalg=pgp-sha512
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.100.31\))
From: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
In-Reply-To: <83o7y9dr2f.fsf@HIDDEN>
Date: Fri, 1 Jul 2022 13:33:10 +0200
Message-Id: <FD127D22-071A-4C4A-A9DE-21E88EB8E909@HIDDEN>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN>
 <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN>
 <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN>
 <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN>
 <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN>
 <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> <837d4yf18n.fsf@HIDDEN>
 <jwvedz6x729.fsf-monnier+emacs@HIDDEN>
 <6A3A8E3E-9FF6-4509-893B-EBFF7B573CDA@HIDDEN> <83y1xde5cs.fsf@HIDDEN>
 <201D8E28-F7BD-4E3D-826F-37008CF73003@HIDDEN> <83tu81dszv.fsf@HIDDEN>
 <6829D55A-C056-485A-82BE-4E01F80307DE@HIDDEN> <83o7y9dr2f.fsf@HIDDEN>
X-Mailer: Apple Mail (2.3696.100.31)
X-Spam-Score: -0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)


--Apple-Mail=_CB778813-18C4-4DB7-8B4C-591568C7B62F
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8



> On 2022-07-01,, at 13:12 , Eli Zaretskii <eliz@HIDDEN> wrote:
>=20
>> From: Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN>
>=20
>> Big downside is not being able to produce some form of sharable text =
or pdf output.
>=20
> I'm sure there is some way of producing text from an image, nowadays.
> But even if just the image is posted, it provides useful information.

There is, on macOS, but it doesn't produce something useful from call =
stacks, for instance.

>=20
>> What would be a good place for such a script in the repo?  Does =
admin/macos sound right?  But I'll wait for your okay for that.
>=20
> I think nextstep/ is a better place.  admin/ is for stuff useful only
> to Emacs developers, whereas this script sounds like being more
> generally useful.

Ok.  Can someone familiar with nextstep/ tell me where to put the =
script?  And, if it should be changed in some way?


--Apple-Mail=_CB778813-18C4-4DB7-8B4C-591568C7B62F
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename=signature.asc
Content-Type: application/pgp-signature;
	name=signature.asc
Content-Description: Message signed with OpenPGP

-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - https://gpgtools.org

iQIzBAEBCgAdFiEEirYePpiT82Hjkftpc+obGZDFPmMFAmK+23YACgkQc+obGZDF
PmMS5Q/8D/S4E8ZIA+cqCDKg21tk581VqyoNrjR6VDugfzBwmW7jYOqhOP0lElNQ
nLT3YlMuCZ8Px1qyC2AzeBwlzAKyZhYLOu+/C+clDWJZniH0cLeSmUO8toWidXnq
O1NCLYbp01eCPF7jtjXY43h3QQrictaas/QSnm/JjBDjCZuYJd1vRuXAIS1ZGMDM
RtBW4o8s5t4AUhv6EKnhscOT2IkZbmawj8oBtwVzCPA9dsamKPO5h55KdbFatqmg
fOOALDaVzUvAShs+kQIrltXYVQzwyWieCs6X3LchS5BCe4iECKKkOTAuU5HHb7o7
1+Oqi2k9V6a5OF+E7qEzDspuBT0k46HMgmsO84pERnd00vHJpzgasSTJzhngFRFN
tcbmvAhhwIM1xAFS4Txuz9Y/TxSqmABFCRGyMHgQ3KvrbyzayJfY8h0SUJzUtujR
B7gcH8AmjCUyjgRfZzzJJ7+1+LtVgMlf5+4+MHEc04CBb2Bn4JvZUzCZuVgfkczy
VhSvMJaoJdlJs0XO27d3Y0v/dveSO/wv4yswcQDXGQRGHhEKNuYo3NnR00O5OmsP
0AQeQ49UvP/a5N5g02gY1e6FHBSJnwbGVJwbmqk++IXtObhH6PlKPe0qNKPOYZm5
BHcrrrYKWI1fpvrRsfsi4lHDvGlDESmFeB4V5TqZsjRushiZtME=
=5tLM
-----END PGP SIGNATURE-----

--Apple-Mail=_CB778813-18C4-4DB7-8B4C-591568C7B62F--




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Fri, 01 Jul 2022 11:45:01 +0000
Resent-Message-ID: <handler.45898.B45898.165667587820078 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, monnier@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165667587820078
          (code B ref 45898); Fri, 01 Jul 2022 11:45:01 +0000
Received: (at 45898) by debbugs.gnu.org; 1 Jul 2022 11:44:38 +0000
Received: from localhost ([127.0.0.1]:36464 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o7F4f-0005Dm-Q8
	for submit <at> debbugs.gnu.org; Fri, 01 Jul 2022 07:44:37 -0400
Received: from mail-ej1-f41.google.com ([209.85.218.41]:34614)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <gerd.moellmann@HIDDEN>) id 1o7F4c-0005DY-N5
 for 45898 <at> debbugs.gnu.org; Fri, 01 Jul 2022 07:44:36 -0400
Received: by mail-ej1-f41.google.com with SMTP id d2so3624687ejy.1
 for <45898 <at> debbugs.gnu.org>; Fri, 01 Jul 2022 04:44:34 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;
 h=mime-version:subject:from:in-reply-to:date:cc:message-id:references
 :to; bh=TWvPkBz9S/6KtoyDj5Q9odqN8GvQs2fmK7JjcqmhDrM=;
 b=VxdxLa9TPHXFGGFEMZV3/g1awiIyIzC6bhSUYYs/IDuvg9MTo26GIWzxNPTXTAh++k
 SXkbe9gZsvGbLBgECBybNhFYk4vmCbGXtLiiP9SvsTef/Ovc07GAVASKKI3xsYyg70Wd
 dfeZhE36yPGHw/6mrzcMHJXEUwZdOv7xcFNgnE8SBluLztVjeCT81Ovc0P+MnU0d+2zQ
 isVeaQDTYfS2Paf1JbJsATbSI0ntm4ru1eNLD43JPjHTUiYeTHyqH3GWN8N5ZYEJ5eqE
 5r8K9cfsIfbidI3Zv+jgflIKIAVDQNAr7xVuOTnEEnN02POmTau5icMgoY63wyvNbUWv
 BvFA==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112;
 h=x-gm-message-state:mime-version:subject:from:in-reply-to:date:cc
 :message-id:references:to;
 bh=TWvPkBz9S/6KtoyDj5Q9odqN8GvQs2fmK7JjcqmhDrM=;
 b=khsqxuuz5MPU10Ku+/EXoGJw1nO44plyMDw29kR7ZFNnZFoo/pv14JVKVmekgLWkev
 HOH1xMIs5zXKSSVEvlSKkX+D+uIM3w8UuocbDS3Mfh813bTIcgLwSU1WFcRV+FttxgbM
 6tXAY5tAFMVyQGDgl5CllZnI1LMSHyxEaDuEjK1iH0xHccL2KIrFk2aSWPu3Qd4T2n3h
 +l19P/oYQS8d/r+MHjFrAfLMxYb6T24s/yZObqxAZqPF6lqaeZ8nJJ4lJIY1Pk1T7QbY
 LXVUcBV92zkkyiUiKZDhaBMpqvxlRANHRzLB5nmm27W6PgFiB6+JGkeLnug0shZEcOk+
 e13w==
X-Gm-Message-State: AJIora8eG5fNk7HfdPYDqp0wTvuaIlvxUJvcMdqJ4i71P9el9MIA5p7z
 4Ms9HadQP8cnAYmqHqnujII=
X-Google-Smtp-Source: AGRyM1tQU+ThCqWVnQKIIcXgfK/aBqo1jdZa9nOCJ2iFO/lk2z8XXisln1MfgrSt0Wc4S2MEsgRmFA==
X-Received: by 2002:a17:907:75c1:b0:72a:430d:b512 with SMTP id
 jl1-20020a17090775c100b0072a430db512mr12075803ejc.146.1656675868703; 
 Fri, 01 Jul 2022 04:44:28 -0700 (PDT)
Received: from smtpclient.apple (pd9e369c3.dip0.t-ipconnect.de.
 [217.227.105.195]) by smtp.gmail.com with ESMTPSA id
 v18-20020a50a452000000b0043576d146f0sm15053265edb.54.2022.07.01.04.44.27
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Fri, 01 Jul 2022 04:44:27 -0700 (PDT)
Content-Type: multipart/signed;
 boundary="Apple-Mail=_468CECAF-77F6-4CBB-829A-92058AE0D2FE";
 protocol="application/pgp-signature"; micalg=pgp-sha512
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.100.31\))
From: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
In-Reply-To: <83y1xde5cs.fsf@HIDDEN>
Date: Fri, 1 Jul 2022 13:44:26 +0200
Message-Id: <25F8DA8E-0C2B-4996-9DB0-E89BDE81C924@HIDDEN>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN>
 <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN>
 <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN>
 <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN>
 <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN>
 <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> <837d4yf18n.fsf@HIDDEN>
 <jwvedz6x729.fsf-monnier+emacs@HIDDEN>
 <6A3A8E3E-9FF6-4509-893B-EBFF7B573CDA@HIDDEN> <83y1xde5cs.fsf@HIDDEN>
X-Mailer: Apple Mail (2.3696.100.31)
X-Spam-Score: -0.0 (/)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -1.0 (-)


--Apple-Mail=_468CECAF-77F6-4CBB-829A-92058AE0D2FE
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=utf-8


> On 2022-07-01,, at 8:04 , Eli Zaretskii <eliz@HIDDEN> wrote:
>=20
>> From: Gerd M=C3=B6llmann <gerd.moellmann@HIDDEN>
>> Would it be possible to run this with gprof profiling?  I think that =
could give some clues what is going on.
>=20
> Or (on GNU/Linux only) under 'prof' -- which doesn't require you to
> build a special version of Emacs, and still produces detailed CPU
> usage info.

I have medium_line.json now, and I see slowness (with truncate-lines nil =
and font-lock), after finding the file and doing random things.

Is it sufficient to do just that for some time while tracing?  Do we =
have some Lisp code to automated this, and make it more reproducible?  =
Or, even, should be do truncate-line t first, and without font-lock?

(Did someone else observe it being fast at first, and then later slowing =
down?)


--Apple-Mail=_468CECAF-77F6-4CBB-829A-92058AE0D2FE
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename=signature.asc
Content-Type: application/pgp-signature;
	name=signature.asc
Content-Description: Message signed with OpenPGP

-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - https://gpgtools.org

iQIzBAEBCgAdFiEEirYePpiT82Hjkftpc+obGZDFPmMFAmK+3hoACgkQc+obGZDF
PmO62Q/9HgPXuMPiN/Ct5ivbhmssG49yZ8Kz4R/1Yn89Tz3qE4WHn/8t7PPpP4zI
RWnzb9oSxzrAEecOeOZqU7rSsMF8LsSkeQveymQdWtIHd7YnKNAhJnu7/ACTpuG/
jqG5ygi1ZfJmzmyp+6NR9I+9Ck4x5n6RYhhudShuXue1Uao4IcSBc3wUJPHrVmgr
ZSqL121nU5nqpOSahbVKTiwPnPxYR+VW2E//m/1LOsT0eaj7NVk6p1o2I8/H9lXm
so0Unqe+21BPwcNV0ETAx3O4uARG0NLTKoO6C9cbnSeZGRt6+If5s1APuXvtPNkf
KaucSAsBhLO0uQtN3w1guanDMVdLSHPflVjq0Y20dUOTeEF5wyum00r5zK0ejtBr
oH4t7i5+dO9kZHyDg3OvzdLhY5UGOZuDzeh7h8CoJA+TGfwREr/VjuFvG2nnIAqN
aA3rwt971cjNxMJ6xiOxiHVy09OQLjDPexqfCbv2K9ZpohoAO/FPUCEoWPyNAhRX
IH3J3L/VNtbfJvGGHdaaLMtYKkNCXzjVaJ5e2PxCSCNmvy3WEtotGRMTuE03uZi3
BUiGOU7kq5wz3yG8CdIWcle6RExdRxSJr6gNbCC39WcH5k2KO1K4wHNHN/W+o4UF
2aoAaUmMIC/lNBl81zxfn1c3xGMVTHfpUFgY12lhgZLEO8Ma6nw=
=w95e
-----END PGP SIGNATURE-----

--Apple-Mail=_468CECAF-77F6-4CBB-829A-92058AE0D2FE--




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Stefan Monnier <monnier@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Fri, 01 Jul 2022 12:15:02 +0000
Resent-Message-ID: <handler.45898.B45898.16566776857647 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: gerd.moellmann@HIDDEN, psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.16566776857647
          (code B ref 45898); Fri, 01 Jul 2022 12:15:02 +0000
Received: (at 45898) by debbugs.gnu.org; 1 Jul 2022 12:14:45 +0000
Received: from localhost ([127.0.0.1]:36541 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o7FXp-0001zH-Cg
	for submit <at> debbugs.gnu.org; Fri, 01 Jul 2022 08:14:45 -0400
Received: from mailscanner.iro.umontreal.ca ([132.204.25.50]:38157)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <monnier@HIDDEN>) id 1o7FXm-0001yx-11
 for 45898 <at> debbugs.gnu.org; Fri, 01 Jul 2022 08:14:44 -0400
Received: from pmg2.iro.umontreal.ca (localhost.localdomain [127.0.0.1])
 by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id 5A1798027D;
 Fri,  1 Jul 2022 08:14:36 -0400 (EDT)
Received: from mail01.iro.umontreal.ca (unknown [172.31.2.1])
 by pmg2.iro.umontreal.ca (Proxmox) with ESMTP id EDE1A80625;
 Fri,  1 Jul 2022 08:14:34 -0400 (EDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=iro.umontreal.ca;
 s=mail; t=1656677674;
 bh=d6mATSOwTeJNrXl/MgKT4M1oLMWDUfACbwDnqfzpCeU=;
 h=From:To:Cc:Subject:References:Date:In-Reply-To:From;
 b=XLTdX5lrJ5drHmQCkt7cm11tMG7fIXCVymdv9nW5Td4pkoBL5ru3m9/OCevAxaqLy
 amOnTVz/LJ4ByKb3GHoWxwTfON7UhrujUYlX/0DD2O55XoXSqRc7vURWQ8RawKmgbV
 N0krSL6dMK6BiuvDOOU3z4wUQNT6DtHnsSK9S0/vRdctd9i69m7/ZmMRcKgXWSrHp4
 QiRMw1/1RGl3PQtJpoYnBwp6K/cmtNPjDtq2wTGYwfE15tPQ1YwnVbilp7EOEHRoFJ
 ayfEdBb0E0zawRF+pDulISkFIp4HVsM4dZWrUDZLpnB6u1eExvHx8M+wDXdzQ8Z3QX
 uXoa7w7P/LnCQ==
Received: from alfajor (unknown [45.72.196.165])
 by mail01.iro.umontreal.ca (Postfix) with ESMTPSA id 9F584120254;
 Fri,  1 Jul 2022 08:14:34 -0400 (EDT)
From: Stefan Monnier <monnier@HIDDEN>
Message-ID: <jwv1qv5uj1n.fsf-monnier+emacs@HIDDEN>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN>
 <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN>
 <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN>
 <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN>
 <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN>
 <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> <837d4yf18n.fsf@HIDDEN>
 <jwvedz6x729.fsf-monnier+emacs@HIDDEN> <835ykhflmr.fsf@HIDDEN>
Date: Fri, 01 Jul 2022 08:14:33 -0400
In-Reply-To: <835ykhflmr.fsf@HIDDEN> (Eli Zaretskii's message of "Fri, 01 Jul
 2022 08:27:24 +0300")
User-Agent: Gnus/5.13 (Gnus v5.13) Emacs/29.0.50 (gnu/linux)
MIME-Version: 1.0
Content-Type: text/plain
X-SPAM-INFO: Spam detection results:  0
 ALL_TRUSTED                -1 Passed through trusted hosts only via SMTP
 AWL -0.054 Adjusted score from AWL reputation of From: address
 BAYES_00                 -1.9 Bayes spam probability is 0 to 1%
 DKIM_SIGNED               0.1 Message has a DKIM or DK signature,
 not necessarily valid
 DKIM_VALID -0.1 Message has at least one valid DKIM or DK signature
 DKIM_VALID_AU -0.1 Message has a valid DKIM or DK signature from author's
 domain T_SCC_BODY_TEXT_LINE    -0.01 -
X-SPAM-LEVEL: 
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

>> > That's only true if max-redisplay-ticks is zero.
>> 
>> Why would that make a difference?
>
> Because if it is not zero, we won't let the entire line to be
> fontified, we will stop that before it gets to the end of the line.

Interesting, where in the code do you do that?


        Stefan





Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Fri, 01 Jul 2022 12:36:01 +0000
Resent-Message-ID: <handler.45898.B45898.165667894518495 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Eli Zaretskii <eliz@HIDDEN>
Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, monnier@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165667894518495
          (code B ref 45898); Fri, 01 Jul 2022 12:36:01 +0000
Received: (at 45898) by debbugs.gnu.org; 1 Jul 2022 12:35:45 +0000
Received: from localhost ([127.0.0.1]:36596 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o7Fs9-0004oF-0W
	for submit <at> debbugs.gnu.org; Fri, 01 Jul 2022 08:35:45 -0400
Received: from mail-ej1-f41.google.com ([209.85.218.41]:44875)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <gerd.moellmann@HIDDEN>) id 1o7Fs7-0004nx-5Z
 for 45898 <at> debbugs.gnu.org; Fri, 01 Jul 2022 08:35:43 -0400
Received: by mail-ej1-f41.google.com with SMTP id sb34so3780106ejc.11
 for <45898 <at> debbugs.gnu.org>; Fri, 01 Jul 2022 05:35:43 -0700 (PDT)
DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20210112;
 h=from:message-id:mime-version:subject:date:in-reply-to:cc:to
 :references; bh=dtVzYUws+y64pLs33fsMCds0qA2OlRPRWO1+ClZEL/k=;
 b=NyIGMJyv+NMfHjDpR8uUN8KbgZLIUneGP4UkT9VdapU6xHlrZVFHVce1aSYUEQfSq4
 pSwYofRBqxyKfhmpezn+0KcZP00hsjhle5gVk/pyxbWNEs2wP9THqpa3tX8AC4RIf17P
 GeflXpUJw5hllMhUE5vYvgrWQrBTyKOGdkm8hfklLqMhfUP8+CaLHeMV3xDzsfsKQDr0
 7oBuoziVK3W9IRWrO8gq17+ccZXMllbNWscNxbbjiT1E6GE5Esfuf95cGKqCs06lAKQt
 5smICGyvV2dmA+ztao86sGBMerVsKfmfAJDm21Ig5qZbCS/8KuRJJXC734KQNQYk5fqr
 kx2A==
X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;
 d=1e100.net; s=20210112;
 h=x-gm-message-state:from:message-id:mime-version:subject:date
 :in-reply-to:cc:to:references;
 bh=dtVzYUws+y64pLs33fsMCds0qA2OlRPRWO1+ClZEL/k=;
 b=NUhsZ66i82786nZBToAXqYmNmC1N+7DGKywMyd7NF8+K3emM7/X8sieZA1jYFpuLSb
 jfcUexmqbJ5priyFiySWC8yl67KrP4QEm10V1AC+xvVl0l7OZBCgk6npGvvF2wzV6UZL
 9D6nkSyaIHZGfWB/j80iZ0rvEqEmdB9UKvLX+9JUNUl87lc/45632nSW72gMR6+bx9xt
 0YjE3lBKYGOM8rKCJJsKA4SKe7ZJ/uG5i6CWmx5KIySPhXGJxDUOSBj2MWPZleH5DGL3
 kXhysUtkOkb9uI9oWrm2I61Vo5KU3UEXZ34iWrLe4VaOxlvQR1Jd3ZvYs4R2I8OFSfpe
 Gesg==
X-Gm-Message-State: AJIora8WSgnY42Lrj5T85lZOzvjj3NOjKt9s18MaVA3M/G1gxuNebnml
 uj7GxTxCt2jLZ81hwFzvNv0=
X-Google-Smtp-Source: AGRyM1sY580Jg5kHYMB4oTatY1vPgfG3eqqOriWsxvTQIKUGWQ4EJBPxOdcjumOynsHNtDaam8CUqA==
X-Received: by 2002:a17:906:9f0c:b0:724:a98e:1909 with SMTP id
 fy12-20020a1709069f0c00b00724a98e1909mr14091575ejc.481.1656678937037; 
 Fri, 01 Jul 2022 05:35:37 -0700 (PDT)
Received: from smtpclient.apple (pd9e369c3.dip0.t-ipconnect.de.
 [217.227.105.195]) by smtp.gmail.com with ESMTPSA id
 21-20020a170906301500b00728f6d4d0d7sm3572569ejz.67.2022.07.01.05.35.34
 (version=TLS1_2 cipher=ECDHE-ECDSA-AES128-GCM-SHA256 bits=128/128);
 Fri, 01 Jul 2022 05:35:35 -0700 (PDT)
From: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Message-Id: <482383B8-9833-4DF5-B10C-1CEA39E9352B@HIDDEN>
Content-Type: multipart/signed;
 boundary="Apple-Mail=_7F52C436-83E8-416F-8E58-7E70AD4F94B3";
 protocol="application/pgp-signature"; micalg=pgp-sha512
Mime-Version: 1.0 (Mac OS X Mail 16.0 \(3696.100.31\))
Date: Fri, 1 Jul 2022 14:35:33 +0200
In-Reply-To: <25F8DA8E-0C2B-4996-9DB0-E89BDE81C924@HIDDEN>
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN>
 <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN>
 <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN>
 <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN>
 <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN>
 <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> <837d4yf18n.fsf@HIDDEN>
 <jwvedz6x729.fsf-monnier+emacs@HIDDEN>
 <6A3A8E3E-9FF6-4509-893B-EBFF7B573CDA@HIDDEN> <83y1xde5cs.fsf@HIDDEN>
 <25F8DA8E-0C2B-4996-9DB0-E89BDE81C924@HIDDEN>
X-Mailer: Apple Mail (2.3696.100.31)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>


--Apple-Mail=_7F52C436-83E8-416F-8E58-7E70AD4F94B3
Content-Type: multipart/alternative;
	boundary="Apple-Mail=_1150C5BB-F9E7-434D-9520-996E3A597506"


--Apple-Mail=_1150C5BB-F9E7-434D-9520-996E3A597506
Content-Transfer-Encoding: quoted-printable
Content-Type: text/plain;
	charset=us-ascii

Here's a first shot.

Doing random stuff (C-e, C-a, C-p), truncate-lines nil, font-lock, =
max-redisplay-tick 0.

Not very surprising, I think.










--Apple-Mail=_1150C5BB-F9E7-434D-9520-996E3A597506
Content-Type: multipart/related;
	type="text/html";
	boundary="Apple-Mail=_B78DECB4-0BE7-4DA1-8A56-1E7D4EB15428"


--Apple-Mail=_B78DECB4-0BE7-4DA1-8A56-1E7D4EB15428
Content-Transfer-Encoding: quoted-printable
Content-Type: text/html;
	charset=us-ascii

<html><head><meta http-equiv=3D"Content-Type" content=3D"text/html; =
charset=3Dus-ascii"></head><body style=3D"word-wrap: break-word; =
-webkit-nbsp-mode: space; line-break: after-white-space;" =
class=3D""><div>Here's a first shot.</div><div><br =
class=3D""></div><div>Doing random stuff (C-e, C-a, C-p), truncate-lines =
nil, font-lock, max-redisplay-tick 0.</div><div><br =
class=3D""></div><div>Not very surprising, I think.</div><div><br =
class=3D""></div><div><img apple-inline=3D"yes" =
id=3D"43ADA476-0951-4FEE-9831-490915B6B727" =
src=3D"cid:CEF5AAC2-B85E-46AF-A476-9E9046DD1EF7" class=3D""></div><div><br=
 class=3D""></div><div><img apple-inline=3D"yes" =
id=3D"F7275539-1403-4613-AED7-B7519CC0E689" =
src=3D"cid:EA1B6F9C-8E3F-499B-B077-523875F86272" class=3D""></div><div><br=
 class=3D""></div><div><img apple-inline=3D"yes" =
id=3D"178423AB-5239-4A09-93FB-CB7F2D38770F" =
src=3D"cid:751315AA-3B86-4320-A10A-EF1906FA5905" class=3D""></div><div><br=
 class=3D""></div><div><img apple-inline=3D"yes" =
id=3D"44130E21-E051-470E-B50D-4C4B567D93C9" =
src=3D"cid:5916408D-9507-43BD-971D-BC8781F4BB13" class=3D""></div><div><br=
 class=3D""></div></body></html>=

--Apple-Mail=_B78DECB4-0BE7-4DA1-8A56-1E7D4EB15428
Content-Transfer-Encoding: base64
Content-Disposition: inline;
	filename="Screenshot 2022-07-01 at 14.24.17 .png"
Content-Type: image/png;
	name="Screenshot 2022-07-01 at 14.24.17 .png";
	x-unix-mode=0644
Content-Id: <CEF5AAC2-B85E-46AF-A476-9E9046DD1EF7>

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
hQ5zlMnoPC6TYv0A7OysGP8yabqz02QuMqo2sR/Gxt4YAIBvA+CLZGxsdOfY2Jd9aLF3AWjPndT5
44ZDv35KLLWVKd1X2cgq8A+b/Ab4S4//nIGigr/NfwJofSGf1ljUdQAAAFZlWElmTU0AKgAAAAgA
AYdpAAQAAAABAAAAGgAAAAAAA5KGAAcAAAASAAAARKACAAQAAAABAAACuKADAAQAAAABAAABgQAA
AABBU0NJSQAAAFNjcmVlbnNob3SR2cVdAAAB1mlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6
eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAi
PgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRm
LXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAg
ICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAg
IDxleGlmOlBpeGVsWURpbWVuc2lvbj4zODU8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICAg
ICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+Njk2PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAg
ICAgPGV4aWY6VXNlckNvbW1lbnQ+U2NyZWVuc2hvdDwvZXhpZjpVc2VyQ29tbWVudD4KICAgICAg
PC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CpYunlsAAEAASURB
VHgB7F0HXBVHEx8RYy+gRsEGohF7bxEsUVETe4m9916xxtiwYNcY81mw9xJjwx5N7JjYewMVxajY
SxTEb/6D9zge7/EeBrGww+9xe9v3f3e7s7OzOwkyZ832hqKhhAkTUoYMX9KjR4/p2bNnUWKmS5eO
Hj9+TK9evYoSpnkkSJBAc8r1zZuIIr/44gtCGS9evIgUB2n08SIFqhvBLFOmTHTjxo1YwelN4jQU
1nA73d86zICujU0CypA2FeV1caQzV27RP8GPKSws4tnZVx1BNis9KMHLh4Y078tRr04di1mvXbfO
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
RU5ErkJggg==
--Apple-Mail=_B78DECB4-0BE7-4DA1-8A56-1E7D4EB15428
Content-Transfer-Encoding: base64
Content-Disposition: inline;
	filename="Screenshot 2022-07-01 at 14.25.56 .png"
Content-Type: image/png;
	name="Screenshot 2022-07-01 at 14.25.56 .png";
	x-unix-mode=0644
Content-Id: <EA1B6F9C-8E3F-499B-B077-523875F86272>

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
hQ5zlMnoPC6TYv0A7OysGP8yabqz02QuMqo2sR/Gxt4YAIBvA+CLZGxsdOfY2Jd9aLF3AWjPndT5
44ZDv35KLLWVKd1X2cgq8A+b/Ab4S4//nIGigr/NfwJofSGf1ljUdQAAAFZlWElmTU0AKgAAAAgA
AYdpAAQAAAABAAAAGgAAAAAAA5KGAAcAAAASAAAARKACAAQAAAABAAACx6ADAAQAAAABAAAAoQAA
AABBU0NJSQAAAFNjcmVlbnNob3Tvg7vsAAAB1mlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6
eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAi
PgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRm
LXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAg
ICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAg
IDxleGlmOlBpeGVsWURpbWVuc2lvbj4xNjE8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICAg
ICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NzExPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAg
ICAgPGV4aWY6VXNlckNvbW1lbnQ+U2NyZWVuc2hvdDwvZXhpZjpVc2VyQ29tbWVudD4KICAgICAg
PC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+CgwFVgAAAEAASURB
VHgB7F0HQBVHEx4BRRQUEWssYO9d1Ii9Jv6x9957jyW22Fvs0dh71MSe2KMm1tij2LAFwYo9NhQR
8Z9vYR/3jleRGJUdfdzdttv73r3d2dlvdxIka/7XW1ISLxFwvrGWElUbSREvHsd4fkcHojcRMYLJ
IYk7hf02nF5lbBAzUoUoBBQCCgGFgEJAIaAQ+MgRcIpN/dOlSEiPnofTq9ex06udEyYgR4cE9OKV
Ce0rNhWKJ3kYMsqa1pmuBL+KsyeGYvxox3BDeQ58kzQpk1HerOnpfMBtuvvwKUVERH/PHtVHGtKq
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
--Apple-Mail=_B78DECB4-0BE7-4DA1-8A56-1E7D4EB15428
Content-Transfer-Encoding: base64
Content-Disposition: inline;
	filename="Screenshot 2022-07-01 at 14.31.21 .png"
Content-Type: image/png;
	name="Screenshot 2022-07-01 at 14.31.21 .png";
	x-unix-mode=0644
Content-Id: <751315AA-3B86-4320-A10A-EF1906FA5905>

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
hQ5zlMnoPC6TYv0A7OysGP8yabqz02QuMqo2sR/Gxt4YAIBvA+CLZGxsdOfY2Jd9aLF3AWjPndT5
44ZDv35KLLWVKd1X2cgq8A+b/Ab4S4//nIGigr/NfwJofSGf1ljUdQAAAFZlWElmTU0AKgAAAAgA
AYdpAAQAAAABAAAAGgAAAAAAA5KGAAcAAAASAAAARKACAAQAAAABAAAC+KADAAQAAAABAAACHQAA
AABBU0NJSQAAAFNjcmVlbnNob3QnXC2BAAAB1mlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6
eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAi
PgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRm
LXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAg
ICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAg
IDxleGlmOlBpeGVsWURpbWVuc2lvbj41NDE8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICAg
ICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NzYwPC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAg
ICAgPGV4aWY6VXNlckNvbW1lbnQ+U2NyZWVuc2hvdDwvZXhpZjpVc2VyQ29tbWVudD4KICAgICAg
PC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+ChImUL8AAEAASURB
VHgB7F0FYFRHEx6SIAGCBAkaEtxdS3CH4u5WHAptcSlQvLgFDQ4tRYsX2qLFXYIUEjxYcA0B/vnm
8i7vLne5Owh/gezA5b23vt+7252dmZ2NkaDZkXdkg36sn4p+qJHCJFW+nmco4PYrKpk9Ps3u6EUp
E8ei16HvaPGue/TDgmv01kqprrFi0L5R2ck7eWwq2PsM/Rv0iopmjkdr+2Si2C4xqK3vZVp94IHU
9UN1D2pXIRll737aankmjYpmD+VzJ6CZ7dNRsoQx6cb9EGo5NZAOXXz2QSjEvraCXEp8R/e3DJZy
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
gf8HjqOpiqABE+wAAAAASUVORK5CYII=
--Apple-Mail=_B78DECB4-0BE7-4DA1-8A56-1E7D4EB15428
Content-Transfer-Encoding: base64
Content-Disposition: inline;
	filename="Screenshot 2022-07-01 at 14.33.11 .png"
Content-Type: image/png;
	name="Screenshot 2022-07-01 at 14.33.11 .png";
	x-unix-mode=0644
Content-Id: <5916408D-9507-43BD-971D-BC8781F4BB13>

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
hQ5zlMnoPC6TYv0A7OysGP8yabqz02QuMqo2sR/Gxt4YAIBvA+CLZGxsdOfY2Jd9aLF3AWjPndT5
44ZDv35KLLWVKd1X2cgq8A+b/Ab4S4//nIGigr/NfwJofSGf1ljUdQAAAFZlWElmTU0AKgAAAAgA
AYdpAAQAAAABAAAAGgAAAAAAA5KGAAcAAAASAAAARKACAAQAAAABAAAC7aADAAQAAAABAAABIwAA
AABBU0NJSQAAAFNjcmVlbnNob3SZWD8AAAAB1mlUWHRYTUw6Y29tLmFkb2JlLnhtcAAAAAAAPHg6
eG1wbWV0YSB4bWxuczp4PSJhZG9iZTpuczptZXRhLyIgeDp4bXB0az0iWE1QIENvcmUgNi4wLjAi
PgogICA8cmRmOlJERiB4bWxuczpyZGY9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkvMDIvMjItcmRm
LXN5bnRheC1ucyMiPgogICAgICA8cmRmOkRlc2NyaXB0aW9uIHJkZjphYm91dD0iIgogICAgICAg
ICAgICB4bWxuczpleGlmPSJodHRwOi8vbnMuYWRvYmUuY29tL2V4aWYvMS4wLyI+CiAgICAgICAg
IDxleGlmOlBpeGVsWURpbWVuc2lvbj4yOTE8L2V4aWY6UGl4ZWxZRGltZW5zaW9uPgogICAgICAg
ICA8ZXhpZjpQaXhlbFhEaW1lbnNpb24+NzQ5PC9leGlmOlBpeGVsWERpbWVuc2lvbj4KICAgICAg
ICAgPGV4aWY6VXNlckNvbW1lbnQ+U2NyZWVuc2hvdDwvZXhpZjpVc2VyQ29tbWVudD4KICAgICAg
PC9yZGY6RGVzY3JpcHRpb24+CiAgIDwvcmRmOlJERj4KPC94OnhtcG1ldGE+ClSgKTkAAEAASURB
VHgB7F0FYFRHE56EQLAkSHAL7lq0BNeW4tYCwTXQQvvjUgilOG2pQPHiXtxp0eLuUCBBg5cEhxD+
+eZuL+8ud8kFQoGyA5f33vp+727329nZXZf0GTO9IC0agVhEIDTkLnmk9IlxivduBJGnV5IYx9MR
NAIaAY2ARkAjoBHQCPzXEXD7r1dQ1+/fR0AIe6s9FP7wbqTM47gSPQ+P5EyuCZOQx7TiRE8ix4kc
WrtoBDQCGgGNgEZAI6AReL8QiJK0ly9fjoKDr9Hp06djBRUXFxerdF68sFbye3t7U2hoKD19+tQq
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
AABJRU5ErkJggg==
--Apple-Mail=_B78DECB4-0BE7-4DA1-8A56-1E7D4EB15428--

--Apple-Mail=_1150C5BB-F9E7-434D-9520-996E3A597506--

--Apple-Mail=_7F52C436-83E8-416F-8E58-7E70AD4F94B3
Content-Transfer-Encoding: 7bit
Content-Disposition: attachment;
	filename=signature.asc
Content-Type: application/pgp-signature;
	name=signature.asc
Content-Description: Message signed with OpenPGP

-----BEGIN PGP SIGNATURE-----
Comment: GPGTools - https://gpgtools.org

iQIzBAEBCgAdFiEEirYePpiT82Hjkftpc+obGZDFPmMFAmK+6hUACgkQc+obGZDF
PmO2TBAA7zVKqB39uEpqzIuuw7aGxaIiXWA9gBKvf1vkZwYqCKo9NoTY4UuhUYHa
LhO6SWm8cxjCp//9VhGsuJ8txiCY+5Q9CZHdttxSj1k8upx2lpbUtheMhqAQrtLO
v5XT5kXsDSuj05otxFVxvrUtRg+SZJOxmwLe9wTkOuIPMVecPO7TjV+LeimZlnAb
Mm7eAJVjANjBJBmHgPXmT4xc9YoVH9TkmBpm8ap0Af/Xhyj1ei8jLypotA0jHDnZ
vhcRvVcQkcDXs8MQkSi7sTFIJq6uBWbyyzQJeUD4qRw9paN4Vi57OnkzZygN67bo
AlrGwnfaTRC9TMTgMePnxMfb+688yjo3wv5OWg/pcNDTXzmbrQXcgrJW3mD9WUzB
JOs0sIvLvGvVtPbIjNYueG/Tzfcg72dSKi4d8I9taG7tFW6VSGJmtyfDHluyQcXe
rnpE7arDuStj4ghqN5VU3kOqfRrjT4Zb+hUXUuPytTDbjIHxPGLJ2f4hVsUMnf6b
WfftTQa2KWIPYDccX1nJF7rFUhqkjnQhVzcjlJWohQYPdOCysbCNHteJ2K4TuP66
Zorg+GCp+SzDdF4FaXLXkHOxn24XhMVZsLxqMq50cpn2/TjdOxHHluzwqOECapVA
PVw/IJHsBmXyjG6TzZFRjRIFjLP1sKLqwDUa0dhBgTwXcedfpfE=
=CMok
-----END PGP SIGNATURE-----

--Apple-Mail=_7F52C436-83E8-416F-8E58-7E70AD4F94B3--




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Fri, 01 Jul 2022 12:40:02 +0000
Resent-Message-ID: <handler.45898.B45898.165667916618848 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, monnier@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165667916618848
          (code B ref 45898); Fri, 01 Jul 2022 12:40:02 +0000
Received: (at 45898) by debbugs.gnu.org; 1 Jul 2022 12:39:26 +0000
Received: from localhost ([127.0.0.1]:36600 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o7Fve-0004tq-CR
	for submit <at> debbugs.gnu.org; Fri, 01 Jul 2022 08:39:26 -0400
Received: from eggs.gnu.org ([209.51.188.92]:60738)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1o7FvZ-0004ta-R2
 for 45898 <at> debbugs.gnu.org; Fri, 01 Jul 2022 08:39:21 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:43750)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o7FvS-0001IY-2T; Fri, 01 Jul 2022 08:39:10 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=wVhAMxvVgoo0CqFSEEo95JK0P4AO8koiLpeWmvIyDEg=; b=dUli0gA9NFESU4lqTVCk
 b031AKG1bvhAaeWyuS3A0ui5jDGjCOSMXO+6bjzE6vUT+qdTSs2EAqorecqIYxXSft0uZ0+tcRKGS
 lNahAkQGWotbakRzelp1GLxOPGUBYilgnw4EOHyL0YcalaBcHL664gckPTPLEgGJuhdCyUIlfAXC2
 UnXmwpuVYVOPg5otAaHp/k6e9MJEJKj852mE0v+UJFkxMDzuVfDXNr/r0Vvab8sP67KjwIymZWb4g
 MKXCfr1t2jddET/kvQrLLuikCYiF+C+wxIcOW9AsHnfy7vMXQSbigwLpKvTJKgezqEasfH9Y7gyf4
 QYg4nvBnqZaLGw==;
Received: from [87.69.77.57] (port=3901 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o7FvR-0007MD-Io; Fri, 01 Jul 2022 08:39:09 -0400
Date: Fri, 01 Jul 2022 15:39:19 +0300
Message-Id: <83letddn2g.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <25F8DA8E-0C2B-4996-9DB0-E89BDE81C924@HIDDEN> (message from
 Gerd =?UTF-8?Q?M=C3=B6llmann?= on Fri, 1 Jul 2022 13:44:26 +0200)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN>
 <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN>
 <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN>
 <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN>
 <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN>
 <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> <837d4yf18n.fsf@HIDDEN>
 <jwvedz6x729.fsf-monnier+emacs@HIDDEN>
 <6A3A8E3E-9FF6-4509-893B-EBFF7B573CDA@HIDDEN> <83y1xde5cs.fsf@HIDDEN>
 <25F8DA8E-0C2B-4996-9DB0-E89BDE81C924@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Gerd Möllmann <gerd.moellmann@HIDDEN>
> Date: Fri, 1 Jul 2022 13:44:26 +0200
> Cc: monnier@HIDDEN,
>  larsi@HIDDEN,
>  psainty@HIDDEN,
>  Emacs-hacker2018@HIDDEN,
>  45898 <at> debbugs.gnu.org
> 
> I have medium_line.json now, and I see slowness (with truncate-lines nil and font-lock), after finding the file and doing random things.

What "random things" did you try?

> Is it sufficient to do just that for some time while tracing?

Yes, I think so.

> Do we have some Lisp code to automated this, and make it more reproducible?

Possible, but we need to discuss first which commands such Lisp code
will invoke.  Each command that involves the display code has
different CPU processing requirements, and thus reacts differently to
such files.

> Or, even, should be do truncate-line t first, and without font-lock?

That's the next step, I think.  In general, you can look in so-long.el
for the list of features we found to be expensive in files with long
lines; font-lock is just one of them.  As for truncate-line, IME it
sometimes makes redisplay faster and sometimes slower.  I guess the
slower cases are where font-lock is the main culprit, since it doesn't
stop at the window edge.

> (Did someone else observe it being fast at first, and then later slowing down?)

That is what normally happens, and the effect on different commands is
different, unsurprisingly.  For example, with C-n I see consistent
slowdown as I go deeper and deeper into the file, and around 20% I
start getting "too long to redisplay" errors if I set
max-redisplay-ticks to 400,000.  By contrast, C-v's performance seems
to be much less affected by the position where I invoke it.  Still, it
becomes slower as I move forward: about 3 times as slow at 30% into
the file as it is at BOB.

The difference is almost certainly due to the fact that these commands
use different methods provided by the display engine code to do their
jobs.  In particular, C-n calls vertical-motion, which begins by going
back to the previous newline, and then comes back by moving the
display iteration.  Which in this case means it traverses all the text
from BOB to where you invoked C-n.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Fri, 01 Jul 2022 12:52:02 +0000
Resent-Message-ID: <handler.45898.B45898.165667987120305 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Stefan Monnier <monnier@HIDDEN>
Cc: gerd.moellmann@HIDDEN, psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165667987120305
          (code B ref 45898); Fri, 01 Jul 2022 12:52:02 +0000
Received: (at 45898) by debbugs.gnu.org; 1 Jul 2022 12:51:11 +0000
Received: from localhost ([127.0.0.1]:36633 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o7G74-0005HQ-MZ
	for submit <at> debbugs.gnu.org; Fri, 01 Jul 2022 08:51:11 -0400
Received: from eggs.gnu.org ([209.51.188.92]:35132)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1o7G6y-0005G4-Jg
 for 45898 <at> debbugs.gnu.org; Fri, 01 Jul 2022 08:51:09 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:45090)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o7G6s-0006zK-As; Fri, 01 Jul 2022 08:50:58 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=References:Subject:In-Reply-To:To:From:Date:
 mime-version; bh=eL3zeDVf/Z20MgeCrU9Q07RoD8aefhIjQmr2HX8Cn5k=; b=QmMFf0Ssreo8
 ATWPFVoeWpiaxmJfbpwdwx7dmUXLuixG+EInX0jvvOIlQEbp1Ma6sBsrFqedgyWiSgZrDuveIrMNO
 PVVFXElwueAXDCIjV6BHumPpRgHorW9A8LHOasDSo+MGlCzHLqL5tiQyu3M/m9B+tFLKSGln7FFDU
 MxxcYlZvDXgs9dSe8653okHXMdC817T42DdHLgzzqdGcSo58L8+fp99HxyqTQ2RVh8wTeo6A3ZZ4M
 TcMjWwKG+ZdKCPkZh46Pk+f1syA+uk0FUjlafUWEN7ei9SlMyEx59PA5ag2yv4QuqpD8nYnQmHOez
 JujLB6fDXmSoY++DgOqhKQ==;
Received: from [87.69.77.57] (port=4622 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o7G6r-0000Cf-QI; Fri, 01 Jul 2022 08:50:58 -0400
Date: Fri, 01 Jul 2022 15:51:08 +0300
Message-Id: <83ilohdmir.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <jwv1qv5uj1n.fsf-monnier+emacs@HIDDEN> (message from Stefan
 Monnier on Fri, 01 Jul 2022 08:14:33 -0400)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <83mteiufih.fsf@HIDDEN> <877d5kojbo.fsf@HIDDEN>
 <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN>
 <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN>
 <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN>
 <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN>
 <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> <837d4yf18n.fsf@HIDDEN>
 <jwvedz6x729.fsf-monnier+emacs@HIDDEN> <835ykhflmr.fsf@HIDDEN>
 <jwv1qv5uj1n.fsf-monnier+emacs@HIDDEN>
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Stefan Monnier <monnier@HIDDEN>
> Cc: gerd.moellmann@HIDDEN,  larsi@HIDDEN,  psainty@HIDDEN,
>   Emacs-hacker2018@HIDDEN,  45898 <at> debbugs.gnu.org
> Date: Fri, 01 Jul 2022 08:14:33 -0400
> 
> >> > That's only true if max-redisplay-ticks is zero.
> >> 
> >> Why would that make a difference?
> >
> > Because if it is not zero, we won't let the entire line to be
> > fontified, we will stop that before it gets to the end of the line.
> 
> Interesting, where in the code do you do that?

In scan_sexps_forward, near the end: if too many "ticks" are counted,
update_redisplay_ticks will signal an error.  Same thing in
re_match_2_internal.




Message sent to bug-gnu-emacs@HIDDEN:


X-Loop: help-debbugs@HIDDEN
Subject: bug#45898: 27.1; wedged in redisplay again
Resent-From: Eli Zaretskii <eliz@HIDDEN>
Original-Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
Resent-CC: bug-gnu-emacs@HIDDEN
Resent-Date: Fri, 01 Jul 2022 12:57:02 +0000
Resent-Message-ID: <handler.45898.B45898.165668017320798 <at> debbugs.gnu.org>
Resent-Sender: help-debbugs@HIDDEN
X-GNU-PR-Message: followup 45898
X-GNU-PR-Package: emacs
X-GNU-PR-Keywords: 
To: Gerd =?UTF-8?Q?M=C3=B6llmann?= <gerd.moellmann@HIDDEN>
Cc: psainty@HIDDEN, larsi@HIDDEN, Emacs-hacker2018@HIDDEN, monnier@HIDDEN, 45898 <at> debbugs.gnu.org
Received: via spool by 45898-submit <at> debbugs.gnu.org id=B45898.165668017320798
          (code B ref 45898); Fri, 01 Jul 2022 12:57:02 +0000
Received: (at 45898) by debbugs.gnu.org; 1 Jul 2022 12:56:13 +0000
Received: from localhost ([127.0.0.1]:36640 helo=debbugs.gnu.org)
	by debbugs.gnu.org with esmtp (Exim 4.84_2)
	(envelope-from <debbugs-submit-bounces <at> debbugs.gnu.org>)
	id 1o7GBt-0005PJ-EA
	for submit <at> debbugs.gnu.org; Fri, 01 Jul 2022 08:56:13 -0400
Received: from eggs.gnu.org ([209.51.188.92]:36302)
 by debbugs.gnu.org with esmtp (Exim 4.84_2)
 (envelope-from <eliz@HIDDEN>) id 1o7GBo-0005Ou-PA
 for 45898 <at> debbugs.gnu.org; Fri, 01 Jul 2022 08:56:07 -0400
Received: from fencepost.gnu.org ([2001:470:142:3::e]:45692)
 by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o7GBi-0000sb-7c; Fri, 01 Jul 2022 08:55:58 -0400
DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=gnu.org;
 s=fencepost-gnu-org; h=MIME-version:References:Subject:In-Reply-To:To:From:
 Date; bh=PM22ZkycAJaQR3y8hj4zS0NN4tzAPAUgZ8rNB5QG6Bg=; b=TonV9GpcpYVUkkQ+gd/i
 hQU5PpcX+Ium8H4zF3WBt/pUrmqzx4zCpfY45BMn7iaL9qi2LoIbmqpy4hjzEcP5if9qbOEdywLf/
 ZPBfmravT5L+mI1GRJD0HJz81Wsf+fW7SVY2klqHtm2Zo2m7P442HNQVuvoZloqm+lGAgkvugyKns
 wvzsAd5Q19VGrYztF4I9kiM0io+mqlwg8o0K6x9AwKg6z4ATPhRqA/1sj5mx2/sokPoePOeHjpGk8
 Wm6J3BETJ30XjcCnpZcaM4igRvJt2Pythd6/YJjbWywX7JOSdQBTp4s/Zu0jGFP85RfY2ed7g2xOP
 SHdMZt6F5H8e/g==;
Received: from [87.69.77.57] (port=4931 helo=home-c4e4a596f7)
 by fencepost.gnu.org with esmtpsa (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256)
 (Exim 4.90_1) (envelope-from <eliz@HIDDEN>)
 id 1o7GBh-000161-N9; Fri, 01 Jul 2022 08:55:58 -0400
Date: Fri, 01 Jul 2022 15:56:08 +0300
Message-Id: <83h741dmaf.fsf@HIDDEN>
From: Eli Zaretskii <eliz@HIDDEN>
In-Reply-To: <482383B8-9833-4DF5-B10C-1CEA39E9352B@HIDDEN> (message from
 Gerd =?UTF-8?Q?M=C3=B6llmann?= on Fri, 1 Jul 2022 14:35:33 +0200)
References: <46b65e3f-cf3d-a3f2-9a9a-100e58274ff6@HIDDEN>
 <83v8t6us8t.fsf@HIDDEN> <87zgiinptk.fsf@HIDDEN> <83mteiufih.fsf@HIDDEN>
 <877d5kojbo.fsf@HIDDEN> <83zgigu3e0.fsf@HIDDEN>
 <500e4b9c69f2a90e7cf05b956178d71b@HIDDEN>
 <835yl3tnv3.fsf@HIDDEN> <83iloyo0x7.fsf@HIDDEN>
 <jwv4k0du57x.fsf-monnier+emacs@HIDDEN> <83mte5jukr.fsf@HIDDEN>
 <jwvmte4qnw4.fsf-monnier+emacs@HIDDEN> <837d57gbed.fsf@HIDDEN>
 <jwvk097oznl.fsf-monnier+emacs@HIDDEN> <83o7yicx3p.fsf@HIDDEN>
 <jwvmtdvpii1.fsf-monnier+emacs@HIDDEN> <83pmir5lwc.fsf@HIDDEN>
 <jwvilojnqfb.fsf-monnier+emacs@HIDDEN> <83mtdu68cl.fsf@HIDDEN>
 <jwvr136xg6m.fsf-monnier+emacs@HIDDEN> <837d4yf18n.fsf@HIDDEN>
 <jwvedz6x729.fsf-monnier+emacs@HIDDEN>
 <6A3A8E3E-9FF6-4509-893B-EBFF7B573CDA@HIDDEN> <83y1xde5cs.fsf@HIDDEN>
 <25F8DA8E-0C2B-4996-9DB0-E89BDE81C924@HIDDEN>
 <482383B8-9833-4DF5-B10C-1CEA39E9352B@HIDDEN>
MIME-version: 1.0
Content-type: text/plain; charset=utf-8
Content-Transfer-Encoding: 8bit
X-Spam-Score: -2.3 (--)
X-BeenThere: debbugs-submit <at> debbugs.gnu.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: <debbugs-submit.debbugs.gnu.org>
List-Unsubscribe: <https://debbugs.gnu.org/cgi-bin/mailman/options/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=unsubscribe>
List-Archive: <https://debbugs.gnu.org/cgi-bin/mailman/private/debbugs-submit/>
List-Post: <mailto:debbugs-submit <at> debbugs.gnu.org>
List-Help: <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=help>
List-Subscribe: <https://debbugs.gnu.org/cgi-bin/mailman/listinfo/debbugs-submit>, 
 <mailto:debbugs-submit-request <at> debbugs.gnu.org?subject=subscribe>
Errors-To: debbugs-submit-bounces <at> debbugs.gnu.org
Sender: "Debbugs-submit" <debbugs-submit-bounces <at> debbugs.gnu.org>
X-Spam-Score: -3.3 (---)

> From: Gerd Möllmann <gerd.moellmann@HIDDEN>
> Date: Fri, 1 Jul 2022 14:35:33 +0200
> Cc: monnier@HIDDEN,
>  larsi@HIDDEN,
>  psainty@HIDDEN,
>  Emacs-hacker2018@HIDDEN,
>  45898 <at> debbugs.gnu.org
> 
> Here's a first shot.
> 
> Doing random stuff (C-e, C-a, C-p), truncate-lines nil, font-lock, max-redisplay-tick 0.
> 
> Not very surprising, I think.

Indeed, quite expected.





Last modified: Fri, 1 Jul 2022 13:00:02 UTC

GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997 nCipher Corporation Ltd, 1994-97 Ian Jackson.