* bug#14838: 24.3.50; repeating next-line or previous-line is broken @ 2013-07-10 21:29 Stephen Berman 2013-07-11 2:51 ` Eli Zaretskii 0 siblings, 1 reply; 13+ messages in thread From: Stephen Berman @ 2013-07-10 21:29 UTC (permalink / raw) To: 14838 Starting with revision 113314, I observe the following: 0. emacs -Q 1. C-h n to visit NEWS 2. Type C-n and hold the keys down to repeatedly move point down one line. At around line 250, the motion gets jerky and then appears to stop, and the cursor disappears. After releasing the keys (but with a delay of maybe a second or longer, perhaps depending on how long they were held down), the cursor reappears on a line further down (which one seems to depend on how long the keys were held down). Subsequently holding down C-n or C-p makes the cursor vanish and motion stop almost immediately, until the keys are released. The same thing happens if, after step 1 above, I type M-> and then hold down C-p (the stop seems to happen a bit later, maybe after moving up about 300 lines). With the revision 113360 (this one), the misbehavior begins almost immediately with C-n, though with C-p it appears to be the same as above. When the motion starts getting jerky, my CPU load starts shooting up, and hits 90%+ when the cursor disappears and motion stops, and stays at that load until the cursor reappears at the new location. My processor is an AMD Sempron 3400+ (64bit) with a maximum speed of 1.8GHz. In addition to the following system information, my desktop environment is KDE 4.9.5. My default font with emacs -Q is xft:-unknown-DejaVu Sans Mono-normal-normal-normal-*-15-*-*-*-m-0-iso10646-1 In GNU Emacs 24.3.50.12 (x86_64-suse-linux-gnu, GTK+ Version 3.4.4) of 2013-07-10 on rosalinde Bzr revision: 113360 eliz@gnu.org-20130710161817-qw8stt9m23a285vy Windowing system distributor `The X.Org Foundation', version 11.0.11203000 System Description: openSUSE 12.2 (x86_64) Configured using: `configure --without-toolkit-scroll-bars CFLAGS=-g3 -O0' Important settings: value of $LANG: en_US.UTF-8 value of $XMODIFIERS: @im=local locale-coding-system: utf-8-unix default enable-multibyte-characters: t ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#14838: 24.3.50; repeating next-line or previous-line is broken 2013-07-10 21:29 bug#14838: 24.3.50; repeating next-line or previous-line is broken Stephen Berman @ 2013-07-11 2:51 ` Eli Zaretskii 2013-07-11 10:04 ` Stephen Berman 0 siblings, 1 reply; 13+ messages in thread From: Eli Zaretskii @ 2013-07-11 2:51 UTC (permalink / raw) To: Stephen Berman; +Cc: 14838 > From: Stephen Berman <stephen.berman@gmx.net> > Date: Wed, 10 Jul 2013 23:29:12 +0200 > > Starting with revision 113314, I observe the following: > > 0. emacs -Q > 1. C-h n to visit NEWS > 2. Type C-n and hold the keys down to repeatedly move point down one line. > > At around line 250, the motion gets jerky and then appears to stop, and > the cursor disappears. After releasing the keys (but with a delay of > maybe a second or longer, perhaps depending on how long they were held > down), the cursor reappears on a line further down (which one seems to > depend on how long the keys were held down). Subsequently holding down > C-n or C-p makes the cursor vanish and motion stop almost immediately, > until the keys are released. The same thing happens if, after step 1 > above, I type M-> and then hold down C-p (the stop seems to happen a bit > later, maybe after moving up about 300 lines). > > With the revision 113360 (this one), the misbehavior begins almost > immediately with C-n, though with C-p it appears to be the same as > above. > > When the motion starts getting jerky, my CPU load starts shooting up, > and hits 90%+ when the cursor disappears and motion stops, and stays at > that load until the cursor reappears at the new location. > > My processor is an AMD Sempron 3400+ (64bit) with a maximum speed of > 1.8GHz. In addition to the following system information, my desktop > environment is KDE 4.9.5. My default font with emacs -Q is > xft:-unknown-DejaVu Sans Mono-normal-normal-normal-*-15-*-*-*-m-0-iso10646-1 Does using a different font change anything? To see which function takes most of the time, please use profiler-start, press C-n, then after you see CPU load for some time, invoke profiler-report. It is best to do that after manually loading simple.el in source form. Also, apply the patch I sent in http://debbugs.gnu.org/cgi/bugreport.cgi?bug=14836#8 and post the contents of *Messages* after leaning on C-n for some time in this situation. I also asked to try reducing the keyboard auto-repeat rate, and see if that makes any difference. Thanks. ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#14838: 24.3.50; repeating next-line or previous-line is broken 2013-07-11 2:51 ` Eli Zaretskii @ 2013-07-11 10:04 ` Stephen Berman 2013-07-11 15:59 ` Eli Zaretskii 0 siblings, 1 reply; 13+ messages in thread From: Stephen Berman @ 2013-07-11 10:04 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 14838 On Thu, 11 Jul 2013 05:51:52 +0300 Eli Zaretskii <eliz@gnu.org> wrote: >> From: Stephen Berman <stephen.berman@gmx.net> >> Date: Wed, 10 Jul 2013 23:29:12 +0200 >> >> Starting with revision 113314, I observe the following: >> >> 0. emacs -Q >> 1. C-h n to visit NEWS >> 2. Type C-n and hold the keys down to repeatedly move point down one line. >> >> At around line 250, the motion gets jerky and then appears to stop, and >> the cursor disappears. After releasing the keys (but with a delay of >> maybe a second or longer, perhaps depending on how long they were held >> down), the cursor reappears on a line further down (which one seems to >> depend on how long the keys were held down). Subsequently holding down >> C-n or C-p makes the cursor vanish and motion stop almost immediately, >> until the keys are released. The same thing happens if, after step 1 >> above, I type M-> and then hold down C-p (the stop seems to happen a bit >> later, maybe after moving up about 300 lines). >> >> With the revision 113360 (this one), the misbehavior begins almost >> immediately with C-n, though with C-p it appears to be the same as >> above. >> >> When the motion starts getting jerky, my CPU load starts shooting up, >> and hits 90%+ when the cursor disappears and motion stops, and stays at >> that load until the cursor reappears at the new location. >> >> My processor is an AMD Sempron 3400+ (64bit) with a maximum speed of >> 1.8GHz. In addition to the following system information, my desktop >> environment is KDE 4.9.5. My default font with emacs -Q is >> xft:-unknown-DejaVu Sans Mono-normal-normal-normal-*-15-*-*-*-m-0-iso10646-1 > > Does using a different font change anything? Yes. First, I found out that the problems I observed do not happen when I repeat exactly the above recipe after having removed my ~/.Xresources file and logged in again. That file contains this: Emacs.FontBackend: xft Emacs.Font: DejaVu Sans Mono-9 ! ---------[ xft ] --------- Xft*antialias: true Xft*autohint: true Without this, when I start Emacs with -Q, the font is still the one I reported above, but now holding down C-n in NEWS works fine. I don't understand why, since I thought -Q means no X resources are read. When I start Emacs with my init file but without the .Xresources file, I also don't observe the problem with C-n. In my initializations, I have the font DejaVu Sans Mono-9 set as default in a custom theme loaded from my init file (I've been using the .Xresources file since long before creating the them, and didn't try removing till now). So without the .Xresources file, I have no problem using C-n with this font, but with the above .Xresources, the problem occurs with this font. If I start Emacs with -q, the font used is now this: x:-sony-fixed-medium-r-normal--16-120-100-100-c-80-iso8859-1 Also with this font I see no problem when holding down C-n. Likewise starting with my initializations but removing DejaVu from the custom them, so with the -sony-fixed-medium-r-normal- font (which apparently comes from /usr/share/X11/app-defaults/Emacs). However, when I switch the default font (using the Options menu) to Adobe Courier, which starting with -Q is this: xft:-Adobe-Adobe Courier-normal-normal-normal-*-14-*-*-*-m-90-iso10646-1 and repeat the above recipe, now I do observe the problem. This also happens with -q and with my initializations, using Adobe Courier. > To see which function takes most of the time, please use > profiler-start, press C-n, then after you see CPU load for some time, > invoke profiler-report. It is best to do that after manually loading > simple.el in source form. I started Emacs like this: emacs -Q -l ~/bzr/emacs/quickfixes/lisp/simple.el switched the default font to Adobe Courier as described above and then followed your instructions; here is the report: + call-interactively 6758 29% + next-line 6059 26% + if 5176 22% + line-move 3875 16% + command-execute 522 2% Automatic GC 445 1% + let 86 0% + redisplay_internal (C function) 35 0% + prog1 26 0% + read-from-minibuffer 24 0% + find-file-noselect 19 0% + run-hooks 18 0% + condition-case 16 0% + cond 12 0% + view-file 8 0% + mapc 4 0% + list 4 0% + read-extended-command 4 0% + vc-mode-line 3 0% + line-move-visual 3 0% + file-truename 2 0% + vc-find-file-hook 2 0% + vc-backend 2 0% + after-find-file 2 0% + completing-read 2 0% + let* 1 0% + view-emacs-news 1 0% + find-file-noselect-1 1 0% + vc-call-backend 1 0% internal-timer-start-idle 1 0% + and 1 0% > Also, apply the patch I sent in > http://debbugs.gnu.org/cgi/bugreport.cgi?bug=14836#8 and post the > contents of *Messages* after leaning on C-n for some time in this > situation. I did this, started Emacs -Q again as above, switched the default font to Adobe Courier, and ran my recipe. *Message* consists of these lines: For information about GNU Emacs and the GNU system, type C-h C-a. bzr/emacs/quickfixes/lisp/simple.el: `with-wrapper-hook' is an obsolete macro (as of 24.4); use a <foo>-function variable modified by add-function. View mode: type C-h for help, h for commands, q to quit. followed by exactly 175 repetitions of these two lines (I used `M-x occur' to make sure they were all identical): vs 0 dlh 14 this nil rowh 13 rbot 1 py 0 vpos 32 last 31.0 2 and nothing else. > I also asked to try reducing the keyboard auto-repeat rate, and see if > that makes any difference. The default rate in my setup is 25 repeats/s. I lowered it to 15 and repeated the above experiment, and the problem again occurs, but starts later, around line 300. Then I lowered the repeat rate to 10, which is annoyingly slow, and here too the problem occurs, starting around line 500. Steve Berman ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#14838: 24.3.50; repeating next-line or previous-line is broken 2013-07-11 10:04 ` Stephen Berman @ 2013-07-11 15:59 ` Eli Zaretskii 2013-07-11 18:51 ` Stephen Berman 0 siblings, 1 reply; 13+ messages in thread From: Eli Zaretskii @ 2013-07-11 15:59 UTC (permalink / raw) To: Stephen Berman, Jan Djärv; +Cc: 14838 > From: Stephen Berman <stephen.berman@gmx.net> > Cc: 14838@debbugs.gnu.org > Date: Thu, 11 Jul 2013 12:04:07 +0200 > > Yes. First, I found out that the problems I observed do not happen when > I repeat exactly the above recipe after having removed my ~/.Xresources > file and logged in again. That file contains this: > > Emacs.FontBackend: xft > Emacs.Font: DejaVu Sans Mono-9 > > ! ---------[ xft ] --------- > Xft*antialias: true > Xft*autohint: true > > Without this, when I start Emacs with -Q, the font is still the one I > reported above, but now holding down C-n in NEWS works fine. I don't > understand why, since I thought -Q means no X resources are read. It should. Is inhibit-x-resources set when you invoke with -Q? Maybe the fact that X resources matter is a GTK thing? Just guessing. Jan, could you please comment on this? > When I start Emacs with my init file but without the .Xresources file, I > also don't observe the problem with C-n. In my initializations, I have > the font DejaVu Sans Mono-9 set as default in a custom theme loaded from > my init file (I've been using the .Xresources file since long before > creating the them, and didn't try removing till now). So without the > .Xresources file, I have no problem using C-n with this font, but with > the above .Xresources, the problem occurs with this font. FWIW, I tried such a font as well (but without anti-aliasing), and didn't see any problem. > I started Emacs like this: > > emacs -Q -l ~/bzr/emacs/quickfixes/lisp/simple.el > > switched the default font to Adobe Courier as described above and then > followed your instructions; here is the report: > > + call-interactively 6758 29% > + next-line 6059 26% > + if 5176 22% > + line-move 3875 16% > + command-execute 522 2% > Automatic GC 445 1% > + let 86 0% > + redisplay_internal (C function) 35 0% > + prog1 26 0% > + read-from-minibuffer 24 0% > + find-file-noselect 19 0% > + run-hooks 18 0% > + condition-case 16 0% > + cond 12 0% > + view-file 8 0% > + mapc 4 0% > + list 4 0% > + read-extended-command 4 0% > + vc-mode-line 3 0% > + line-move-visual 3 0% > + file-truename 2 0% > + vc-find-file-hook 2 0% > + vc-backend 2 0% > + after-find-file 2 0% > + completing-read 2 0% > + let* 1 0% > + view-emacs-news 1 0% > + find-file-noselect-1 1 0% > + vc-call-backend 1 0% > internal-timer-start-idle 1 0% > + and 1 0% What do you see if you completely expand the profile? Do you see line-move-partial anywhere in the profile? That's the only function where I made significant changes in the offending revisions, so if it's not high in the profile, I don't know what to think. > followed by exactly 175 repetitions of these two lines (I used `M-x > occur' to make sure they were all identical): > > vs 0 dlh 14 this nil rowh 13 rbot 1 py 0 vpos 32 last 31.0 > 2 > > and nothing else. The "py 0" part is very strange. "py" is the vertical coordinate of point in screen line units. Since this was with C-n, I expect py never to be less than half the screen height, which is 16. How come it is zero, i.e. point is in the first line? Can you step through line-move-partial in Edebug and see what is going on there? > > I also asked to try reducing the keyboard auto-repeat rate, and see if > > that makes any difference. > > The default rate in my setup is 25 repeats/s. I lowered it to 15 and > repeated the above experiment, and the problem again occurs, but starts > later, around line 300. Then I lowered the repeat rate to 10, which is > annoyingly slow, and here too the problem occurs, starting around line > 500. This is consistent with the high CPU load you see. But I'd be damned if I understand what is causing that CPU load, or why it happens with some fonts, but not others. Btw, do you have any local changes in your builds? ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#14838: 24.3.50; repeating next-line or previous-line is broken 2013-07-11 15:59 ` Eli Zaretskii @ 2013-07-11 18:51 ` Stephen Berman 2013-07-11 19:16 ` Eli Zaretskii 0 siblings, 1 reply; 13+ messages in thread From: Stephen Berman @ 2013-07-11 18:51 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 14838 On Thu, 11 Jul 2013 18:59:14 +0300 Eli Zaretskii <eliz@gnu.org> wrote: >> From: Stephen Berman <stephen.berman@gmx.net> >> Cc: 14838@debbugs.gnu.org >> Date: Thu, 11 Jul 2013 12:04:07 +0200 >> >> Yes. First, I found out that the problems I observed do not happen when >> I repeat exactly the above recipe after having removed my ~/.Xresources >> file and logged in again. That file contains this: >> >> Emacs.FontBackend: xft >> Emacs.Font: DejaVu Sans Mono-9 >> >> ! ---------[ xft ] --------- >> Xft*antialias: true >> Xft*autohint: true >> >> Without this, when I start Emacs with -Q, the font is still the one I >> reported above, but now holding down C-n in NEWS works fine. I don't >> understand why, since I thought -Q means no X resources are read. > > It should. Is inhibit-x-resources set when you invoke with -Q? Yes, its value is t. > Maybe the fact that X resources matter is a GTK thing? Just > guessing. Jan, could you please comment on this? > >> When I start Emacs with my init file but without the .Xresources file, I >> also don't observe the problem with C-n. In my initializations, I have >> the font DejaVu Sans Mono-9 set as default in a custom theme loaded from >> my init file (I've been using the .Xresources file since long before >> creating the them, and didn't try removing till now). So without the >> .Xresources file, I have no problem using C-n with this font, but with >> the above .Xresources, the problem occurs with this font. > > FWIW, I tried such a font as well (but without anti-aliasing), and > didn't see any problem. > >> I started Emacs like this: >> >> emacs -Q -l ~/bzr/emacs/quickfixes/lisp/simple.el >> >> switched the default font to Adobe Courier as described above and then >> followed your instructions; here is the report: >> >> + call-interactively 6758 29% >> + next-line 6059 26% >> + if 5176 22% >> + line-move 3875 16% >> + command-execute 522 2% >> Automatic GC 445 1% >> + let 86 0% >> + redisplay_internal (C function) 35 0% >> + prog1 26 0% >> + read-from-minibuffer 24 0% >> + find-file-noselect 19 0% >> + run-hooks 18 0% >> + condition-case 16 0% >> + cond 12 0% >> + view-file 8 0% >> + mapc 4 0% >> + list 4 0% >> + read-extended-command 4 0% >> + vc-mode-line 3 0% >> + line-move-visual 3 0% >> + file-truename 2 0% >> + vc-find-file-hook 2 0% >> + vc-backend 2 0% >> + after-find-file 2 0% >> + completing-read 2 0% >> + let* 1 0% >> + view-emacs-news 1 0% >> + find-file-noselect-1 1 0% >> + vc-call-backend 1 0% >> internal-timer-start-idle 1 0% >> + and 1 0% > > What do you see if you completely expand the profile? Do you see > line-move-partial anywhere in the profile? That's the only function > where I made significant changes in the offending revisions, so if > it's not high in the profile, I don't know what to think. Here are the top 200 lines of another profile (not identical to the one I posted previously, but similar), which account for 99% of the CPU time. Is this saying that 70% of CPU time is spent in line-move-partial (and 82% in aref)? - call-interactively 7225 30% - next-line 7225 30% - if 7225 30% - if 7225 30% - condition-case 7225 30% - line-move 7225 30% - if 7225 30% - if 7225 30% - if 5398 22% - prog1 5398 22% - let 5397 22% - default-line-height 5397 22% - let 5397 22% - default-font-height 5397 22% - cond 5397 22% aref 5396 22% display-multi-font 1 0% - line-move-visual 1 0% - let 1 0% - if 1 0% - let 1 0% - posn-at-point 1 0% eval 1 0% - and 1827 7% - line-move-partial 1827 7% - if 1827 7% - let* 1827 7% - if 1801 7% - progn 1801 7% - if 1799 7% let 1795 7% if 3 0% and 1 0% - setq 2 0% or 2 0% - default-line-height 21 0% - let 21 0% - if 21 0% or 20 0% display-graphic-p 1 0% - window-screen-lines 5 0% - let 5 0% - default-line-height 3 0% let 3 0% - / 2 0% * 2 0% - next-line 6340 26% - if 6340 26% - if 6340 26% - condition-case 6340 26% - line-move 6340 26% - if 6340 26% - if 6340 26% - and 6247 25% - line-move-partial 6247 25% - if 6247 25% - let* 6247 25% - default-line-height 5351 22% - let 5351 22% - default-font-height 5350 22% - cond 5350 22% aref 5348 22% display-multi-font 2 0% - if 1 0% - display-graphic-p 1 0% framep-on-display 1 0% - if 891 3% - progn 891 3% - setq 888 3% - or 888 3% let 888 3% - if 3 0% - let 3 0% setq 2 0% pos-visible-in-win 1 0% - window-screen-lines 5 0% - let 5 0% - default-line-height 5 0% - let 5 0% if 4 0% default-font-heigh 1 0% - if 93 0% - prog1 93 0% - line-move-visual 89 0% - let 89 0% - or 89 0% - and 89 0% - or 89 0% - and 89 0% >= 89 0% - let 4 0% - default-line-height 4 0% - let 4 0% - default-font-height 4 0% - cond 4 0% - aref 2 0% font-info 2 0% - display-multi-font-p 2 0% framep-on-display 2 0% - if 5387 22% - condition-case 5344 22% - line-move 5344 22% - if 5344 22% - if 5344 22% - and 5342 22% - line-move-partial 5342 22% - if 5342 22% - let* 5342 22% - window-screen-lines 5311 22% - let 5311 22% - default-line-height 5311 22% - let 5311 22% - default-font-height 5311 22% - cond 5311 22% aref 5310 22% display-multi-font 1 0% - if 31 0% - progn 31 0% - if 23 0% - let 23 0% - pos-visible-in-window- 23 0% - eval 23 0% if 21 0% unless 1 0% mode-line-eol-desc 1 0% - setq 6 0% - or 6 0% - let 6 0% - posn-at-point 4 0% eval 3 0% file-remote-p 1 0% - if 2 0% cdr 2 0% - cond 2 0% - and 2 0% - or 2 0% - < 2 0% setq 2 0% - if 2 0% - prog1 2 0% - line-move-visual 2 0% - let 2 0% - or 2 0% - and 2 0% - or 2 0% - and 2 0% - >= 2 0% - vertical-motion 2 0% jit-lock-function 2 0% - if 43 0% - condition-case 43 0% - line-move 43 0% - if 43 0% - if 43 0% - and 43 0% - line-move-partial 43 0% - if 43 0% - let* 43 0% - window-screen-lines 22 0% - let 22 0% - default-line-height 22 0% - let 22 0% - if 21 0% or 20 0% display-graphic-p 1 0% - default-font-height 1 0% cond 1 0% - if 15 0% - progn 15 0% - if 9 0% - let 9 0% - pos-visible-in-windo 9 0% file-remote-p 6 0% eval 3 0% - setq 6 0% - or 6 0% - let 6 0% posn-at-point 5 0% setq 1 0% - default-line-height 6 0% - let 6 0% - default-font-height 6 0% - cond 6 0% - aref 6 0% font-info 6 0% - line-move 4084 16% - if 4084 16% - if 4084 16% - and 4084 16% - line-move-partial 4084 16% - if 4084 16% - let* 4084 16% - if 4084 16% - progn 4084 16% - if 4084 16% - if 4083 16% - and 4083 16% - >= 4083 16% - default-font-height 4083 16% - cond 4083 16% aref 4083 16% >> followed by exactly 175 repetitions of these two lines (I used `M-x >> occur' to make sure they were all identical): >> >> vs 0 dlh 14 this nil rowh 13 rbot 1 py 0 vpos 32 last 31.0 >> 2 >> >> and nothing else. > > The "py 0" part is very strange. "py" is the vertical coordinate of > point in screen line units. Since this was with C-n, I expect py > never to be less than half the screen height, which is 16. How come > it is zero, i.e. point is in the first line? Can you step through > line-move-partial in Edebug and see what is going on there? If I instrument line-move-partial and type `C-n', I see py = 0 on the first line and it increases by 1 on each subsequent line. I have no idea why *Messages* only showed a value of 0 for py; could it be that the messages were overwritten when the CPU load hit 90%? Is it possible to make Edebug break execution only when that load level occurs? >> > I also asked to try reducing the keyboard auto-repeat rate, and see if >> > that makes any difference. >> >> The default rate in my setup is 25 repeats/s. I lowered it to 15 and >> repeated the above experiment, and the problem again occurs, but starts >> later, around line 300. Then I lowered the repeat rate to 10, which is >> annoyingly slow, and here too the problem occurs, starting around line >> 500. > > This is consistent with the high CPU load you see. But I'd be damned > if I understand what is causing that CPU load, or why it happens with > some fonts, but not others. > > Btw, do you have any local changes in your builds? The builds I tested for my OP were from a branch that mirrors trunk, plus or minus the changes to simple.el from before and after revision 113314; the only changes in the build used for profiling are those you added to simple.el from 113360 to get the messages. Steve Berman ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#14838: 24.3.50; repeating next-line or previous-line is broken 2013-07-11 18:51 ` Stephen Berman @ 2013-07-11 19:16 ` Eli Zaretskii 2013-07-11 20:04 ` Stephen Berman 0 siblings, 1 reply; 13+ messages in thread From: Eli Zaretskii @ 2013-07-11 19:16 UTC (permalink / raw) To: Stephen Berman; +Cc: 14838 > From: Stephen Berman <stephen.berman@gmx.net> > Cc: Jan Djärv <jan.h.d@swipnet.se>, 14838@debbugs.gnu.org > Date: Thu, 11 Jul 2013 20:51:42 +0200 > > Here are the top 200 lines of another profile (not identical to the one > I posted previously, but similar), which account for 99% of the CPU > time. Is this saying that 70% of CPU time is spent in line-move-partial > (and 82% in aref)? I don't believe the aref part. I think the real culprit is font-info. Let's conduct an experiment: if you modify default-font-height so that it always just calls frame-char-height, does the problem go away? > >> vs 0 dlh 14 this nil rowh 13 rbot 1 py 0 vpos 32 last 31.0 > >> 2 > >> > >> and nothing else. > > > > The "py 0" part is very strange. "py" is the vertical coordinate of > > point in screen line units. Since this was with C-n, I expect py > > never to be less than half the screen height, which is 16. How come > > it is zero, i.e. point is in the first line? Can you step through > > line-move-partial in Edebug and see what is going on there? > > If I instrument line-move-partial and type `C-n', I see py = 0 on the > first line and it increases by 1 on each subsequent line. I have no > idea why *Messages* only showed a value of 0 for py; could it be that > the messages were overwritten when the CPU load hit 90%? Could be, since the messages are produced as part of redisplay. Can you show the trace messages from when the CPU is not yet 100% busy, and Emacs can still keep up with scrolling? ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#14838: 24.3.50; repeating next-line or previous-line is broken 2013-07-11 19:16 ` Eli Zaretskii @ 2013-07-11 20:04 ` Stephen Berman 2013-07-11 20:25 ` Eli Zaretskii 0 siblings, 1 reply; 13+ messages in thread From: Stephen Berman @ 2013-07-11 20:04 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 14838 On Thu, 11 Jul 2013 22:16:00 +0300 Eli Zaretskii <eliz@gnu.org> wrote: >> From: Stephen Berman <stephen.berman@gmx.net> >> Cc: Jan Djärv <jan.h.d@swipnet.se>, 14838@debbugs.gnu.org >> Date: Thu, 11 Jul 2013 20:51:42 +0200 >> >> Here are the top 200 lines of another profile (not identical to the one >> I posted previously, but similar), which account for 99% of the CPU >> time. Is this saying that 70% of CPU time is spent in line-move-partial >> (and 82% in aref)? > > I don't believe the aref part. I think the real culprit is font-info. > Let's conduct an experiment: if you modify default-font-height so that > it always just calls frame-char-height, does the problem go away? Yep, that it does. And no trace messages are emitted. So it seems some fonts are sensitive to this distinction and others aren't. What is the crucial difference? >> >> vs 0 dlh 14 this nil rowh 13 rbot 1 py 0 vpos 32 last 31.0 >> >> 2 >> >> >> >> and nothing else. >> > >> > The "py 0" part is very strange. "py" is the vertical coordinate of >> > point in screen line units. Since this was with C-n, I expect py >> > never to be less than half the screen height, which is 16. How come >> > it is zero, i.e. point is in the first line? Can you step through >> > line-move-partial in Edebug and see what is going on there? >> >> If I instrument line-move-partial and type `C-n', I see py = 0 on the >> first line and it increases by 1 on each subsequent line. I have no >> idea why *Messages* only showed a value of 0 for py; could it be that >> the messages were overwritten when the CPU load hit 90%? > > Could be, since the messages are produced as part of redisplay. > > Can you show the trace messages from when the CPU is not yet 100% > busy, and Emacs can still keep up with scrolling? There are no trace messages while scrolling is normal; only after redisplay stops (with >90% CPU load) and then recovers do the messages appear, and they are all as above, with py=0. I verified this by adding a counter to the messages, and the first message emitted, with count=1, shows py=0, as do all subsequent (none are overwritten). Steve Berman ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#14838: 24.3.50; repeating next-line or previous-line is broken 2013-07-11 20:04 ` Stephen Berman @ 2013-07-11 20:25 ` Eli Zaretskii 2013-07-12 9:48 ` Eli Zaretskii 0 siblings, 1 reply; 13+ messages in thread From: Eli Zaretskii @ 2013-07-11 20:25 UTC (permalink / raw) To: Stephen Berman; +Cc: 14838 > From: Stephen Berman <stephen.berman@gmx.net> > Cc: jan.h.d@swipnet.se, 14838@debbugs.gnu.org > Date: Thu, 11 Jul 2013 22:04:07 +0200 > > > I don't believe the aref part. I think the real culprit is font-info. > > Let's conduct an experiment: if you modify default-font-height so that > > it always just calls frame-char-height, does the problem go away? > > Yep, that it does. And no trace messages are emitted. Thanks, I will come up with a change that will refrain from calling font-info unless it's strictly necessary. > So it seems some fonts are sensitive to this distinction and others > aren't. What is the crucial difference? Not sure, but I saw that the implementation of font-info actually opens the font file, so there's probably some non-trivial processing involved in that. And likewise for font-face -- it calls the font back-end. > There are no trace messages while scrolling is normal; only after > redisplay stops (with >90% CPU load) and then recovers do the messages > appear, and they are all as above, with py=0. Ah, OK, now everything is clear. ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#14838: 24.3.50; repeating next-line or previous-line is broken 2013-07-11 20:25 ` Eli Zaretskii @ 2013-07-12 9:48 ` Eli Zaretskii 2013-07-12 10:19 ` Stephen Berman 0 siblings, 1 reply; 13+ messages in thread From: Eli Zaretskii @ 2013-07-12 9:48 UTC (permalink / raw) To: Stefan Monnier; +Cc: 14838, stephen.berman > Date: Thu, 11 Jul 2013 23:25:05 +0300 > From: Eli Zaretskii <eliz@gnu.org> > Cc: 14838@debbugs.gnu.org > > > From: Stephen Berman <stephen.berman@gmx.net> > > Cc: jan.h.d@swipnet.se, 14838@debbugs.gnu.org > > Date: Thu, 11 Jul 2013 22:04:07 +0200 > > > > > I don't believe the aref part. I think the real culprit is font-info. > > > Let's conduct an experiment: if you modify default-font-height so that > > > it always just calls frame-char-height, does the problem go away? > > > > Yep, that it does. And no trace messages are emitted. > > Thanks, I will come up with a change that will refrain from calling > font-info unless it's strictly necessary. I'm unsure what test(s) to use to detect reliably the situation where the font of the default face is different from the frame's default. The two candidates I thought about are: . See if face-remapping-alist is non-nil and includes an association for the 'default' face . Compare (frame-parameter 'font) with (face-font 'default) Regarding the 1st candidate, I'm not sure the condition will always hold whenever the font of the default face was modified in some way. Regarding the 2nd candidate, I'm not sure (frame-parameter 'font) will always return a non-trivial value. Can it return nil, for example? Any other suggestions? Stephen, can you test both of the above in your case? Thanks. ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#14838: 24.3.50; repeating next-line or previous-line is broken 2013-07-12 9:48 ` Eli Zaretskii @ 2013-07-12 10:19 ` Stephen Berman 2013-07-12 10:35 ` Eli Zaretskii 2013-07-13 7:29 ` Eli Zaretskii 0 siblings, 2 replies; 13+ messages in thread From: Stephen Berman @ 2013-07-12 10:19 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 14838 On Fri, 12 Jul 2013 12:48:41 +0300 Eli Zaretskii <eliz@gnu.org> wrote: >> Date: Thu, 11 Jul 2013 23:25:05 +0300 >> From: Eli Zaretskii <eliz@gnu.org> >> Cc: 14838@debbugs.gnu.org >> >> > From: Stephen Berman <stephen.berman@gmx.net> >> > Cc: jan.h.d@swipnet.se, 14838@debbugs.gnu.org >> > Date: Thu, 11 Jul 2013 22:04:07 +0200 >> > >> > > I don't believe the aref part. I think the real culprit is font-info. >> > > Let's conduct an experiment: if you modify default-font-height so that >> > > it always just calls frame-char-height, does the problem go away? >> > >> > Yep, that it does. And no trace messages are emitted. >> >> Thanks, I will come up with a change that will refrain from calling >> font-info unless it's strictly necessary. > > I'm unsure what test(s) to use to detect reliably the situation where > the font of the default face is different from the frame's default. > The two candidates I thought about are: > > . See if face-remapping-alist is non-nil and includes an association > for the 'default' face > > . Compare > > (frame-parameter 'font) > > with > > (face-font 'default) > > Regarding the 1st candidate, I'm not sure the condition will always > hold whenever the font of the default face was modified in some way. > > Regarding the 2nd candidate, I'm not sure (frame-parameter 'font) will > always return a non-trivial value. Can it return nil, for example? > > Any other suggestions? > > Stephen, can you test both of the above in your case? With emacs -Q, where the problem with holding down C-n does not happen (when I have no ~/.Xresources file): face-remapping-alist => nil (frame-parameter nil 'font) => "-unknown-DejaVu Sans Mono-normal-normal-normal-*-15-*-*-*-m-0-iso10646-1" (face-font 'default) => "-unknown-DejaVu Sans Mono-normal-normal-normal-*-15-*-*-*-m-0-iso10646-1" and after setting the default font to one that does cause the problem: face-remapping-alist => nil (frame-parameter nil 'font) => "-Adobe-Adobe Courier-normal-normal-normal-*-14-*-*-*-m-90-iso10646-1" (face-font 'default) => "-Adobe-Adobe Courier-normal-normal-normal-*-14-*-*-*-m-90-iso10646-1" I guess that's not very helpful :-( Steve Berman ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#14838: 24.3.50; repeating next-line or previous-line is broken 2013-07-12 10:19 ` Stephen Berman @ 2013-07-12 10:35 ` Eli Zaretskii 2013-07-13 7:29 ` Eli Zaretskii 1 sibling, 0 replies; 13+ messages in thread From: Eli Zaretskii @ 2013-07-12 10:35 UTC (permalink / raw) To: Stephen Berman; +Cc: 14838 > From: Stephen Berman <stephen.berman@gmx.net> > Cc: Stefan Monnier <monnier@iro.umontreal.ca>, 14838@debbugs.gnu.org > Date: Fri, 12 Jul 2013 12:19:44 +0200 > > With emacs -Q, where the problem with holding down C-n does not happen > (when I have no ~/.Xresources file): > > face-remapping-alist => nil > (frame-parameter nil 'font) => > "-unknown-DejaVu Sans Mono-normal-normal-normal-*-15-*-*-*-m-0-iso10646-1" > (face-font 'default) => > "-unknown-DejaVu Sans Mono-normal-normal-normal-*-15-*-*-*-m-0-iso10646-1" > > and after setting the default font to one that does cause the problem: > > face-remapping-alist => nil > (frame-parameter nil 'font) => > "-Adobe-Adobe Courier-normal-normal-normal-*-14-*-*-*-m-90-iso10646-1" > (face-font 'default) => > "-Adobe-Adobe Courier-normal-normal-normal-*-14-*-*-*-m-90-iso10646-1" > > I guess that's not very helpful :-( No, it actually is very helpful. Thanks. ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#14838: 24.3.50; repeating next-line or previous-line is broken 2013-07-12 10:19 ` Stephen Berman 2013-07-12 10:35 ` Eli Zaretskii @ 2013-07-13 7:29 ` Eli Zaretskii 2013-07-13 13:15 ` Stephen Berman 1 sibling, 1 reply; 13+ messages in thread From: Eli Zaretskii @ 2013-07-13 7:29 UTC (permalink / raw) To: Stephen Berman; +Cc: 14838 > From: Stephen Berman <stephen.berman@gmx.net> > Cc: Stefan Monnier <monnier@iro.umontreal.ca>, 14838@debbugs.gnu.org > Date: Fri, 12 Jul 2013 12:19:44 +0200 > > With emacs -Q, where the problem with holding down C-n does not happen > (when I have no ~/.Xresources file): > > face-remapping-alist => nil > (frame-parameter nil 'font) => > "-unknown-DejaVu Sans Mono-normal-normal-normal-*-15-*-*-*-m-0-iso10646-1" > (face-font 'default) => > "-unknown-DejaVu Sans Mono-normal-normal-normal-*-15-*-*-*-m-0-iso10646-1" > > and after setting the default font to one that does cause the problem: > > face-remapping-alist => nil > (frame-parameter nil 'font) => > "-Adobe-Adobe Courier-normal-normal-normal-*-14-*-*-*-m-90-iso10646-1" > (face-font 'default) => > "-Adobe-Adobe Courier-normal-normal-normal-*-14-*-*-*-m-90-iso10646-1" Please try trunk revision 113410 or later. If the problem with slow scrolling is not solved by it, please tell what did I do wrong in default-font-height. It is supposed not to call font-info in your case. Thanks. ^ permalink raw reply [flat|nested] 13+ messages in thread
* bug#14838: 24.3.50; repeating next-line or previous-line is broken 2013-07-13 7:29 ` Eli Zaretskii @ 2013-07-13 13:15 ` Stephen Berman 0 siblings, 0 replies; 13+ messages in thread From: Stephen Berman @ 2013-07-13 13:15 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 14838-done On Sat, 13 Jul 2013 10:29:55 +0300 Eli Zaretskii <eliz@gnu.org> wrote: >> From: Stephen Berman <stephen.berman@gmx.net> >> Cc: Stefan Monnier <monnier@iro.umontreal.ca>, 14838@debbugs.gnu.org >> Date: Fri, 12 Jul 2013 12:19:44 +0200 >> >> With emacs -Q, where the problem with holding down C-n does not happen >> (when I have no ~/.Xresources file): >> >> face-remapping-alist => nil >> (frame-parameter nil 'font) => >> "-unknown-DejaVu Sans Mono-normal-normal-normal-*-15-*-*-*-m-0-iso10646-1" >> (face-font 'default) => >> "-unknown-DejaVu Sans Mono-normal-normal-normal-*-15-*-*-*-m-0-iso10646-1" >> >> and after setting the default font to one that does cause the problem: >> >> face-remapping-alist => nil >> (frame-parameter nil 'font) => >> "-Adobe-Adobe Courier-normal-normal-normal-*-14-*-*-*-m-90-iso10646-1" >> (face-font 'default) => >> "-Adobe-Adobe Courier-normal-normal-normal-*-14-*-*-*-m-90-iso10646-1" > > Please try trunk revision 113410 or later. If the problem with slow > scrolling is not solved by it, please tell what did I do wrong in > default-font-height. It is supposed not to call font-info in your > case. With that revision the problem is now solved, so I'm closing the bug. FWIW, I don't see it with the ~/.Xresources file now, either (though it remains a mystery why that was apparently also triggering the problem, but one not worth keeping this bug open for). Thanks very much for fixing this. Steve Berman ^ permalink raw reply [flat|nested] 13+ messages in thread
end of thread, other threads:[~2013-07-13 13:15 UTC | newest] Thread overview: 13+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2013-07-10 21:29 bug#14838: 24.3.50; repeating next-line or previous-line is broken Stephen Berman 2013-07-11 2:51 ` Eli Zaretskii 2013-07-11 10:04 ` Stephen Berman 2013-07-11 15:59 ` Eli Zaretskii 2013-07-11 18:51 ` Stephen Berman 2013-07-11 19:16 ` Eli Zaretskii 2013-07-11 20:04 ` Stephen Berman 2013-07-11 20:25 ` Eli Zaretskii 2013-07-12 9:48 ` Eli Zaretskii 2013-07-12 10:19 ` Stephen Berman 2013-07-12 10:35 ` Eli Zaretskii 2013-07-13 7:29 ` Eli Zaretskii 2013-07-13 13:15 ` Stephen Berman
Code repositories for project(s) associated with this external index https://git.savannah.gnu.org/cgit/emacs.git https://git.savannah.gnu.org/cgit/emacs/org-mode.git This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.