unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#20808: 24.5; Emacs looping with 100% CPU at line 15287 (?) of xdisp.c
@ 2015-06-14  4:15 N. Jackson
  2015-06-14 14:08 ` Eli Zaretskii
  0 siblings, 1 reply; 12+ messages in thread
From: N. Jackson @ 2015-06-14  4:15 UTC (permalink / raw)
  To: 20808


I have Emacs stuck in a loop and running at 100% CPU. GDB is attached.

    (gdb) bt
    #0  0x0000000000462063 in redisplay_window (window=18301693, just_this_one_p=just_this_one_p@entry=true) at ../../src/xdisp.c:15286
    #1  0x0000000000463a36 in redisplay_window_1 (window=window@entry=18301693) at ../../src/xdisp.c:14381
    #2  0x000000000055a58b in internal_condition_case_1 (bfun=0x463a00 <redisplay_window_1>, arg=18301693, handlers=<optimized out>, hfun=0x42bac0 <redisplay_window_error>) at ../../src/eval.c:1372
    #3  0x0000000000453aa1 in redisplay_internal () at ../../src/xdisp.c:14024
    #4  0x0000000000454455 in redisplay () at ../../src/xdisp.c:13229
    #5  0x00000000004f44a1 in read_char (commandflag=1, map=map@entry=93744966, prev_event=12311602, used_mouse_menu=used_mouse_menu@entry=0x7ffc481ee12b, end_time=end_time@entry=0x0) at ../../src/keyboard.c:2571
    #6  0x00000000004f5c1f in read_key_sequence (keybuf=keybuf@entry=0x7ffc481ee200, prompt=12311602, dont_downcase_last=dont_downcase_last@entry=false, can_return_switch_frame=can_return_switch_frame@entry=true, fix_current_buffer=fix_current_buffer@entry=true, prevent_redisplay=prevent_redisplay@entry=false, bufsize=30)
        at ../../src/keyboard.c:9089
    #7  0x00000000004f7990 in command_loop_1 () at ../../src/keyboard.c:1453
    #8  0x000000000055a467 in internal_condition_case (bfun=bfun@entry=0x4f7790 <command_loop_1>, handlers=<optimized out>, hfun=hfun@entry=0x4ee950 <cmd_error>)
        at ../../src/eval.c:1348
    #9  0x00000000004e9f6e in command_loop_2 (ignore=ignore@entry=12311602) at ../../src/keyboard.c:1178
    #10 0x000000000055a34b in internal_catch (tag=12359074, func=func@entry=0x4e9f50 <command_loop_2>, arg=12311602) at ../../src/eval.c:1112
    #11 0x00000000004ee567 in recursive_edit_1 () at ../../src/keyboard.c:1157
    #12 0x00000000004ee567 in recursive_edit_1 () at ../../src/keyboard.c:778
    #13 0x00000000004ee880 in Frecursive_edit () at ../../src/keyboard.c:849
    #14 0x0000000000418079 in main (argc=<optimized out>, argv=0x7ffc481ee568) at ../../src/emacs.c:1642

I can step through the code without difficulty:

    (gdb) step
    bidi_shelve_cache () at ../../src/bidi.c:846
    846       if (bidi_cache_idx == 0)

But trying to step out with `finish', leaves me looping again trying to
exit from #0:

    (gdb) finish
    Run till exit from #0  bidi_shelve_cache () at ../../src/bidi.c:846
    redisplay_window (window=18301693, just_this_one_p=just_this_one_p@entry=true) at ../../src/xdisp.c:15287
    15287             } while (line_bottom_y (&it1) - start_y < amount_to_scroll);
    Value returned is $1 = (void *) 0x0
    (gdb) finish
    Run till exit from #0  redisplay_window (window=18301693, just_this_one_p=just_this_one_p@entry=true) at ../../src/xdisp.c:15287
    ^C
    Program received signal SIGINT, Interrupt.
    0x0000000000462063 in redisplay_window (window=18301693, just_this_one_p=just_this_one_p@entry=true) at ../../src/xdisp.c:15286
    15286               SAVE_IT (it1, it, it1data);
    (gdb)

What should I do next? Can any information still be gleaned from this?
(This is not with my own build but the optimised one from Fedora 21.)

Thanks.

===

In GNU Emacs 24.5.1 (x86_64-redhat-linux-gnu, GTK+ Version 3.14.12)
 of 2015-05-07 on buildvm-08.phx2.fedoraproject.org
Windowing system distributor `Fedora Project', version 11.0.11603000
System Description:	Fedora release 21 (Twenty One)

Configured using:
 `configure --build=x86_64-redhat-linux-gnu
 --host=x86_64-redhat-linux-gnu --program-prefix=
 --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr
 --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc
 --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64
 --libexecdir=/usr/libexec --localstatedir=/var
 --sharedstatedir=/var/lib --mandir=/usr/share/man
 --infodir=/usr/share/info --with-dbus --with-gif --with-jpeg --with-png
 --with-rsvg --with-tiff --with-xft --with-xpm --with-x-toolkit=gtk3
 --with-gpm=no build_alias=x86_64-redhat-linux-gnu
 host_alias=x86_64-redhat-linux-gnu 'CFLAGS=-DMAIL_USE_LOCKF -O2 -g
 -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2
 -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4
 -grecord-gcc-switches -m64 -mtune=generic' 'LDFLAGS=-Wl,-z,relro ''

Important settings:
  value of $LC_MONETARY: en_DK.utf8
  value of $LC_NUMERIC: en_DK.utf8
  value of $LC_TIME: en_DK.utf8
  value of $LANG: en_CA.utf8
  value of $XMODIFIERS: @im=ibus
  locale-coding-system: utf-8-unix

Major mode: Group

Minor modes in effect:
  gnus-undo-mode: t
  recentf-mode: t
  display-battery-mode: t
  display-time-mode: t
  delete-selection-mode: t
  show-paren-mode: t
  savehist-mode: t
  iswitchb-mode: t
  electric-pair-mode: t
  desktop-save-mode: t
  cua-mode: t
  tooltip-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  menu-bar-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  blink-cursor-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  buffer-read-only: t
  size-indication-mode: t
  column-number-mode: t
  line-number-mode: t
  global-visual-line-mode: t
  visual-line-mode: t
  transient-mark-mode: t

Recent messages:
Opening nntp server on nntp.aioe.org...done
Opening nntp server on news.gmane.org...done
Opening nnimap server on Local Dovecot Mailstore...
Opening connection to localhost via tls...
Opening connection to localhost...done
Opening nnimap server on Local Dovecot Mailstore...done
7 new newsgroups have arrived
Checking new news...
Reading active file from archive via nnfolder...done
Checking new news...done

