unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
From: Eli Zaretskii <eliz@gnu.org>
To: Stephen Berman <stephen.berman@gmx.net>
Cc: 15841@debbugs.gnu.org
Subject: bug#15841: Display bugs with cache-long-lines non-nil
Date: Tue, 12 Nov 2013 18:31:32 +0200	[thread overview]
Message-ID: <83txfh1t0b.fsf@gnu.org> (raw)
In-Reply-To: <87mwla6inw.fsf@rosalinde.fritz.box>

> From: Stephen Berman <stephen.berman@gmx.net>
> Cc: 15841@debbugs.gnu.org
> Date: Tue, 12 Nov 2013 11:03:47 +0100
> 
> > I tracked the problematic fontification and motion behavior to
> > insert-directory in files.el: it happens during the loop when
> > decode-coding-region is called on the file names of the subdirectory
> > entries.  I stepped through the code with Edebug but could not tell why
> > it goes wrong here, and I'm too tired to pursue it further now.  Also,
> > when I step through this code, the "available" information is added at
> > the end of the entire subdirectory listing, unlike what I observed above
> > when just invoking `i' and then `C-g'.  I guess this is due to the
> > interaction of redisplay with stepping through the code; it's still
> > clear that the subdirectory listing is being treated as part of the line
> > containing the `..' entry.
> 
> I set a breakpoint on decode_coding_object and stepped through it after
> invoking `i', but the Dired display changed to show the problematic
> fontification only upon exiting decode_coding_object.  I don't know how
> to find out when cache_long_scans is checked other than manually tracing
> the call chains of each subroutine of decode_coding_object, which is too
> laborious.

There's no need: I already established that, as you point out, the
changes to the buffer that cause the problem are indeed made by
decode-coding-region.  The problem becomes visible when redisplay,
entered after decode-coding-region finishes its job, re-fontifies
portions of the buffer that were affected by the changes.  The way
this affects redisplay is through forward-line and
line-beginning-position, of which JIT Font Lock is a heavy user.
That's why you only see the effect after decode-coding-region returns.

> Is it possible to have execution halt when cache_long_scans is
> checked, and if so, how?

Watchpoints are the answer.  But in this case, there's only one place
in the whole Emacs where this variable is consulted: in search.c,
around line 610, so you could just put a breakpoint there.

In any case, I already traced through the code that is involved, and
the immediate reason for the assertion violation is that the cache
isn't being updated wrt changes in buffer size (which are caused by
decoding the stuff brought in by 'ls').  However, a naive attempt to
force such updates didn't solve the whole problem: the aborts are
gone, but the infloop is still there, and also other minor display
issues.  So I guess there's another factor at work there...

I also need to figure out how to keep the cache up to date without
penalizing performance, which would render the cache worthless.

> Or is there a better way to try to track down this bug?

The cache has only 3 public interfaces (see region-cache.c), so it is
easy to put breakpoints in all of them and see what happens.  That's
what I did.

Thanks.





  reply	other threads:[~2013-11-12 16:31 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-03 21:35 bug#15797: 24.3.50; Info: Mention cache-long-scans Jambunathan K
2013-11-04  0:36 ` Glenn Morris
2013-11-04  4:41   ` Jambunathan K
2013-11-04 13:10     ` Michael Heerdegen
2013-11-04 14:21       ` Jambunathan K
2013-11-05 16:32       ` Eli Zaretskii
2013-11-05 19:24         ` Stefan Monnier
2013-11-06  4:44           ` Jambunathan K
2013-11-08 10:29             ` Eli Zaretskii
2013-11-08 13:13               ` Jambunathan K
2013-11-08 14:02                 ` Stefan Monnier
2013-11-08 14:08                   ` Jambunathan K
2013-11-08 14:15                 ` Eli Zaretskii
2013-11-08 14:33                   ` Jambunathan K
2013-11-08 15:16                     ` Eli Zaretskii
2013-11-08 10:28           ` Eli Zaretskii
2013-11-08 19:07           ` Nathan Trapuzzano
2013-11-08 20:57             ` Stefan Monnier
2013-11-08 21:36               ` Nathan Trapuzzano
2013-11-08 23:11                 ` Nathan Trapuzzano
2013-11-09  8:33                 ` Eli Zaretskii
2013-11-08 21:18             ` Eli Zaretskii
2013-11-08 21:22               ` Glenn Morris
2013-11-09  2:37             ` Michael Heerdegen
2013-11-09  8:18             ` bug#15841: Display bugs with cache-long-lines non-nil Eli Zaretskii
2013-11-09  8:31               ` Eli Zaretskii
2013-11-09  8:52                 ` Eli Zaretskii
2013-11-09 11:18                 ` Eli Zaretskii
2013-11-09 14:02                   ` Eli Zaretskii
2013-11-09 21:27                     ` Eli Zaretskii
2013-11-10 18:20                 ` Michael Heerdegen
2013-11-10 18:31                   ` Eli Zaretskii
2013-11-11  3:39                     ` Michael Heerdegen
2013-11-11 16:23                       ` Eli Zaretskii
2013-11-13 23:45                         ` Michael Heerdegen
2013-11-14  3:51                           ` Eli Zaretskii
2013-11-09  8:51               ` Eli Zaretskii
2013-11-11 14:12               ` Stephen Berman
2013-11-11 20:13                 ` Eli Zaretskii
2013-11-11 20:38                   ` Stephen Berman
2013-11-12  0:38                 ` Stephen Berman
2013-11-12 10:03                   ` Stephen Berman
2013-11-12 16:31                     ` Eli Zaretskii [this message]
2013-11-12 21:34                       ` Stephen Berman
2013-11-15 16:34                       ` Eli Zaretskii
2013-11-15 18:05                         ` Stephen Berman
2013-11-16 18:53                         ` Andy Moreton
2013-11-16 19:02                           ` Eli Zaretskii
2013-11-18 16:32                           ` Eli Zaretskii
2013-11-06 18:02         ` bug#15797: 24.3.50; Info: Mention cache-long-scans Michael Heerdegen
2013-11-06 18:17           ` Eli Zaretskii
2013-11-06 18:50             ` Michael Heerdegen
2013-11-06 20:46               ` Eli Zaretskii
     [not found]         ` <<87wqkltnmk.fsf@web.de>
     [not found]           ` <<8338n975tf.fsf@gnu.org>
2013-11-06 18:58             ` Drew Adams
2013-11-06 20:56               ` Eli Zaretskii
     [not found] ` <handler.15797.D15797.138352538323812.notifdone@debbugs.gnu.org>
2013-11-04  6:27   ` bug#15797: closed (Re: bug#15797: 24.3.50; Info: Mention cache-long-scans) Jambunathan K
     [not found] <<871u2xf9st.fsf@gmail.com>
     [not found] <"<9jiow9uhoa.fsf"@fencepost.gnu.org>

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://www.gnu.org/software/emacs/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=83txfh1t0b.fsf@gnu.org \
    --to=eliz@gnu.org \
    --cc=15841@debbugs.gnu.org \
    --cc=stephen.berman@gmx.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).