Load-path shadows:
/usr/share/emacs/site-lisp/site-start.d/maxima-modes hides /usr/share/emacs/site-lisp/maxima/site_start.d/maxima-modes
/home/nlj/.emacs.d/elpa/org-20150511/ob-ref hides /usr/share/emacs/24.5/lisp/org/ob-ref
/home/nlj/.emacs.d/elpa/org-20150511/ob-dot hides /usr/share/emacs/24.5/lisp/org/ob-dot
/home/nlj/.emacs.d/elpa/org-20150511/ob-octave hides /usr/share/emacs/24.5/lisp/org/ob-octave
/home/nlj/.emacs.d/elpa/org-20150511/ob-maxima hides /usr/share/emacs/24.5/lisp/org/ob-maxima
/home/nlj/.emacs.d/elpa/org-20150511/ob-scala hides /usr/share/emacs/24.5/lisp/org/ob-scala
/home/nlj/.emacs.d/elpa/org-20150511/org-plot hides /usr/share/emacs/24.5/lisp/org/org-plot
/home/nlj/.emacs.d/elpa/org-20150511/ob-org hides /usr/share/emacs/24.5/lisp/org/ob-org
/home/nlj/.emacs.d/elpa/org-20150511/ob-haskell hides /usr/share/emacs/24.5/lisp/org/ob-haskell
/home/nlj/.emacs.d/elpa/org-20150511/org-indent hides /usr/share/emacs/24.5/lisp/org/org-indent
/home/nlj/.emacs.d/elpa/org-20150511/org-habit hides /usr/share/emacs/24.5/lisp/org/org-habit
/home/nlj/.emacs.d/elpa/org-20150511/org-datetree hides /usr/share/emacs/24.5/lisp/org/org-datetree
/home/nlj/.emacs.d/elpa/org-20150511/ob-lob hides /usr/share/emacs/24.5/lisp/org/ob-lob
/home/nlj/.emacs.d/elpa/org-20150511/org-list hides /usr/share/emacs/24.5/lisp/org/org-list
/home/nlj/.emacs.d/elpa/org-20150511/ob-ruby hides /usr/share/emacs/24.5/lisp/org/ob-ruby
/home/nlj/.emacs.d/elpa/org-20150511/ob-R hides /usr/share/emacs/24.5/lisp/org/ob-R
/home/nlj/.emacs.d/elpa/org-20150511/ob-awk hides /usr/share/emacs/24.5/lisp/org/ob-awk
/home/nlj/.emacs.d/elpa/org-20150511/ob-sqlite hides /usr/share/emacs/24.5/lisp/org/ob-sqlite
/home/nlj/.emacs.d/elpa/org-20150511/ob-makefile hides /usr/share/emacs/24.5/lisp/org/ob-makefile
/home/nlj/.emacs.d/elpa/org-20150511/org-capture hides /usr/share/emacs/24.5/lisp/org/org-capture
/home/nlj/.emacs.d/elpa/org-20150511/org-archive hides /usr/share/emacs/24.5/lisp/org/org-archive
/home/nlj/.emacs.d/elpa/org-20150511/ob-python hides /usr/share/emacs/24.5/lisp/org/ob-python
/home/nlj/.emacs.d/elpa/org-20150511/ob-js hides /usr/share/emacs/24.5/lisp/org/ob-js
/home/nlj/.emacs.d/elpa/org-20150511/ox-md hides /usr/share/emacs/24.5/lisp/org/ox-md
/home/nlj/.emacs.d/elpa/org-20150511/org-table hides /usr/share/emacs/24.5/lisp/org/org-table
/home/nlj/.emacs.d/elpa/org-20150511/org-install hides /usr/share/emacs/24.5/lisp/org/org-install
/home/nlj/.emacs.d/elpa/org-20150511/ox-latex hides /usr/share/emacs/24.5/lisp/org/ox-latex
/home/nlj/.emacs.d/elpa/org-20150511/org-docview hides /usr/share/emacs/24.5/lisp/org/org-docview
/home/nlj/.emacs.d/elpa/org-20150511/ox-ascii hides /usr/share/emacs/24.5/lisp/org/ox-ascii
/home/nlj/.emacs.d/elpa/org-20150511/org-mhe hides /usr/share/emacs/24.5/lisp/org/org-mhe
/home/nlj/.emacs.d/elpa/org-20150511/org-crypt hides /usr/share/emacs/24.5/lisp/org/org-crypt
/home/nlj/.emacs.d/elpa/org-20150511/org-macro hides /usr/share/emacs/24.5/lisp/org/org-macro
/home/nlj/.emacs.d/elpa/org-20150511/ox-odt hides /usr/share/emacs/24.5/lisp/org/ox-odt
/home/nlj/.emacs.d/elpa/org-20150511/org-eshell hides /usr/share/emacs/24.5/lisp/org/org-eshell
/home/nlj/.emacs.d/elpa/org-20150511/ob-fortran hides /usr/share/emacs/24.5/lisp/org/ob-fortran
/home/nlj/.emacs.d/elpa/org-20150511/org-entities hides /usr/share/emacs/24.5/lisp/org/org-entities
/home/nlj/.emacs.d/elpa/org-20150511/ob-picolisp hides /usr/share/emacs/24.5/lisp/org/ob-picolisp
/home/nlj/.emacs.d/elpa/org-20150511/org-feed hides /usr/share/emacs/24.5/lisp/org/org-feed
/home/nlj/.emacs.d/elpa/org-20150511/ox hides /usr/share/emacs/24.5/lisp/org/ox
/home/nlj/.emacs.d/elpa/org-20150511/org-id hides /usr/share/emacs/24.5/lisp/org/org-id
/home/nlj/.emacs.d/elpa/org-20150511/ob-clojure hides /usr/share/emacs/24.5/lisp/org/ob-clojure
/home/nlj/.emacs.d/elpa/org-20150511/org-macs hides /usr/share/emacs/24.5/lisp/org/org-macs
/home/nlj/.emacs.d/elpa/org-20150511/ob-table hides /usr/share/emacs/24.5/lisp/org/ob-table
/home/nlj/.emacs.d/elpa/org-20150511/org-pcomplete hides /usr/share/emacs/24.5/lisp/org/org-pcomplete
/home/nlj/.emacs.d/elpa/org-20150511/ox-publish hides /usr/share/emacs/24.5/lisp/org/ox-publish
/home/nlj/.emacs.d/elpa/org-20150511/ob-scheme hides /usr/share/emacs/24.5/lisp/org/ob-scheme
/home/nlj/.emacs.d/elpa/org-20150511/ob-keys hides /usr/share/emacs/24.5/lisp/org/ob-keys
/home/nlj/.emacs.d/elpa/org-20150511/ob-io hides /usr/share/emacs/24.5/lisp/org/ob-io
/home/nlj/.emacs.d/elpa/org-20150511/ox-texinfo hides /usr/share/emacs/24.5/lisp/org/ox-texinfo
/home/nlj/.emacs.d/elpa/org-20150511/org-bibtex hides /usr/share/emacs/24.5/lisp/org/org-bibtex
/home/nlj/.emacs.d/elpa/org-20150511/org-protocol hides /usr/share/emacs/24.5/lisp/org/org-protocol
/home/nlj/.emacs.d/elpa/org-20150511/ob-mscgen hides /usr/share/emacs/24.5/lisp/org/ob-mscgen
/home/nlj/.emacs.d/elpa/org-20150511/org-irc hides /usr/share/emacs/24.5/lisp/org/org-irc
/home/nlj/.emacs.d/elpa/org-20150511/org-faces hides /usr/share/emacs/24.5/lisp/org/org-faces
/home/nlj/.emacs.d/elpa/org-20150511/ob-lilypond hides /usr/share/emacs/24.5/lisp/org/ob-lilypond
/home/nlj/.emacs.d/elpa/org-20150511/org-w3m hides /usr/share/emacs/24.5/lisp/org/org-w3m
/home/nlj/.emacs.d/elpa/org-20150511/ob-ditaa hides /usr/share/emacs/24.5/lisp/org/ob-ditaa
/home/nlj/.emacs.d/elpa/org-20150511/ob-comint hides /usr/share/emacs/24.5/lisp/org/ob-comint
/home/nlj/.emacs.d/elpa/org-20150511/ob-css hides /usr/share/emacs/24.5/lisp/org/ob-css
/home/nlj/.emacs.d/elpa/org-20150511/org hides /usr/share/emacs/24.5/lisp/org/org
/home/nlj/.emacs.d/elpa/org-20150511/org-src hides /usr/share/emacs/24.5/lisp/org/org-src
/home/nlj/.emacs.d/elpa/org-20150511/ob-eval hides /usr/share/emacs/24.5/lisp/org/ob-eval
/home/nlj/.emacs.d/elpa/org-20150511/ob-gnuplot hides /usr/share/emacs/24.5/lisp/org/ob-gnuplot
/home/nlj/.emacs.d/elpa/org-20150511/ox-man hides /usr/share/emacs/24.5/lisp/org/ox-man
/home/nlj/.emacs.d/elpa/org-20150511/org-version hides /usr/share/emacs/24.5/lisp/org/org-version
/home/nlj/.emacs.d/elpa/org-20150511/org-mobile hides /usr/share/emacs/24.5/lisp/org/org-mobile
/home/nlj/.emacs.d/elpa/org-20150511/ob-emacs-lisp hides /usr/share/emacs/24.5/lisp/org/ob-emacs-lisp
/home/nlj/.emacs.d/elpa/org-20150511/ob-perl hides /usr/share/emacs/24.5/lisp/org/ob-perl
/home/nlj/.emacs.d/elpa/org-20150511/ob-exp hides /usr/share/emacs/24.5/lisp/org/ob-exp
/home/nlj/.emacs.d/elpa/org-20150511/org-info hides /usr/share/emacs/24.5/lisp/org/org-info
/home/nlj/.emacs.d/elpa/org-20150511/org-footnote hides /usr/share/emacs/24.5/lisp/org/org-footnote
/home/nlj/.emacs.d/elpa/org-20150511/ob-sh hides /usr/share/emacs/24.5/lisp/org/ob-sh
/home/nlj/.emacs.d/elpa/org-20150511/org-compat hides /usr/share/emacs/24.5/lisp/org/org-compat
/home/nlj/.emacs.d/elpa/org-20150511/org-agenda hides /usr/share/emacs/24.5/lisp/org/org-agenda
/home/nlj/.emacs.d/elpa/org-20150511/org-timer hides /usr/share/emacs/24.5/lisp/org/org-timer
/home/nlj/.emacs.d/elpa/org-20150511/ob-shen hides /usr/share/emacs/24.5/lisp/org/ob-shen
/home/nlj/.emacs.d/elpa/org-20150511/ob-tangle hides /usr/share/emacs/24.5/lisp/org/ob-tangle
/home/nlj/.emacs.d/elpa/org-20150511/ob-calc hides /usr/share/emacs/24.5/lisp/org/ob-calc
/home/nlj/.emacs.d/elpa/org-20150511/org-inlinetask hides /usr/share/emacs/24.5/lisp/org/org-inlinetask
/home/nlj/.emacs.d/elpa/org-20150511/ob-C hides /usr/share/emacs/24.5/lisp/org/ob-C
/home/nlj/.emacs.d/elpa/org-20150511/org-gnus hides /usr/share/emacs/24.5/lisp/org/org-gnus
/home/nlj/.emacs.d/elpa/org-20150511/org-clock hides /usr/share/emacs/24.5/lisp/org/org-clock
/home/nlj/.emacs.d/elpa/org-20150511/ox-icalendar hides /usr/share/emacs/24.5/lisp/org/ox-icalendar
/home/nlj/.emacs.d/elpa/org-20150511/ox-beamer hides /usr/share/emacs/24.5/lisp/org/ox-beamer
/home/nlj/.emacs.d/elpa/org-20150511/org-mouse hides /usr/share/emacs/24.5/lisp/org/org-mouse
/home/nlj/.emacs.d/elpa/org-20150511/ob-ocaml hides /usr/share/emacs/24.5/lisp/org/ob-ocaml
/home/nlj/.emacs.d/elpa/org-20150511/ob-plantuml hides /usr/share/emacs/24.5/lisp/org/ob-plantuml
/home/nlj/.emacs.d/elpa/org-20150511/ob-screen hides /usr/share/emacs/24.5/lisp/org/ob-screen
/home/nlj/.emacs.d/elpa/org-20150511/org-colview hides /usr/share/emacs/24.5/lisp/org/org-colview
/home/nlj/.emacs.d/elpa/org-20150511/ob-sass hides /usr/share/emacs/24.5/lisp/org/ob-sass
/home/nlj/.emacs.d/elpa/org-20150511/ox-html hides /usr/share/emacs/24.5/lisp/org/ox-html
/home/nlj/.emacs.d/elpa/org-20150511/org-bbdb hides /usr/share/emacs/24.5/lisp/org/org-bbdb
/home/nlj/.emacs.d/elpa/org-20150511/ob-lisp hides /usr/share/emacs/24.5/lisp/org/ob-lisp
/home/nlj/.emacs.d/elpa/org-20150511/ob-java hides /usr/share/emacs/24.5/lisp/org/ob-java
/home/nlj/.emacs.d/elpa/org-20150511/org-rmail hides /usr/share/emacs/24.5/lisp/org/org-rmail
/home/nlj/.emacs.d/elpa/org-20150511/ob-asymptote hides /usr/share/emacs/24.5/lisp/org/ob-asymptote
/home/nlj/.emacs.d/elpa/org-20150511/ob-matlab hides /usr/share/emacs/24.5/lisp/org/ob-matlab
/home/nlj/.emacs.d/elpa/org-20150511/ox-org hides /usr/share/emacs/24.5/lisp/org/ox-org
/home/nlj/.emacs.d/elpa/org-20150511/org-element hides /usr/share/emacs/24.5/lisp/org/org-element
/home/nlj/.emacs.d/elpa/org-20150511/org-attach hides /usr/share/emacs/24.5/lisp/org/org-attach
/home/nlj/.emacs.d/elpa/org-20150511/ob-ledger hides /usr/share/emacs/24.5/lisp/org/ob-ledger
/home/nlj/.emacs.d/elpa/org-20150511/ob-core hides /usr/share/emacs/24.5/lisp/org/ob-core
/home/nlj/.emacs.d/elpa/org-20150511/ob-sql hides /usr/share/emacs/24.5/lisp/org/ob-sql
/home/nlj/.emacs.d/elpa/org-20150511/ob-latex hides /usr/share/emacs/24.5/lisp/org/ob-latex
/home/nlj/.emacs.d/elpa/org-20150511/org-ctags hides /usr/share/emacs/24.5/lisp/org/org-ctags
/home/nlj/.emacs.d/elpa/org-20150511/org-loaddefs hides /usr/share/emacs/24.5/lisp/org/org-loaddefs
/home/nlj/.emacs.d/elpa/org-20150511/ob hides /usr/share/emacs/24.5/lisp/org/ob
~/.emacs.d/modules/emms/lisp/tq hides /usr/share/emacs/24.5/lisp/emacs-lisp/tq

Features:
(nndraft nnmh utf-7 nnimap utf7 gnutls nnfolder parse-time bbdb-gnus
bbdb-mua epa-file epa derived epg netrc network-stream starttls tls
gnus-agent gnus-srvr gnus-score score-mode nnvirtual gnus-msg gnus-art
mm-uu mml2015 epg-config mm-view mml-smime smime dig nntp gnus-cache
gnus-sum nnoo gnus-group gnus-undo nnmail mail-source gnus-start
gnus-spec gnus-int gnus-range gnus-win gnus gnus-ems nnheader help-mode
pp shadow bbdb-message mail-extr emacsbug message rfc822 mml mml-sec
mm-decode mm-bodies mm-encode mail-parse rfc2231 gmm-utils mailheader
sendmail rfc2047 rfc2045 ietf-drums mail-utils sage sage-load rx
emms-bookmarks emms-cue emms-mode-line-icon emms-browser sort
emms-playlist-sort emms-last-played emms-player-xine emms-player-mpd tq
emms-playing-time emms-lyrics emms-url url url-proxy url-privacy
url-expand url-methods url-history url-cookie url-domsuf url-util
url-parse auth-source eieio byte-opt bytecomp byte-compile cl-extra
cconv eieio-core mm-util mail-prsvr password-cache url-vars mailcap
emms-streams emms-tag-editor emms-mark emms-mode-line emms-cache
emms-info-ogginfo emms-info-mp3info emms-info later-do
emms-playlist-mode emms-player-vlc emms-player-mplayer
emms-player-simple emms-source-playlist emms-source-file locate
emms-setup emms emms-compat cl-macs org-element org-rmail org-mhe
org-irc org-info org-gnus gnus-util org-docview doc-view jka-compr
image-mode dired org-bibtex bibtex org-bbdb org-w3m org-agenda org
advice help-fns org-macro org-footnote org-pcomplete pcomplete org-list
org-faces org-entities noutline outline easy-mmode org-version
ob-emacs-lisp ob ob-tangle ob-ref ob-lob ob-table ob-exp org-src ob-keys
ob-comint comint ansi-color ring ob-core ob-eval org-compat org-macs
org-loaddefs format-spec find-func bbdb-anniv diary-lib diary-loaddefs
cal-menu calendar cal-loaddefs bbdb-com crm mailabbrev bbdb bbdb-site
timezone tex-site info package edmacro kmacro recentf tree-widget
battery time saveplace wheatgrass-theme delsel paren savehist iswitchb
elec-pair desktop frameset cua-base cus-start cus-load color-theme
easymenu wid-edit cl gv cl-loaddefs cl-lib bbdb-loaddefs time-date
tooltip electric uniquify ediff-hook vc-hooks lisp-float-type mwheel
x-win x-dnd tool-bar dnd fontset image regexp-opt fringe tabulated-list
newcomment lisp-mode prog-mode register page menu-bar rfn-eshadow timer
select scroll-bar mouse jit-lock font-lock syntax facemenu font-core
frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai
tai-viet lao korean japanese hebrew greek romanian slovak czech european
ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help
simple abbrev minibuffer nadvice loaddefs button faces cus-face macroexp
files text-properties overlay sha1 md5 base64 format env code-pages mule
custom widget hashtable-print-readable backquote make-network-process
dbusbind gfilenotify dynamic-setting system-font-setting
font-render-setting move-toolbar gtk x-toolkit x multi-tty emacs)

Memory information:
((conses 16 359689 20460)
 (symbols 48 52347 0)
 (miscs 40 5232 5317)
 (strings 32 91131 7914)
 (string-bytes 1 3165959)
 (vectors 16 33087)
 (vector-slots 8 669083 3111)
 (floats 8 323 309)
 (intervals 56 1700 0)
 (buffers 960 29)
 (heap 1024 75344 1733))





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#20808: 24.5; Emacs looping with 100% CPU at line 15287 (?) of xdisp.c
  2015-06-14  4:15 bug#20808: 24.5; Emacs looping with 100% CPU at line 15287 (?) of xdisp.c N. Jackson
@ 2015-06-14 14:08 ` Eli Zaretskii
  2015-06-14 19:16   ` N. Jackson
  0 siblings, 1 reply; 12+ messages in thread
From: Eli Zaretskii @ 2015-06-14 14:08 UTC (permalink / raw)
  To: N. Jackson; +Cc: 20808

> From: nljlistbox2@gmail.com (N. Jackson)
> Date: Sun, 14 Jun 2015 01:15:29 -0300
> 
> 
> I have Emacs stuck in a loop and running at 100% CPU. GDB is attached.
> 
>     (gdb) bt
>     #0  0x0000000000462063 in redisplay_window (window=18301693, just_this_one_p=just_this_one_p@entry=true) at ../../src/xdisp.c:15286
>     #1  0x0000000000463a36 in redisplay_window_1 (window=window@entry=18301693) at ../../src/xdisp.c:14381
>     #2  0x000000000055a58b in internal_condition_case_1 (bfun=0x463a00 <redisplay_window_1>, arg=18301693, handlers=<optimized out>, hfun=0x42bac0 <redisplay_window_error>) at ../../src/eval.c:1372
>     #3  0x0000000000453aa1 in redisplay_internal () at ../../src/xdisp.c:14024
>     #4  0x0000000000454455 in redisplay () at ../../src/xdisp.c:13229
>     #5  0x00000000004f44a1 in read_char (commandflag=1, map=map@entry=93744966, prev_event=12311602, used_mouse_menu=used_mouse_menu@entry=0x7ffc481ee12b, end_time=end_time@entry=0x0) at ../../src/keyboard.c:2571
>     #6  0x00000000004f5c1f in read_key_sequence (keybuf=keybuf@entry=0x7ffc481ee200, prompt=12311602, dont_downcase_last=dont_downcase_last@entry=false, can_return_switch_frame=can_return_switch_frame@entry=true, fix_current_buffer=fix_current_buffer@entry=true, prevent_redisplay=prevent_redisplay@entry=false, bufsize=30)
>         at ../../src/keyboard.c:9089
>     #7  0x00000000004f7990 in command_loop_1 () at ../../src/keyboard.c:1453
>     #8  0x000000000055a467 in internal_condition_case (bfun=bfun@entry=0x4f7790 <command_loop_1>, handlers=<optimized out>, hfun=hfun@entry=0x4ee950 <cmd_error>)
>         at ../../src/eval.c:1348
>     #9  0x00000000004e9f6e in command_loop_2 (ignore=ignore@entry=12311602) at ../../src/keyboard.c:1178
>     #10 0x000000000055a34b in internal_catch (tag=12359074, func=func@entry=0x4e9f50 <command_loop_2>, arg=12311602) at ../../src/eval.c:1112
>     #11 0x00000000004ee567 in recursive_edit_1 () at ../../src/keyboard.c:1157
>     #12 0x00000000004ee567 in recursive_edit_1 () at ../../src/keyboard.c:778
>     #13 0x00000000004ee880 in Frecursive_edit () at ../../src/keyboard.c:849
>     #14 0x0000000000418079 in main (argc=<optimized out>, argv=0x7ffc481ee568) at ../../src/emacs.c:1642
> 
> I can step through the code without difficulty:
> 
>     (gdb) step
>     bidi_shelve_cache () at ../../src/bidi.c:846
>     846       if (bidi_cache_idx == 0)
> 
> But trying to step out with `finish', leaves me looping again trying to
> exit from #0:
> 
>     (gdb) finish
>     Run till exit from #0  bidi_shelve_cache () at ../../src/bidi.c:846
>     redisplay_window (window=18301693, just_this_one_p=just_this_one_p@entry=true) at ../../src/xdisp.c:15287
>     15287             } while (line_bottom_y (&it1) - start_y < amount_to_scroll);
>     Value returned is $1 = (void *) 0x0
>     (gdb) finish
>     Run till exit from #0  redisplay_window (window=18301693, just_this_one_p=just_this_one_p@entry=true) at ../../src/xdisp.c:15287
>     ^C
>     Program received signal SIGINT, Interrupt.
>     0x0000000000462063 in redisplay_window (window=18301693, just_this_one_p=just_this_one_p@entry=true) at ../../src/xdisp.c:15286
>     15286               SAVE_IT (it1, it, it1data);
>     (gdb)
> 
> What should I do next? Can any information still be gleaned from this?

Yes, the information you collected is useful, thanks.  If you could
come up with a reproducible recipe for this, it would be even better.
Failing that, I could give you instructions regarding GDB commands
that will collect some more data, in the hope that the data will allow
to come up with a fix.

Thanks.





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#20808: 24.5; Emacs looping with 100% CPU at line 15287 (?) of xdisp.c
  2015-06-14 14:08 ` Eli Zaretskii
@ 2015-06-14 19:16   ` N. Jackson
  2015-06-14 19:46     ` Eli Zaretskii
  0 siblings, 1 reply; 12+ messages in thread
From: N. Jackson @ 2015-06-14 19:16 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 20808

At 11:08 -0300 on Sunday 2015-06-14, Eli Zaretskii wrote:

> Yes, the information you collected is useful, thanks.  If you could
> come up with a reproducible recipe for this, it would be even better.
> Failing that, I could give you instructions regarding GDB commands
> that will collect some more data, in the hope that the data will allow
> to come up with a fix.

Well, I don't know exactly what I was doing to trigger the problem. I
suspect it happenned when I clicked a link in an email in Gnus, which
opened a web page in Eww. (It may have been relevant that I then 1)
scrolled in the Eww window and 2) that I hit `&' to open the web page in
an external browser -- not necessarilly in that order.)

It might be relevant that the web page contained quite a lot of images,
mostly small, and that Gnus opens Eww in the short (eleven lines high)
Summary buffer window.

[The typical view in Gnus when reading mail has the frame divided
horizontally (a top and a bottom window), with the short Summary buffer
window on top displaying the list of mail in the current "group" (mail
box/folder/directory), and a taller window at the bottom (the Article
buffer) displaying the content of the mail that is currently selected in
the Summary buffer.]

I was going to say that I doubt that I can reproduce the problem but
while trying the steps above, it happenned again. It seemed (perhaps) to
happen after scrolling the Eww window with the scroll thumb. The
backtrace was the same.

I haven't been able to reproduce the problem in my own build of Emacs
24.5, but I don't know yet if that's because I haven't taken exactly the
same steps, or if it's because of different build settings.

[I haven't reproduced the problem on master either, but there things are
different so I don't expect to. Eww now no longer dispays in the short
window, but in the taller one, and the Eww page layout is simpler and
cleaner.]

I will work on finding a simple reproducible recipe for the Fedora 21
build (preferably removing Gnus from the equation), and will also see if
I can reproduce the problem in my own build.

Meanwhile, if you think it is worth trying to debug the problem in the
Fedora 21 optimised build, please send instructions for steps to take in
GDB. I still have GDB attached to it.

Thanks.





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#20808: 24.5; Emacs looping with 100% CPU at line 15287 (?) of xdisp.c
  2015-06-14 19:16   ` N. Jackson
@ 2015-06-14 19:46     ` Eli Zaretskii
  2015-06-15 15:03       ` Eli Zaretskii
  2015-06-15 15:42       ` N. Jackson
  0 siblings, 2 replies; 12+ messages in thread
From: Eli Zaretskii @ 2015-06-14 19:46 UTC (permalink / raw)
  To: N. Jackson; +Cc: 20808

> From: nljlistbox2@gmail.com (N. Jackson)
> Cc: 20808@debbugs.gnu.org
> Date: Sun, 14 Jun 2015 16:16:47 -0300
> 
> Well, I don't know exactly what I was doing to trigger the problem. I
> suspect it happenned when I clicked a link in an email in Gnus, which
> opened a web page in Eww. (It may have been relevant that I then 1)
> scrolled in the Eww window and 2) that I hit `&' to open the web page in
> an external browser -- not necessarilly in that order.)
> 
> It might be relevant that the web page contained quite a lot of images,
> mostly small, and that Gnus opens Eww in the short (eleven lines high)
> Summary buffer window.

And I understand you have set scroll-conservatively to a value larger
than 100, is that true?

> Meanwhile, if you think it is worth trying to debug the problem in the
> Fedora 21 optimised build, please send instructions for steps to take in
> GDB. I still have GDB attached to it.

Thanks.

The loop where Emacs is evidently inflooping is this:

	  start_y = line_bottom_y (&it1);
	  do {
	    RESTORE_IT (&it, &it, it1data);
	    move_it_by_lines (&it, 1);
	    SAVE_IT (it1, it, it1data);
	  } while (line_bottom_y (&it1) - start_y < amount_to_scroll);

So what I'd like to know is values of the following variables:

  it.current
  it.current_y
  it.max_ascent
  it.max_descent
  it.method
  start_y

With the exception of the last variable, which should stay fixed
during the loop, please step through the loop a few times, and show
the values of the above variables for each iteration through the loop.

Thanks in advance.





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#20808: 24.5; Emacs looping with 100% CPU at line 15287 (?) of xdisp.c
  2015-06-14 19:46     ` Eli Zaretskii
@ 2015-06-15 15:03       ` Eli Zaretskii
  2015-06-15 15:42       ` N. Jackson
  1 sibling, 0 replies; 12+ messages in thread
From: Eli Zaretskii @ 2015-06-15 15:03 UTC (permalink / raw)
  To: nljlistbox2; +Cc: 20808

> Date: Sun, 14 Jun 2015 22:46:18 +0300
> From: Eli Zaretskii <eliz@gnu.org>
> Cc: 20808@debbugs.gnu.org
> 
> So what I'd like to know is values of the following variables:
> 
>   it.current
>   it.current_y
>   it.max_ascent
>   it.max_descent
>   it.method
>   start_y

And one more: the value of ZV (a.k.a. current_buffer->zv).

Thanks.





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#20808: 24.5; Emacs looping with 100% CPU at line 15287 (?) of xdisp.c
  2015-06-14 19:46     ` Eli Zaretskii
  2015-06-15 15:03       ` Eli Zaretskii
@ 2015-06-15 15:42       ` N. Jackson
  2015-06-16 15:03         ` Eli Zaretskii
  1 sibling, 1 reply; 12+ messages in thread
From: N. Jackson @ 2015-06-15 15:42 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 20808

At 16:46 -0300 on Sunday 2015-06-14, Eli Zaretskii wrote:

> And I understand you have set scroll-conservatively to a value larger
> than 100, is that true?

Indeed, yes:

    scroll-conservatively is a variable defined in `C source code'.
    Its value is 101
    Original value was 0

> The loop where Emacs is evidently inflooping is this:
>
> 	  start_y = line_bottom_y (&it1);
> 	  do {
> 	    RESTORE_IT (&it, &it, it1data);
> 	    move_it_by_lines (&it, 1);
> 	    SAVE_IT (it1, it, it1data);
> 	  } while (line_bottom_y (&it1) - start_y < amount_to_scroll);

Yes, that's right:

    15283             do {
    15284               RESTORE_IT (&it, &it, it1data);
    15285               move_it_by_lines (&it, 1);
    15286               SAVE_IT (it1, it, it1data);
    15287             } while (line_bottom_y (&it1) - start_y < amount_to_scroll);

> So what I'd like to know is values of the following variables:
>
>   it.current
>   it.current_y
>   it.max_ascent
>   it.max_descent
>   it.method
>   start_y
>
> With the exception of the last variable, which should stay fixed
> during the loop, please step through the loop a few times, and show
> the values of the above variables for each iteration through the loop.

At 12:03 -0300 on Monday 2015-06-15, Eli Zaretskii wrote:

> And one more: the value of ZV (a.k.a. current_buffer->zv).

I have results from the (presumably optimised) Fedora 21 build and also
from my own build which I finally managed to get to infloop the same
way.

It's not clear to me if GDB prints out the statement it just executed or
the statement that it will execute next, so I looked at the values of
the variables after each step of the loop to be sure I didn't miss
anything.

The variables don't change, and after a few spins through the loop,
I set watchpoints on them and `finish' and there was no sign of them
changing after about five minutes, after which I did a C-c.

For the Fedora 21 build (the variables don't change):

    (gdb) p it.current
    $11 = {pos = {charpos = 0, bytepos = 0}, overlay_string_index = 0, string_pos = {charpos = 0, bytepos = 0}, dpvec_index = 0}
    (gdb) p it.current_y  
    $12 = 0
    (gdb) p it.max_ascent 
    $13 = 0
    (gdb) p it.max_descent
    $14 = 0
    (gdb) p it.method
    $15 = GET_FROM_BUFFER
    (gdb) p start_y
    No symbol "start_y" in current context.
    (gdb) p ZV
    No symbol "ZV" in current context.
    (gdb) p current_buffer->zv
    $27 = 3255

For my build (again the variables don't change):

    (gdb) p it.current
    $20 = {pos = {charpos = 2840, bytepos = 2841}, overlay_string_index = -1, string_pos = {charpos = -1, bytepos = -1}, dpvec_index = -1}
    (gdb) p it.current_y
    $21 = 270
    (gdb) p it.ascent 
    $22 = 11
    (gdb) p it.descent
    $23 = 3
    (gdb) p it.method
    $24 = GET_FROM_BUFFER
    (gdb) p start_y
    $25 = 270
    (gdb) p ZV
    $34 = 2840
    (gdb) p current_buffer->zv
    $35 = 2840

I hope this helps, and I await further instructions should further
debugging be worthwhile.

Thanks.





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#20808: 24.5; Emacs looping with 100% CPU at line 15287 (?) of xdisp.c
  2015-06-15 15:42       ` N. Jackson
@ 2015-06-16 15:03         ` Eli Zaretskii
  2015-06-17  1:59           ` N. Jackson
  0 siblings, 1 reply; 12+ messages in thread
From: Eli Zaretskii @ 2015-06-16 15:03 UTC (permalink / raw)
  To: N. Jackson; +Cc: 20808

> From: nljlistbox2@gmail.com (N. Jackson)
> Cc: 20808@debbugs.gnu.org
> Date: Mon, 15 Jun 2015 12:42:57 -0300
> 
> It's not clear to me if GDB prints out the statement it just executed or
> the statement that it will execute next

The latter.

> The variables don't change, and after a few spins through the loop,
> I set watchpoints on them and `finish' and there was no sign of them
> changing after about five minutes, after which I did a C-c.

As expected.  That's why it infloops.

> For the Fedora 21 build (the variables don't change):
> 
>     (gdb) p it.current
>     $11 = {pos = {charpos = 0, bytepos = 0}, overlay_string_index = 0, string_pos = {charpos = 0, bytepos = 0}, dpvec_index = 0}
>     (gdb) p it.current_y  
>     $12 = 0
>     (gdb) p it.max_ascent 
>     $13 = 0
>     (gdb) p it.max_descent
>     $14 = 0

These values make no sense.  I guess the optimized binary lies to GDB.

> For my build (again the variables don't change):
> 
>     (gdb) p it.current
>     $20 = {pos = {charpos = 2840, bytepos = 2841}, overlay_string_index = -1, string_pos = {charpos = -1, bytepos = -1}, dpvec_index = -1}
>     (gdb) p it.current_y
>     $21 = 270
>     (gdb) p it.ascent 
>     $22 = 11
>     (gdb) p it.descent
>     $23 = 3
>     (gdb) p it.method
>     $24 = GET_FROM_BUFFER
>     (gdb) p start_y
>     $25 = 270
>     (gdb) p ZV
>     $34 = 2840
>     (gdb) p current_buffer->zv
>     $35 = 2840

This makes much more sense.

> I hope this helps, and I await further instructions should further
> debugging be worthwhile.

Yes, it helps.  Please try the patch below.  If it solves the problem,
I will install it shortly.  Please try both an optimized and a
non-optimized build, if you can afford that.

diff --git a/src/xdisp.c b/src/xdisp.c
index 7c15330..1e2f1b26 100644
--- a/src/xdisp.c
+++ b/src/xdisp.c
@@ -15094,7 +15094,8 @@ enum
 	    RESTORE_IT (&it, &it, it1data);
 	    move_it_by_lines (&it, 1);
 	    SAVE_IT (it1, it, it1data);
-	  } while (line_bottom_y (&it1) - start_y < amount_to_scroll);
+	  } while (IT_CHARPOS (it) < ZV
+		   && line_bottom_y (&it1) - start_y < amount_to_scroll);
 	}
 
       /* If STARTP is unchanged, move it down another screen line.  */





^ permalink raw reply related	[flat|nested] 12+ messages in thread

* bug#20808: 24.5; Emacs looping with 100% CPU at line 15287 (?) of xdisp.c
  2015-06-16 15:03         ` Eli Zaretskii
@ 2015-06-17  1:59           ` N. Jackson
  2015-06-17  2:45             ` Eli Zaretskii
  0 siblings, 1 reply; 12+ messages in thread
From: N. Jackson @ 2015-06-17  1:59 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 20808

At 12:03 -0300 on Tuesday 2015-06-16, Eli Zaretskii wrote:

> Please try the patch below. If it solves the problem, I will install
> it shortly. Please try both an optimized and a non-optimized build, if
> you can afford that.
>
> diff --git a/src/xdisp.c b/src/xdisp.c
> index 7c15330..1e2f1b26 100644
> --- a/src/xdisp.c
> +++ b/src/xdisp.c
> @@ -15094,7 +15094,8 @@ enum
>  	    RESTORE_IT (&it, &it, it1data);
>  	    move_it_by_lines (&it, 1);
>  	    SAVE_IT (it1, it, it1data);
> -	  } while (line_bottom_y (&it1) - start_y < amount_to_scroll);
> +	  } while (IT_CHARPOS (it) < ZV
> +		   && line_bottom_y (&it1) - start_y < amount_to_scroll);
>  	}
>  
>        /* If STARTP is unchanged, move it down another screen line.  */

Short version: I am reasonably confident that the infloop does not occur
with this patch.

Longer version:

I say "reasonably" because I still do not have an exact recipe to
trigger the infloop. It seems to be some interaction with the layout of
the web page, the height of the images and the height of the window. I
was unsuccessful reproducing the problem with C-u 12 M-x
split-window-below and then opening the web page in Eww, possibly
because the height required to reproduce the problem is not exactly 11
(the way Gnus sets the window heights maybe gives a fractional size to
the upper window).

In any case, the infloop is not too hard to trigger by moving around the
window and scrolling. With my own (unoptimised build), in four trials I
was able to trigger the infloop in 5 minutes 16 seconds, 57 seconds, 48
seconds, and 58 seconds from the time I clicked the email link that
opened the offending web page. (The time was less after I got more
aggressive with the interface.) With the Fedora 21 build, in four trials
I triggered the infloop in 2:17, 1:38, 0:49, and 0:43.

With the patch, in my unoptimised build, configured with

    ./configure --prefix=/home/nlj/local/  --enable-checking='yes,glyphs' CFLAGS="-O0 -g3 -ggdb"

, I was unable to trigger an infloop in over seven and a half minutes of
aggressive interaction with the window displaying the offending web
page.

Also with the patch, in a build configured with the Fedora 21 build's
settings:

    ./configure --build=x86_64-redhat-linux-gnu  --host=x86_64-redhat-linux-gnu --program-prefix=  --disable-dependency-tracking --prefix=/usr --exec-prefix=/usr  --bindir=/usr/bin --sbindir=/usr/sbin --sysconfdir=/etc  --datadir=/usr/share --includedir=/usr/include --libdir=/usr/lib64  --libexecdir=/usr/libexec --localstatedir=/var  --sharedstatedir=/var/lib --mandir=/usr/share/man  --infodir=/usr/share/info --with-dbus --with-gif --with-jpeg --with-png  --with-rsvg --with-tiff --with-xft --with-xpm --with-x-toolkit=gtk3  --with-gpm=no build_alias=x86_64-redhat-linux-gnu  host_alias=x86_64-redhat-linux-gnu CFLAGS="-DMAIL_USE_LOCKF -O2 -g  -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2  -fexceptions -fstack-protector-strong --param=ssp-buffer-size=4  -grecord-gcc-switches -m64
  -mtune=generic" LDFLAGS="-Wl,-z,relro" 

, I was unable to trigger an infloop in over ten minutes of aggressive
interaction with the window displaying the offending web page.






^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#20808: 24.5; Emacs looping with 100% CPU at line 15287 (?) of xdisp.c
  2015-06-17  1:59           ` N. Jackson
@ 2015-06-17  2:45             ` Eli Zaretskii
  2015-06-17 11:30               ` N. Jackson
  0 siblings, 1 reply; 12+ messages in thread
From: Eli Zaretskii @ 2015-06-17  2:45 UTC (permalink / raw)
  To: N. Jackson; +Cc: 20808

> From: nljlistbox2@gmail.com (N. Jackson)
> Cc: 20808@debbugs.gnu.org
> Date: Tue, 16 Jun 2015 22:59:51 -0300
> 
> Short version: I am reasonably confident that the infloop does not occur
> with this patch.

OK, thanks.  I will install the change shortly, but just for more
confidence: is it true that all of these infloops happened when you
tried to scroll with bottom of the window near the end of the buffer?
That's the condition the patch attempts to fix.





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#20808: 24.5; Emacs looping with 100% CPU at line 15287 (?) of xdisp.c
  2015-06-17  2:45             ` Eli Zaretskii
@ 2015-06-17 11:30               ` N. Jackson
  2015-06-17 17:22                 ` Eli Zaretskii
  0 siblings, 1 reply; 12+ messages in thread
From: N. Jackson @ 2015-06-17 11:30 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 20808

At 23:45 -0300 on Tuesday 2015-06-16, Eli Zaretskii wrote:

> OK, thanks.  I will install the change shortly, but just for more
> confidence: is it true that all of these infloops happened when you
> tried to scroll with bottom of the window near the end of the buffer?
> That's the condition the patch attempts to fix.

FWIW, for about half of the infloops, I attatched the debugger to check
it was the same infloop because I wasn't convinced I'd triggered it the
same way, and it was in that same loop (ending at line 15287 of
xdisp.c).

As for "near" the end of the buffer, yes, for some value of "near".

That webpage has some text at the top and below that are images only. It
turns out (I just checked with an even shorter window), that Eww/shr is
displaying all of those images on the same line and that line is the
last line of the buffer.

The images get sized (by Eww/shr?) so that each of them fits within the
window height and with the even shorter window I just tried (maybe four
or five text lines high), they are sufficiently small that the entire
line of them fits within the width of the window.

But with the eleven-text-lines-high window that the webpage opens in
from Gnus, the line of images is wider than the window so it is wrapped
to two "lines" or rows in the window.

The infloop always occurs when the window is showing the top row of
images (and a little bit of the top of the tallest image in the second
row), so (because the line of images is the last line of the buffer),
yes, the infloop occurs when scrolling near the last line of the buffer;
however it is not the last line of the window, but rather, more like
half way up it, if that makes any sense.

I hope that helps.





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#20808: 24.5; Emacs looping with 100% CPU at line 15287 (?) of xdisp.c
  2015-06-17 11:30               ` N. Jackson
@ 2015-06-17 17:22                 ` Eli Zaretskii
  2015-06-17 19:00                   ` N. Jackson
  0 siblings, 1 reply; 12+ messages in thread
From: Eli Zaretskii @ 2015-06-17 17:22 UTC (permalink / raw)
  To: N. Jackson; +Cc: 20808-done

> From: nljlistbox2@gmail.com (N. Jackson)
> Cc: 20808@debbugs.gnu.org
> Date: Wed, 17 Jun 2015 08:30:18 -0300
> 
> As for "near" the end of the buffer, yes, for some value of "near".
> 
> That webpage has some text at the top and below that are images only. It
> turns out (I just checked with an even shorter window), that Eww/shr is
> displaying all of those images on the same line and that line is the
> last line of the buffer.
> 
> The images get sized (by Eww/shr?) so that each of them fits within the
> window height and with the even shorter window I just tried (maybe four
> or five text lines high), they are sufficiently small that the entire
> line of them fits within the width of the window.
> 
> But with the eleven-text-lines-high window that the webpage opens in
> from Gnus, the line of images is wider than the window so it is wrapped
> to two "lines" or rows in the window.
> 
> The infloop always occurs when the window is showing the top row of
> images (and a little bit of the top of the tallest image in the second
> row), so (because the line of images is the last line of the buffer),
> yes, the infloop occurs when scrolling near the last line of the buffer;
> however it is not the last line of the window, but rather, more like
> half way up it, if that makes any sense.

Sorry, when I was talking about "lines", I really meant "screen
lines", i.e. horizontal rows of "display elements", be it character
glyphs or images.  I didn't mean "lines" as the measure of height.

> I hope that helps.

It does, thanks.

I've pushed the change.  Thanks a lot for your help in debugging this.





^ permalink raw reply	[flat|nested] 12+ messages in thread

* bug#20808: 24.5; Emacs looping with 100% CPU at line 15287 (?) of xdisp.c
  2015-06-17 17:22                 ` Eli Zaretskii
@ 2015-06-17 19:00                   ` N. Jackson
  0 siblings, 0 replies; 12+ messages in thread
From: N. Jackson @ 2015-06-17 19:00 UTC (permalink / raw)
  To: 20808

At 14:22 -0300 on Wednesday 2015-06-17, Eli Zaretskii wrote:

> Sorry, when I was talking about "lines", I really meant "screen
> lines", i.e. horizontal rows of "display elements", be it character
> glyphs or images.  I didn't mean "lines" as the measure of height.

No worries, and no confusion really, I was just trying to be clear given
the potential for ambiguity/misunderstanding.

> I've pushed the change.

Great, thank you.






^ permalink raw reply	[flat|nested] 12+ messages in thread

end of thread, other threads:[~2015-06-17 19:00 UTC | newest]

Thread overview: 12+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2015-06-14  4:15 bug#20808: 24.5; Emacs looping with 100% CPU at line 15287 (?) of xdisp.c N. Jackson
2015-06-14 14:08 ` Eli Zaretskii
2015-06-14 19:16   ` N. Jackson
2015-06-14 19:46     ` Eli Zaretskii
2015-06-15 15:03       ` Eli Zaretskii
2015-06-15 15:42       ` N. Jackson
2015-06-16 15:03         ` Eli Zaretskii
2015-06-17  1:59           ` N. Jackson
2015-06-17  2:45             ` Eli Zaretskii
2015-06-17 11:30               ` N. Jackson
2015-06-17 17:22                 ` Eli Zaretskii
2015-06-17 19:00                   ` N. Jackson

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).