unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#7722: 24.0.50; Finding this C++ header file drops emacs into a infinite loop
@ 2010-12-24  8:28 Tassilo Horn
  2011-01-22 20:37 ` Chong Yidong
  0 siblings, 1 reply; 9+ messages in thread
From: Tassilo Horn @ 2010-12-24  8:28 UTC (permalink / raw)
  To: 7722

Orininally reported by Caligo <iteronvexor@gmail.com> in
gmane.emacs.help
(<AANLkTikee8kNAxp6+viq6KSVPzqr3-0w1WCw0i+1iY_b@mail.gmail.com>).  He
uses GNU Emacs 23.2.1 (x86_64-pc-linux-gnu, GTK+ Version 2.20.1), but
the bug in still in the current bzr trunk.

1. emacs -Q bug.hpp
2. emacs loops infinitely using 100% CPU resources

The offending file is that (according to the original reporter, the
spaces and empty lines are needed):

--8<---------------cut here---------------start------------->8---














































class ConversionConsole : public QWidget{


private:
  typedef boost::array<InputLine, 22> InputLines;



























  typedef cons<XYZ, cons<xyY, cons<Lab, cons<LCHab, cons<Luv, cons<LCHuv,
          cons<AdobeRGB, cons<AppleRGB, cons<BestRGB, cons<BetaRGB,
  	  cons<BruceRGB, cons<CIERGB, cons<ColorMatchRGB, cons<DonRGB4,
  	  cons<ECIRGB, cons<EktaSpacePS5, cons<NTSCRGB, cons<PAL_SECAMRGB,
  	  cons<ProPhotoRGB, cons<SMPTE_CRGB, cons<sRGB, cons<WideGamutRGB
  	  > > > > > > > > > > > > > > > > > > > > > > ColorSpaces;

};
--8<---------------cut here---------------end--------------->8---



In GNU Emacs 24.0.50.1 (x86_64-pc-linux-gnu)
 of 2010-12-21 on thinkpad
Windowing system distributor `The X.Org Foundation', version 11.0.10902902
configured using `configure  '--prefix=/usr' '--build=x86_64-pc-linux-gnu' '--host=x86_64-pc-linux-gnu' '--mandir=/usr/share/man' '--infodir=/usr/share/info' '--datadir=/usr/share' '--sysconfdir=/etc' '--localstatedir=/var/lib' '--libdir=/usr/lib64' '--program-suffix=-emacs-24' '--infodir=/usr/share/info/emacs-24' '--with-crt-dir=/usr/lib64' '--without-compress-info' '--with-sound' '--with-x' '--without-gconf' '--with-xml2' '--without-toolkit-scroll-bars' '--with-gif' '--with-jpeg' '--with-png' '--with-rsvg' '--with-tiff' '--with-xpm' '--with-imagemagick' '--with-xft' '--with-libotf' '--with-m17n-flt' '--with-x-toolkit=no' '--without-hesiod' '--without-kerberos' '--without-kerberos5' '--with-gpm' '--with-dbus' '--with-gnutls' '--without-selinux' 'build_alias=x86_64-pc-linux-gnu' 'host_alia
 s=x86_64-pc-linux-gnu' 'CFLAGS=-march=native -O2 -pipe' 'LDFLAGS=-Wl,-O1 -Wl,--as-needed' 'CPPFLAGS=''

Important settings:
  value of $LC_ALL: nil
  value of $LC_COLLATE: nil
  value of $LC_CTYPE: nil
  value of $LC_MESSAGES: nil
  value of $LC_MONETARY: nil
  value of $LC_NUMERIC: nil
  value of $LC_TIME: nil
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: nil
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

Major mode: Message

Minor modes in effect:
  gnus-message-citation-mode: t
  diff-auto-refine-mode: t
  mml-mode: t
  global-auto-complete-mode: t
  auto-complete-mode: t
  yas/minor-mode: t
  recentf-mode: t
  window-number-meta-mode: t
  window-number-mode: t
  global-subword-mode: t
  subword-mode: t
  savehist-mode: t
  show-paren-mode: t
  tooltip-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
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t

Recent input:
u d i n g SPC t h e SPC b a d SPC <M-backspace> h p 
p SPC f i l e SPC u s i n g M-q SPC M - x SPC r e p 
<return> - e m M-/ SPC <backspace> z <backspace> ? 
<return> <return> b <tab> C-c C-c C-g C-g SPC SPC SPC 
SPC SPC SPC F <down> <down> <up> C-k <return> <up> 
<return> N e x t SPC t i b e <backspace> <backspace> 
m e , SPC s i m p l y SPC c o p y SPC t h e SPC c o 
n t e n t s SPC o f SPC t h e SPC b u g SPC r e p o 
r t SPC b u f f e r SPC i n t o SPC y o u r SPC e m 
a c <M-backspace> u s u a l SPC e m a i <backspace> 
i l SPC c l e i <backspace> <backspace> i o <backspace> 
e n t SPC a n d SPC s e n d SPC f r o m SPC t h a t 
. <down> <down> <down> C-a C-k C-k C-k C-k C-k C-k 
C-k C-k C-k C-k C-k C-k C-k C-k C-k C-k C-k C-k C-k 
C-k C-k C-k C-k C-k C-k C-k C-k C-k C-k C-k C-k C-k 
C-k C-k C-k C-k C-k C-k C-k C-k C-k C-k C-k C-k C-k 
C-k C-k C-k C-k C-k C-k C-k C-k C-k C-k C-k C-k C-k 
C-k C-k C-k C-k C-k C-k C-k C-k C-k C-k C-k C-k C-k 
C-k C-k C-k C-k C-k C-k <return> I ' l l SPC d o . 
<return> <return> b <tab> M-x r e p o <tab> r t <tab> 
<return>

Recent messages:
Sending...
Sending news via Gmane using nntp...
Wrote /home/horn/.gnus.d/News/archive/sent-postings/902
Sending...done
Quit [2 times]
Mark set [2 times]
kill-line: End of buffer [3 times]
[yas] snippet expanded.
[yas] snippet 3 exited.
Making completion list...

Load-path shadows:
~/repos/el/gnus/lisp/sha1 hides /usr/share/emacs/24.0.50/lisp/sha1
~/repos/el/gnus/lisp/password-cache hides /usr/share/emacs/24.0.50/lisp/password-cache
~/repos/el/gnus/lisp/md4 hides /usr/share/emacs/24.0.50/lisp/md4
~/repos/el/gnus/lisp/hex-util hides /usr/share/emacs/24.0.50/lisp/hex-util
~/repos/el/gnus/lisp/format-spec hides /usr/share/emacs/24.0.50/lisp/format-spec
~/repos/el/gnus/lisp/color hides /usr/share/emacs/24.0.50/lisp/color
~/repos/el/gnus/lisp/dns-mode hides /usr/share/emacs/24.0.50/lisp/textmodes/dns-mode
~/repos/el/org-mode/lisp/org-xoxo hides /usr/share/emacs/24.0.50/lisp/org/org-xoxo
~/repos/el/org-mode/lisp/org-wl hides /usr/share/emacs/24.0.50/lisp/org/org-wl
~/repos/el/org-mode/lisp/org-w3m hides /usr/share/emacs/24.0.50/lisp/org/org-w3m
~/repos/el/org-mode/lisp/org-vm hides /usr/share/emacs/24.0.50/lisp/org/org-vm
~/repos/el/org-mode/lisp/org-table hides /usr/share/emacs/24.0.50/lisp/org/org-table
~/repos/el/org-mode/lisp/org-taskjuggler hides /usr/share/emacs/24.0.50/lisp/org/org-taskjuggler
~/repos/el/org-mode/lisp/org-timer hides /usr/share/emacs/24.0.50/lisp/org/org-timer
~/repos/el/org-mode/lisp/org-src hides /usr/share/emacs/24.0.50/lisp/org/org-src
~/repos/el/org-mode/lisp/org-remember hides /usr/share/emacs/24.0.50/lisp/org/org-remember
~/repos/el/org-mode/lisp/org-rmail hides /usr/share/emacs/24.0.50/lisp/org/org-rmail
~/repos/el/org-mode/lisp/org-publish hides /usr/share/emacs/24.0.50/lisp/org/org-publish
~/repos/el/org-mode/lisp/org-plot hides /usr/share/emacs/24.0.50/lisp/org/org-plot
~/repos/el/org-mode/lisp/org-protocol hides /usr/share/emacs/24.0.50/lisp/org/org-protocol
~/repos/el/org-mode/lisp/org-mouse hides /usr/share/emacs/24.0.50/lisp/org/org-mouse
~/repos/el/org-mode/lisp/org-mobile hides /usr/share/emacs/24.0.50/lisp/org/org-mobile
~/repos/el/org-mode/lisp/org-mks hides /usr/share/emacs/24.0.50/lisp/org/org-mks
~/repos/el/org-mode/lisp/org-mhe hides /usr/share/emacs/24.0.50/lisp/org/org-mhe
~/repos/el/org-mode/lisp/org-mew hides /usr/share/emacs/24.0.50/lisp/org/org-mew
~/repos/el/org-mode/lisp/org-mac-message hides /usr/share/emacs/24.0.50/lisp/org/org-mac-message
~/repos/el/org-mode/lisp/org-macs hides /usr/share/emacs/24.0.50/lisp/org/org-macs
~/repos/el/org-mode/lisp/org-latex hides /usr/share/emacs/24.0.50/lisp/org/org-latex
~/repos/el/org-mode/lisp/org-list hides /usr/share/emacs/24.0.50/lisp/org/org-list
~/repos/el/org-mode/lisp/org-jsinfo hides /usr/share/emacs/24.0.50/lisp/org/org-jsinfo
~/repos/el/org-mode/lisp/org-irc hides /usr/share/emacs/24.0.50/lisp/org/org-irc
~/repos/el/org-mode/lisp/org-inlinetask hides /usr/share/emacs/24.0.50/lisp/org/org-inlinetask
~/repos/el/org-mode/lisp/org-info hides /usr/share/emacs/24.0.50/lisp/org/org-info
~/repos/el/org-mode/lisp/org-install hides /usr/share/emacs/24.0.50/lisp/org/org-install
~/repos/el/org-mode/lisp/org-indent hides /usr/share/emacs/24.0.50/lisp/org/org-indent
~/repos/el/org-mode/lisp/org-id hides /usr/share/emacs/24.0.50/lisp/org/org-id
~/repos/el/org-mode/lisp/org-icalendar hides /usr/share/emacs/24.0.50/lisp/org/org-icalendar
~/repos/el/org-mode/lisp/org-html hides /usr/share/emacs/24.0.50/lisp/org/org-html
~/repos/el/org-mode/lisp/org-gnus hides /usr/share/emacs/24.0.50/lisp/org/org-gnus
~/repos/el/org-mode/lisp/org-habit hides /usr/share/emacs/24.0.50/lisp/org/org-habit
~/repos/el/org-mode/lisp/org hides /usr/share/emacs/24.0.50/lisp/org/org
~/repos/el/org-mode/lisp/org-freemind hides /usr/share/emacs/24.0.50/lisp/org/org-freemind
~/repos/el/org-mode/lisp/org-feed hides /usr/share/emacs/24.0.50/lisp/org/org-feed
~/repos/el/org-mode/lisp/org-footnote hides /usr/share/emacs/24.0.50/lisp/org/org-footnote
~/repos/el/org-mode/lisp/org-faces hides /usr/share/emacs/24.0.50/lisp/org/org-faces
~/repos/el/org-mode/lisp/org-exp hides /usr/share/emacs/24.0.50/lisp/org/org-exp
~/repos/el/org-mode/lisp/org-exp-blocks hides /usr/share/emacs/24.0.50/lisp/org/org-exp-blocks
~/repos/el/org-mode/lisp/org-docbook hides /usr/share/emacs/24.0.50/lisp/org/org-docbook
~/repos/el/org-mode/lisp/org-entities hides /usr/share/emacs/24.0.50/lisp/org/org-entities
~/repos/el/org-mode/lisp/org-docview hides /usr/share/emacs/24.0.50/lisp/org/org-docview
~/repos/el/org-mode/lisp/org-datetree hides /usr/share/emacs/24.0.50/lisp/org/org-datetree
~/repos/el/org-mode/lisp/org-ctags hides /usr/share/emacs/24.0.50/lisp/org/org-ctags
~/repos/el/org-mode/lisp/org-crypt hides /usr/share/emacs/24.0.50/lisp/org/org-crypt
~/repos/el/org-mode/lisp/org-colview hides /usr/share/emacs/24.0.50/lisp/org/org-colview
~/repos/el/org-mode/lisp/org-complete hides /usr/share/emacs/24.0.50/lisp/org/org-complete
~/repos/el/org-mode/lisp/org-compat hides /usr/share/emacs/24.0.50/lisp/org/org-compat
~/repos/el/org-mode/lisp/org-clock hides /usr/share/emacs/24.0.50/lisp/org/org-clock
~/repos/el/org-mode/lisp/org-capture hides /usr/share/emacs/24.0.50/lisp/org/org-capture
~/repos/el/org-mode/lisp/org-bibtex hides /usr/share/emacs/24.0.50/lisp/org/org-bibtex
~/repos/el/org-mode/lisp/org-bbdb hides /usr/share/emacs/24.0.50/lisp/org/org-bbdb
~/repos/el/org-mode/lisp/org-beamer hides /usr/share/emacs/24.0.50/lisp/org/org-beamer
~/repos/el/org-mode/lisp/org-attach hides /usr/share/emacs/24.0.50/lisp/org/org-attach
~/repos/el/org-mode/lisp/org-agenda hides /usr/share/emacs/24.0.50/lisp/org/org-agenda
~/repos/el/org-mode/lisp/org-ascii hides /usr/share/emacs/24.0.50/lisp/org/org-ascii
~/repos/el/org-mode/lisp/org-archive hides /usr/share/emacs/24.0.50/lisp/org/org-archive
~/repos/el/org-mode/lisp/ob-tangle hides /usr/share/emacs/24.0.50/lisp/org/ob-tangle
~/repos/el/org-mode/lisp/ob-table hides /usr/share/emacs/24.0.50/lisp/org/ob-table
~/repos/el/org-mode/lisp/ob-sqlite hides /usr/share/emacs/24.0.50/lisp/org/ob-sqlite
~/repos/el/org-mode/lisp/ob-sql hides /usr/share/emacs/24.0.50/lisp/org/ob-sql
~/repos/el/org-mode/lisp/ob-sh hides /usr/share/emacs/24.0.50/lisp/org/ob-sh
~/repos/el/org-mode/lisp/ob-screen hides /usr/share/emacs/24.0.50/lisp/org/ob-screen
~/repos/el/org-mode/lisp/ob-scheme hides /usr/share/emacs/24.0.50/lisp/org/ob-scheme
~/repos/el/org-mode/lisp/ob-sass hides /usr/share/emacs/24.0.50/lisp/org/ob-sass
~/repos/el/org-mode/lisp/ob-ruby hides /usr/share/emacs/24.0.50/lisp/org/ob-ruby
~/repos/el/org-mode/lisp/ob-R hides /usr/share/emacs/24.0.50/lisp/org/ob-R
~/repos/el/org-mode/lisp/ob-ref hides /usr/share/emacs/24.0.50/lisp/org/ob-ref
~/repos/el/org-mode/lisp/ob-python hides /usr/share/emacs/24.0.50/lisp/org/ob-python
~/repos/el/org-mode/lisp/ob-perl hides /usr/share/emacs/24.0.50/lisp/org/ob-perl
~/repos/el/org-mode/lisp/ob-plantuml hides /usr/share/emacs/24.0.50/lisp/org/ob-plantuml
~/repos/el/org-mode/lisp/ob-octave hides /usr/share/emacs/24.0.50/lisp/org/ob-octave
~/repos/el/org-mode/lisp/ob-org hides /usr/share/emacs/24.0.50/lisp/org/ob-org
~/repos/el/org-mode/lisp/ob-ocaml hides /usr/share/emacs/24.0.50/lisp/org/ob-ocaml
~/repos/el/org-mode/lisp/ob-matlab hides /usr/share/emacs/24.0.50/lisp/org/ob-matlab
~/repos/el/org-mode/lisp/ob-mscgen hides /usr/share/emacs/24.0.50/lisp/org/ob-mscgen
~/repos/el/org-mode/lisp/ob-exp hides /usr/share/emacs/24.0.50/lisp/org/ob-exp
~/repos/el/org-mode/lisp/ob-lisp hides /usr/share/emacs/24.0.50/lisp/org/ob-lisp
~/repos/el/org-mode/lisp/ob-lob hides /usr/share/emacs/24.0.50/lisp/org/ob-lob
~/repos/el/org-mode/lisp/ob-ledger hides /usr/share/emacs/24.0.50/lisp/org/ob-ledger
~/repos/el/org-mode/lisp/ob-latex hides /usr/share/emacs/24.0.50/lisp/org/ob-latex
~/repos/el/org-mode/lisp/ob-js hides /usr/share/emacs/24.0.50/lisp/org/ob-js
~/repos/el/org-mode/lisp/ob-keys hides /usr/share/emacs/24.0.50/lisp/org/ob-keys
~/repos/el/org-mode/lisp/ob-haskell hides /usr/share/emacs/24.0.50/lisp/org/ob-haskell
~/repos/el/org-mode/lisp/ob-gnuplot hides /usr/share/emacs/24.0.50/lisp/org/ob-gnuplot
~/repos/el/org-mode/lisp/ob hides /usr/share/emacs/24.0.50/lisp/org/ob
~/repos/el/org-mode/lisp/ob-emacs-lisp hides /usr/share/emacs/24.0.50/lisp/org/ob-emacs-lisp
~/repos/el/org-mode/lisp/ob-eval hides /usr/share/emacs/24.0.50/lisp/org/ob-eval
~/repos/el/org-mode/lisp/ob-dot hides /usr/share/emacs/24.0.50/lisp/org/ob-dot
~/repos/el/org-mode/lisp/ob-C hides /usr/share/emacs/24.0.50/lisp/org/ob-C
~/repos/el/org-mode/lisp/ob-ditaa hides /usr/share/emacs/24.0.50/lisp/org/ob-ditaa
~/repos/el/org-mode/lisp/ob-css hides /usr/share/emacs/24.0.50/lisp/org/ob-css
~/repos/el/org-mode/lisp/ob-comint hides /usr/share/emacs/24.0.50/lisp/org/ob-comint
~/repos/el/org-mode/lisp/ob-clojure hides /usr/share/emacs/24.0.50/lisp/org/ob-clojure
~/repos/el/org-mode/lisp/ob-calc hides /usr/share/emacs/24.0.50/lisp/org/ob-calc
~/repos/el/org-mode/lisp/ob-asymptote hides /usr/share/emacs/24.0.50/lisp/org/ob-asymptote
~/repos/el/gnus/lisp/tls hides /usr/share/emacs/24.0.50/lisp/net/tls
~/repos/el/gnus/lisp/sasl-ntlm hides /usr/share/emacs/24.0.50/lisp/net/sasl-ntlm
~/repos/el/gnus/lisp/sasl hides /usr/share/emacs/24.0.50/lisp/net/sasl
~/repos/el/gnus/lisp/sasl-digest hides /usr/share/emacs/24.0.50/lisp/net/sasl-digest
~/repos/el/gnus/lisp/sasl-cram hides /usr/share/emacs/24.0.50/lisp/net/sasl-cram
~/repos/el/gnus/lisp/ntlm hides /usr/share/emacs/24.0.50/lisp/net/ntlm
~/repos/el/gnus/lisp/netrc hides /usr/share/emacs/24.0.50/lisp/net/netrc
~/repos/el/gnus/lisp/imap hides /usr/share/emacs/24.0.50/lisp/net/imap
~/repos/el/gnus/lisp/hmac-md5 hides /usr/share/emacs/24.0.50/lisp/net/hmac-md5
~/repos/el/gnus/lisp/hmac-def hides /usr/share/emacs/24.0.50/lisp/net/hmac-def
~/repos/el/gnus/lisp/dns hides /usr/share/emacs/24.0.50/lisp/net/dns
~/repos/el/gnus/lisp/dig hides /usr/share/emacs/24.0.50/lisp/net/dig
~/repos/el/gnus/lisp/uudecode hides /usr/share/emacs/24.0.50/lisp/mail/uudecode
~/repos/el/gnus/lisp/hashcash hides /usr/share/emacs/24.0.50/lisp/mail/hashcash
~/repos/el/gnus/lisp/binhex hides /usr/share/emacs/24.0.50/lisp/mail/binhex
~/repos/el/gnus/lisp/spam-wash hides /usr/share/emacs/24.0.50/lisp/gnus/spam-wash
~/repos/el/gnus/lisp/yenc hides /usr/share/emacs/24.0.50/lisp/gnus/yenc
~/repos/el/gnus/lisp/utf7 hides /usr/share/emacs/24.0.50/lisp/gnus/utf7
~/repos/el/gnus/lisp/starttls hides /usr/share/emacs/24.0.50/lisp/gnus/starttls
~/repos/el/gnus/lisp/spam hides /usr/share/emacs/24.0.50/lisp/gnus/spam
~/repos/el/gnus/lisp/spam-stat hides /usr/share/emacs/24.0.50/lisp/gnus/spam-stat
~/repos/el/gnus/lisp/spam-report hides /usr/share/emacs/24.0.50/lisp/gnus/spam-report
~/repos/el/gnus/lisp/smiley hides /usr/share/emacs/24.0.50/lisp/gnus/smiley
~/repos/el/gnus/lisp/smime hides /usr/share/emacs/24.0.50/lisp/gnus/smime
~/repos/el/gnus/lisp/sieve-mode hides /usr/share/emacs/24.0.50/lisp/gnus/sieve-mode
~/repos/el/gnus/lisp/sieve-manage hides /usr/share/emacs/24.0.50/lisp/gnus/sieve-manage
~/repos/el/gnus/lisp/shr hides /usr/share/emacs/24.0.50/lisp/gnus/shr
~/repos/el/gnus/lisp/sieve hides /usr/share/emacs/24.0.50/lisp/gnus/sieve
~/repos/el/gnus/lisp/shr-color hides /usr/share/emacs/24.0.50/lisp/gnus/shr-color
~/repos/el/gnus/lisp/score-mode hides /usr/share/emacs/24.0.50/lisp/gnus/score-mode
~/repos/el/gnus/lisp/rtree hides /usr/share/emacs/24.0.50/lisp/gnus/rtree
~/repos/el/gnus/lisp/rfc2231 hides /usr/share/emacs/24.0.50/lisp/gnus/rfc2231
~/repos/el/gnus/lisp/rfc2104 hides /usr/share/emacs/24.0.50/lisp/gnus/rfc2104
~/repos/el/gnus/lisp/rfc2047 hides /usr/share/emacs/24.0.50/lisp/gnus/rfc2047
~/repos/el/gnus/lisp/rfc2045 hides /usr/share/emacs/24.0.50/lisp/gnus/rfc2045
~/repos/el/gnus/lisp/rfc1843 hides /usr/share/emacs/24.0.50/lisp/gnus/rfc1843
~/repos/el/gnus/lisp/qp hides /usr/share/emacs/24.0.50/lisp/gnus/qp
~/repos/el/gnus/lisp/proto-stream hides /usr/share/emacs/24.0.50/lisp/gnus/proto-stream
~/repos/el/gnus/lisp/pop3 hides /usr/share/emacs/24.0.50/lisp/gnus/pop3
~/repos/el/gnus/lisp/nnvirtual hides /usr/share/emacs/24.0.50/lisp/gnus/nnvirtual
~/repos/el/gnus/lisp/nnweb hides /usr/share/emacs/24.0.50/lisp/gnus/nnweb
~/repos/el/gnus/lisp/nntp hides /usr/share/emacs/24.0.50/lisp/gnus/nntp
~/repos/el/gnus/lisp/nnrss hides /usr/share/emacs/24.0.50/lisp/gnus/nnrss
~/repos/el/gnus/lisp/nnregistry hides /usr/share/emacs/24.0.50/lisp/gnus/nnregistry
~/repos/el/gnus/lisp/nnspool hides /usr/share/emacs/24.0.50/lisp/gnus/nnspool
~/repos/el/gnus/lisp/nnoo hides /usr/share/emacs/24.0.50/lisp/gnus/nnoo
~/repos/el/gnus/lisp/nnml hides /usr/share/emacs/24.0.50/lisp/gnus/nnml
~/repos/el/gnus/lisp/nnnil hides /usr/share/emacs/24.0.50/lisp/gnus/nnnil
~/repos/el/gnus/lisp/nnmairix hides /usr/share/emacs/24.0.50/lisp/gnus/nnmairix
~/repos/el/gnus/lisp/nnmh hides /usr/share/emacs/24.0.50/lisp/gnus/nnmh
~/repos/el/gnus/lisp/nnmbox hides /usr/share/emacs/24.0.50/lisp/gnus/nnmbox
~/repos/el/gnus/lisp/nnmail hides /usr/share/emacs/24.0.50/lisp/gnus/nnmail
~/repos/el/gnus/lisp/nnmaildir hides /usr/share/emacs/24.0.50/lisp/gnus/nnmaildir
~/repos/el/gnus/lisp/nnir hides /usr/share/emacs/24.0.50/lisp/gnus/nnir
~/repos/el/gnus/lisp/nnimap hides /usr/share/emacs/24.0.50/lisp/gnus/nnimap
~/repos/el/gnus/lisp/nnheader hides /usr/share/emacs/24.0.50/lisp/gnus/nnheader
~/repos/el/gnus/lisp/nnfolder hides /usr/share/emacs/24.0.50/lisp/gnus/nnfolder
~/repos/el/gnus/lisp/nneething hides /usr/share/emacs/24.0.50/lisp/gnus/nneething
~/repos/el/gnus/lisp/nngateway hides /usr/share/emacs/24.0.50/lisp/gnus/nngateway
~/repos/el/gnus/lisp/nndoc hides /usr/share/emacs/24.0.50/lisp/gnus/nndoc
~/repos/el/gnus/lisp/nndraft hides /usr/share/emacs/24.0.50/lisp/gnus/nndraft
~/repos/el/gnus/lisp/nndir hides /usr/share/emacs/24.0.50/lisp/gnus/nndir
~/repos/el/gnus/lisp/nndiary hides /usr/share/emacs/24.0.50/lisp/gnus/nndiary
~/repos/el/gnus/lisp/nnagent hides /usr/share/emacs/24.0.50/lisp/gnus/nnagent
~/repos/el/gnus/lisp/nnbabyl hides /usr/share/emacs/24.0.50/lisp/gnus/nnbabyl
~/repos/el/gnus/lisp/mm-view hides /usr/share/emacs/24.0.50/lisp/gnus/mm-view
~/repos/el/gnus/lisp/mm-uu hides /usr/share/emacs/24.0.50/lisp/gnus/mm-uu
~/repos/el/gnus/lisp/mm-partial hides /usr/share/emacs/24.0.50/lisp/gnus/mm-partial
~/repos/el/gnus/lisp/mm-util hides /usr/share/emacs/24.0.50/lisp/gnus/mm-util
~/repos/el/gnus/lisp/mm-url hides /usr/share/emacs/24.0.50/lisp/gnus/mm-url
~/repos/el/gnus/lisp/mml-smime hides /usr/share/emacs/24.0.50/lisp/gnus/mml-smime
~/repos/el/gnus/lisp/mml hides /usr/share/emacs/24.0.50/lisp/gnus/mml
~/repos/el/gnus/lisp/mml-sec hides /usr/share/emacs/24.0.50/lisp/gnus/mml-sec
~/repos/el/gnus/lisp/mml2015 hides /usr/share/emacs/24.0.50/lisp/gnus/mml2015
~/repos/el/gnus/lisp/mm-extern hides /usr/share/emacs/24.0.50/lisp/gnus/mm-extern
~/repos/el/gnus/lisp/mml1991 hides /usr/share/emacs/24.0.50/lisp/gnus/mml1991
~/repos/el/gnus/lisp/mm-encode hides /usr/share/emacs/24.0.50/lisp/gnus/mm-encode
~/repos/el/gnus/lisp/mm-decode hides /usr/share/emacs/24.0.50/lisp/gnus/mm-decode
~/repos/el/gnus/lisp/mm-bodies hides /usr/share/emacs/24.0.50/lisp/gnus/mm-bodies
~/repos/el/gnus/lisp/message hides /usr/share/emacs/24.0.50/lisp/gnus/message
~/repos/el/gnus/lisp/legacy-gnus-agent hides /usr/share/emacs/24.0.50/lisp/gnus/legacy-gnus-agent
~/repos/el/gnus/lisp/messcompat hides /usr/share/emacs/24.0.50/lisp/gnus/messcompat
~/repos/el/gnus/lisp/mail-source hides /usr/share/emacs/24.0.50/lisp/gnus/mail-source
~/repos/el/gnus/lisp/mail-prsvr hides /usr/share/emacs/24.0.50/lisp/gnus/mail-prsvr
~/repos/el/gnus/lisp/mail-parse hides /usr/share/emacs/24.0.50/lisp/gnus/mail-parse
~/repos/el/gnus/lisp/mailcap hides /usr/share/emacs/24.0.50/lisp/gnus/mailcap
~/repos/el/gnus/lisp/gravatar hides /usr/share/emacs/24.0.50/lisp/gnus/gravatar
~/repos/el/gnus/lisp/ietf-drums hides /usr/share/emacs/24.0.50/lisp/gnus/ietf-drums
~/repos/el/gnus/lisp/html2text hides /usr/share/emacs/24.0.50/lisp/gnus/html2text
~/repos/el/gnus/lisp/gnus-vm hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-vm
~/repos/el/gnus/lisp/gnus-win hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-win
~/repos/el/gnus/lisp/gnus-uu hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-uu
~/repos/el/gnus/lisp/gnus-sum hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-sum
~/repos/el/gnus/lisp/gnus-util hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-util
~/repos/el/gnus/lisp/gnus-topic hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-topic
~/repos/el/gnus/lisp/gnus-undo hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-undo
~/repos/el/gnus/lisp/gnus-sync hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-sync
~/repos/el/gnus/lisp/gnus-start hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-start
~/repos/el/gnus/lisp/gnus-srvr hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-srvr
~/repos/el/gnus/lisp/gnus-sieve hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-sieve
~/repos/el/gnus/lisp/gnus-score hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-score
~/repos/el/gnus/lisp/gnus-spec hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-spec
~/repos/el/gnus/lisp/gnus-salt hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-salt
~/repos/el/gnus/lisp/gnus-setup hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-setup
~/repos/el/gnus/lisp/gnus-registry hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-registry
~/repos/el/gnus/lisp/gnus-picon hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-picon
~/repos/el/gnus/lisp/gnus-msg hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-msg
~/repos/el/gnus/lisp/gnus-range hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-range
~/repos/el/gnus/lisp/gnus-mlspl hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-mlspl
~/repos/el/gnus/lisp/gnus-ml hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-ml
~/repos/el/gnus/lisp/gnus-mh hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-mh
~/repos/el/gnus/lisp/gnus-int hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-int
~/repos/el/gnus/lisp/gnus-logic hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-logic
~/repos/el/gnus/lisp/gnus-kill hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-kill
~/repos/el/gnus/lisp/gnus-group hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-group
~/repos/el/gnus/lisp/gnus-html hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-html
~/repos/el/gnus/lisp/gnus-gravatar hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-gravatar
~/repos/el/gnus/lisp/gnus-fun hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-fun
~/repos/el/gnus/lisp/gnus-ems hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-ems
~/repos/el/gnus/lisp/gnus-draft hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-draft
~/repos/el/gnus/lisp/gnus-dup hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-dup
~/repos/el/gnus/lisp/gnus hides /usr/share/emacs/24.0.50/lisp/gnus/gnus
~/repos/el/gnus/lisp/gnus-eform hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-eform
~/repos/el/gnus/lisp/gnus-diary hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-diary
~/repos/el/gnus/lisp/gnus-dired hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-dired
~/repos/el/gnus/lisp/gnus-demon hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-demon
~/repos/el/gnus/lisp/gnus-delay hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-delay
~/repos/el/gnus/lisp/gnus-cus hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-cus
~/repos/el/gnus/lisp/gnus-cite hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-cite
~/repos/el/gnus/lisp/gnus-cache hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-cache
~/repos/el/gnus/lisp/gnus-bookmark hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-bookmark
~/repos/el/gnus/lisp/gnus-async hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-async
~/repos/el/gnus/lisp/gnus-bcklg hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-bcklg
~/repos/el/gnus/lisp/gnus-agent hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-agent
~/repos/el/gnus/lisp/gnus-art hides /usr/share/emacs/24.0.50/lisp/gnus/gnus-art
~/repos/el/gnus/lisp/deuglify hides /usr/share/emacs/24.0.50/lisp/gnus/deuglify
~/repos/el/gnus/lisp/gmm-utils hides /usr/share/emacs/24.0.50/lisp/gnus/gmm-utils
~/repos/el/gnus/lisp/flow-fill hides /usr/share/emacs/24.0.50/lisp/gnus/flow-fill
~/repos/el/gnus/lisp/ecomplete hides /usr/share/emacs/24.0.50/lisp/gnus/ecomplete
~/repos/el/gnus/lisp/compface hides /usr/share/emacs/24.0.50/lisp/gnus/compface
~/repos/el/gnus/lisp/canlock hides /usr/share/emacs/24.0.50/lisp/gnus/canlock
~/repos/el/gnus/lisp/auth-source hides /usr/share/emacs/24.0.50/lisp/gnus/auth-source
~/repos/el/gnus/lisp/.dir-locals hides /usr/share/emacs/24.0.50/lisp/gnus/.dir-locals
~/repos/el/gnus/lisp/time-date hides /usr/share/emacs/24.0.50/lisp/calendar/time-date
~/repos/el/gnus/lisp/parse-time hides /usr/share/emacs/24.0.50/lisp/calendar/parse-time
~/repos/el/gnus/lisp/pgg-pgp hides /usr/share/emacs/24.0.50/lisp/obsolete/pgg-pgp
~/repos/el/gnus/lisp/pgg-pgp5 hides /usr/share/emacs/24.0.50/lisp/obsolete/pgg-pgp5
~/repos/el/gnus/lisp/pgg-parse hides /usr/share/emacs/24.0.50/lisp/obsolete/pgg-parse
~/repos/el/gnus/lisp/pgg-gpg hides /usr/share/emacs/24.0.50/lisp/obsolete/pgg-gpg
~/repos/el/gnus/lisp/pgg hides /usr/share/emacs/24.0.50/lisp/obsolete/pgg
~/repos/el/gnus/lisp/pgg-def hides /usr/share/emacs/24.0.50/lisp/obsolete/pgg-def

Features:
(shadow emacsbug canlock sha1 hex-util bbdb-gui hippie-exp skeleton
mailalias smtpmail newcomment qp mule-util xgit-dvc xgit xgit-annotate
dvc-annotate xgit-log tla smerge-mode dvc-state dvc-config dvc-diff
dvc-fileinfo diff tla-gnus dvc-gnus dvc-cmenu dvc-about dvc-version
dvc-revlist bzr-core tla-core tla-autoconf tla-defs dvc-log vc
vc-dispatcher dvc-unified dvc-tips ediff-merg ediff-diff ediff-wind
ediff-help ediff-util ediff-mult ediff-init ediff xdarcs-core xgit-core
xhg-core xmtn-minimal sort smiley ansi-color gnus-cite gnus-async
gnus-bcklg gnus-ml nndraft nnmh utf-7 rot13 nnimap parse-time utf7 nnml
bbdb-gnus bbdb-snarf nnnil gnus-agent gnus-srvr gnus-score score-mode
nnvirtual gnus-cache gnus-demon nntp proto-stream starttls spam
spam-stat bbdb-com gnus-uu yenc gnus-msg gnus-gravatar mail-extr
gnus-art mm-uu mml2015 mm-view smime password-cache dig gravatar
gnus-topic gnus-registry nnir gnus-sum macroexp nnoo gnus-group
gnus-undo nnmail mail-source th-private gnus-start gnus-spec gnus-int
gnus-range gnus-win eldoc go-mode-load flymake greqlscript-mode
greql-mode tg-mode generic th-latex paredit dvc-autoloads dvc-core
dvc-lisp dvc-buffers dvc-ui dvc-register dvc-utils dvc-emacs ewoc
dvc-defs dvc-site magit diff-mode log-edit pcvs-util add-log
magit-key-mode epa-file epa epg epg-config wtf cus-edit cus-start
cus-load rdictcc org-location-google-maps google-maps google-maps-static
google-maps-geocode google-maps-base json org-google-weather format-spec
google-weather xml url-cache org-beamer solar cal-dst holidays
hol-loaddefs appt diary-lib diary-loaddefs vc-git hl-line org-w3m
org-irc org-jsinfo org-infojs org-html org-exp ob-exp org-exp-blocks
org-info org-gnus org-docview org-bibtex org-bbdb org-protocol
org-attach org-id org-agenda org ob-emacs-lisp ob-tangle ob-ref ob-lob
ob-table org-footnote org-src ob-comint ob-keys ob ob-eval org-complete
pcomplete org-list org-faces org-compat org-entities org-macs time-date
org-install cal-menu calendar cal-loaddefs dired-x dired-aux
highlight-symbol hi-lock th-boxquote boxquote rect ecomplete message
idna sendmail rfc822 mml mml-sec mm-decode mm-bodies mm-encode
mailabbrev gmm-utils mailheader info server auto-complete-config
auto-complete popup yasnippet dropdown-list help-mode view disp-table
noutline outline browse-kill-ring derived recentf tree-widget
sr-speedbar speedbar sb-image ezimage dframe assoc anything-config
warnings compile comint ring browse-url semantic/util-modes
semantic/util semantic semantic/tag semantic/lex semantic/fw eieio
byte-opt bytecomp byte-compile mode-local cedet imenu bookmark pp
easymenu rx ffap thingatpt anything window-number easy-mmode uniquify
subword saveplace savehist paren lusty-explorer dired cl edmacro kmacro
advice help-fns advice-preload th-common mm-url gnus gnus-ems nnheader
mail-utils wid-edit url-http tls url url-proxy url-privacy url-expand
url-methods url-history mailcap url-auth mail-parse rfc2231 rfc2047
rfc2045 ietf-drums url-cookie url-util url-parse auth-source netrc
gnus-util url-gw url-vars mm-util mail-prsvr windmove gnus-load
site-gentoo preview-latex bbdb-autoloads bbdb regexp-opt timezone
tex-site auto-loads tooltip ediff-hook vc-hooks lisp-float-type mwheel
x-win x-dnd tool-bar dnd fontset image fringe lisp-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 loaddefs button
minibuffer faces cus-face files text-properties overlay md5 base64
format env code-pages mule custom widget hashtable-print-readable
backquote make-network-process dbusbind dynamic-setting
font-render-setting x multi-tty emacs)





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

* bug#7722: 24.0.50; Finding this C++ header file drops emacs into a infinite loop
  2010-12-24  8:28 bug#7722: 24.0.50; Finding this C++ header file drops emacs into a infinite loop Tassilo Horn
@ 2011-01-22 20:37 ` Chong Yidong
  2011-01-27  0:55   ` Chong Yidong
  2011-02-04 22:22   ` Alan Mackenzie
  0 siblings, 2 replies; 9+ messages in thread
From: Chong Yidong @ 2011-01-22 20:37 UTC (permalink / raw)
  To: Alan Mackenzie; +Cc: 7722, Tassilo Horn

[-- Attachment #1: Type: text/plain, Size: 1732 bytes --]

Tassilo Horn <tassilo@member.fsf.org> writes:

> Orininally reported by Caligo <iteronvexor@gmail.com>
>
> He uses GNU Emacs 23.2.1 (x86_64-pc-linux-gnu, GTK+ Version 2.20.1),
> but the bug in still in the current bzr trunk.
>
> 1. emacs -Q bug.hpp
> 2. emacs loops infinitely using 100% CPU resources
>
> The offending file is that (according to the original reporter, the
> spaces and empty lines are needed):

I can reproduce this (file attached for convenience).  Alan, could you
take a look?  Looks like a loop in c-forward-<>-arglist-recur:

Lisp Backtrace:
"c-forward-<>-arglist-recur" (0xffff4528)
"c-forward-<>-arglist-recur" (0xffff4708)
"c-forward-<>-arglist-recur" (0xffff48e8)
"c-forward-<>-arglist-recur" (0xffff4ac8)
"c-forward-<>-arglist-recur" (0xffff4ca8)
"c-forward-<>-arglist-recur" (0xffff4e88)
"c-forward-<>-arglist-recur" (0xffff5068)
"c-forward-<>-arglist-recur" (0xffff5248)
"c-forward-<>-arglist-recur" (0xffff5428)
"c-forward-<>-arglist-recur" (0xffff5608)
"c-forward-<>-arglist-recur" (0xffff57e8)
"c-forward-<>-arglist-recur" (0xffff59c8)
"c-forward-<>-arglist-recur" (0xffff5ba8)
"c-forward-<>-arglist-recur" (0xffff5d88)
"byte-code" (0xffff5e60)
"c-forward-<>-arglist" (0xffff6208)
---Type <return> to continue, or q <return> to quit---
"c-forward-name" (0xffff63e8)
"c-forward-type" (0xffff65c8)
"c-forward-decl-or-cast-1" (0xffff67f8)
0xee3c20 PVEC_COMPILED
"c-find-decl-spots" (0xffff6bb8)
"c-font-lock-declarations" (0xffff6dd8)
"font-lock-fontify-keywords-region" (0xffff6fc8)
"font-lock-default-fontify-region" (0xffff7198)
"font-lock-fontify-region" (0xffff7440)
"run-hook-with-args" (0xffff7438)
"byte-code" (0xffff7520)
"jit-lock-fontify-now" (0xffff7938)
"jit-lock-function" (0xffff7cc8)




[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #2: bug.hpp --]
[-- Type: text/x-c++hdr, Size: 590 bytes --]















































class ConversionConsole : public QWidget{


private:
  typedef boost::array<InputLine, 22> InputLines;



























  typedef cons<XYZ, cons<xyY, cons<Lab, cons<LCHab, cons<Luv, cons<LCHuv,
          cons<AdobeRGB, cons<AppleRGB, cons<BestRGB, cons<BetaRGB,
  	  cons<BruceRGB, cons<CIERGB, cons<ColorMatchRGB, cons<DonRGB4,
  	  cons<ECIRGB, cons<EktaSpacePS5, cons<NTSCRGB, cons<PAL_SECAMRGB,
  	  cons<ProPhotoRGB, cons<SMPTE_CRGB, cons<sRGB, cons<WideGamutRGB
  	  > > > > > > > > > > > > > > > > > > > > > > ColorSpaces;

};

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

* bug#7722: 24.0.50; Finding this C++ header file drops emacs into a infinite loop
  2011-01-22 20:37 ` Chong Yidong
@ 2011-01-27  0:55   ` Chong Yidong
  2011-01-30 21:23     ` Daniel Colascione
  2011-02-04 22:22   ` Alan Mackenzie
  1 sibling, 1 reply; 9+ messages in thread
From: Chong Yidong @ 2011-01-27  0:55 UTC (permalink / raw)
  To: Alan Mackenzie; +Cc: 7722, Tassilo Horn

Chong Yidong <cyd@stupidchicken.com> writes:

>> 1. emacs -Q bug.hpp
>> 2. emacs loops infinitely using 100% CPU resources
>>
>> The offending file is that (according to the original reporter, the
>> spaces and empty lines are needed):
>
> I can reproduce this (file attached for convenience).  Alan, could you
> take a look?  Looks like a loop in c-forward-<>-arglist-recur:

In the meantime, I have added the following hack/workaround to the
emacs-23 branch, which seems to break the loop.  Let me know if you find
a fix that's safer (since we are well into the 23.3 pretest).

*** lisp/progmodes/cc-engine.el	2011-01-02 23:50:46 +0000
--- lisp/progmodes/cc-engine.el	2011-01-27 00:49:22 +0000
***************
*** 4393,4398 ****
--- 4393,4400 ----
        (goto-char safe-pos)
        t)))
  
+ (defvar c-forward-<>-arglist-recur-depth)
+ 
  (defun c-forward-<>-arglist (all-types)
    ;; The point is assumed to be at a "<".  Try to treat it as the open
    ;; paren of an angle bracket arglist and move forward to the
***************
*** 4418,4424 ****
  	;; If `c-record-type-identifiers' is set then activate
  	;; recording of any found types that constitute an argument in
  	;; the arglist.
! 	(c-record-found-types (if c-record-type-identifiers t)))
      (if (catch 'angle-bracket-arglist-escape
  	  (setq c-record-found-types
  		(c-forward-<>-arglist-recur all-types)))
--- 4420,4427 ----
  	;; If `c-record-type-identifiers' is set then activate
  	;; recording of any found types that constitute an argument in
  	;; the arglist.
! 	(c-record-found-types (if c-record-type-identifiers t))
! 	(c-forward-<>-arglist-recur--depth 0))
      (if (catch 'angle-bracket-arglist-escape
  	  (setq c-record-found-types
  		(c-forward-<>-arglist-recur all-types)))
***************
*** 4434,4439 ****
--- 4437,4450 ----
        nil)))
  
  (defun c-forward-<>-arglist-recur (all-types)
+ 
+   ;; Temporary workaround for Bug#7722.
+   (when (boundp 'c-forward-<>-arglist-recur--depth)
+     (if (> c-forward-<>-arglist-recur--depth 100)
+ 	(error "Max recursion depth reached in <> arglist")
+       (setq c-forward-<>-arglist-recur--depth
+ 	    (1+ c-forward-<>-arglist-recur--depth))))
+ 
    ;; Recursive part of `c-forward-<>-arglist'.
    ;;
    ;; This function might do hidden buffer changes.






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

* bug#7722: 24.0.50; Finding this C++ header file drops emacs into a infinite loop
  2011-01-27  0:55   ` Chong Yidong
@ 2011-01-30 21:23     ` Daniel Colascione
  0 siblings, 0 replies; 9+ messages in thread
From: Daniel Colascione @ 2011-01-30 21:23 UTC (permalink / raw)
  To: Chong Yidong; +Cc: 7722, Tassilo Horn

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 1/26/11 4:55 PM, Chong Yidong wrote:
> Chong Yidong <cyd@stupidchicken.com> writes:
> 
>>> 1. emacs -Q bug.hpp
>>> 2. emacs loops infinitely using 100% CPU resources
>>>
>>> The offending file is that (according to the original reporter, the
>>> spaces and empty lines are needed):
>>
>> I can reproduce this (file attached for convenience).  Alan, could you
>> take a look?  Looks like a loop in c-forward-<>-arglist-recur:
> 
> In the meantime, I have added the following hack/workaround to the
> emacs-23 branch, which seems to break the loop.  Let me know if you find
> a fix that's safer (since we are well into the 23.3 pretest).

Incidentally, I can't reproduce the problem with the trunk cc-mode.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.11 (Darwin)

iEYEARECAAYFAk1F1soACgkQ17c2LVA10VvtFACgi2KuRCq9m15aDx44xGtVTYGB
Z3AAnjuVGnWv1P6gz4vItI5HOoSiVcMw
=Emh5
-----END PGP SIGNATURE-----





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

* bug#7722: 24.0.50; Finding this C++ header file drops emacs into a infinite loop
  2011-01-22 20:37 ` Chong Yidong
  2011-01-27  0:55   ` Chong Yidong
@ 2011-02-04 22:22   ` Alan Mackenzie
  2011-02-06 19:20     ` Tassilo Horn
  2011-02-12  1:25     ` Chong Yidong
  1 sibling, 2 replies; 9+ messages in thread
From: Alan Mackenzie @ 2011-02-04 22:22 UTC (permalink / raw)
  To: Chong Yidong; +Cc: 7722, Tassilo Horn

Hi there, Yidong, Tassilo,

On Sat, Jan 22, 2011 at 03:37:24PM -0500, Chong Yidong wrote:
> Tassilo Horn <tassilo@member.fsf.org> writes:

> > Originally reported by Caligo <iteronvexor@gmail.com>

> > He uses GNU Emacs 23.2.1 (x86_64-pc-linux-gnu, GTK+ Version 2.20.1),
> > but the bug in still in the current bzr trunk.

> > 1. emacs -Q bug.hpp
> > 2. emacs loops infinitely using 100% CPU resources

> > The offending file is that (according to the original reporter, the
> > spaces and empty lines are needed):

> I can reproduce this (file attached for convenience).  Alan, could you
> take a look?  Looks like a loop in c-forward-<>-arglist-recur:

It was indeed such a loop.  It was caused by a 500n jit-lock boundary
falling in the middle of a template construct, hence the "necessity" of
all the whitespace to reproduce the failure.

Here's a putative patch for the problem.  I've refactored the offending
function by replacing obscenely nested `if'-forms with a simple `cond'.
I've also removed some narrowing (to the 500n limit) which should help
jit-lock, hopefully without hurting too much elsewhere.

Tassilo, would you try out the patch, please, and let me know how it
goes.  Thanks!



=== modified file 'lisp/progmodes/cc-engine.el'
*** lisp/progmodes/cc-engine.el	2011-01-31 23:54:50 +0000
--- lisp/progmodes/cc-engine.el	2011-02-04 22:12:46 +0000
***************
*** 5455,5463 ****
  	    (goto-char start)
  	    nil))
  
!       (forward-char)
  
        (unless (looking-at c-<-op-cont-regexp)
  	(while (and
  		(progn
  		  (c-forward-syntactic-ws)
--- 5455,5465 ----
  	    (goto-char start)
  	    nil))
  
!       (forward-char) ; Forward over the opening '<'.
  
        (unless (looking-at c-<-op-cont-regexp)
+ 	;; go forward one non-alphanumeric character (group) per iteration of
+ 	;; this loop.
  	(while (and
  		(progn
  		  (c-forward-syntactic-ws)
***************
*** 5486,5492 ****
  			    (c-forward-type)
  			    (c-forward-syntactic-ws))))))
  
! 		  (setq pos (point))
  
  		  ;; Note: These regexps exploit the match order in \| so
  		  ;; that "<>" is matched by "<" rather than "[^>:-]>".
--- 5488,5494 ----
  			    (c-forward-type)
  			    (c-forward-syntactic-ws))))))
  
! 		  (setq pos (point))	; e.g. first token inside the '<'
  
  		  ;; Note: These regexps exploit the match order in \| so
  		  ;; that "<>" is matched by "<" rather than "[^>:-]>".
***************
*** 5522,5559 ****
  		  ;; Either an operator starting with '<' or a nested arglist.
  		  (setq pos (point))
  		  (let (id-start id-end subres keyword-match)
! 		    (if (if (looking-at c-<-op-cont-regexp)
! 			    (setq tmp (match-end 0))
! 			  (setq tmp pos)
! 			  (backward-char)
! 			  (not
! 			   (and
! 
! 			    (save-excursion
! 			      ;; There's always an identifier before an angle
! 			      ;; bracket arglist, or a keyword in
! 			      ;; `c-<>-type-kwds' or `c-<>-arglist-kwds'.
! 			      (c-backward-syntactic-ws)
! 			      (setq id-end (point))
! 			      (c-simple-skip-symbol-backward)
! 			      (when (or (setq keyword-match
! 					      (looking-at c-opt-<>-sexp-key))
! 					(not (looking-at c-keywords-regexp)))
! 				(setq id-start (point))))
! 
! 			    (setq subres
! 				  (let ((c-promote-possible-types t)
! 					(c-record-found-types t))
! 				    (c-forward-<>-arglist-recur
! 				     (and keyword-match
! 					  (c-keyword-member
! 					   (c-keyword-sym (match-string 1))
! 					   'c-<>-type-kwds)))))
! 			    )))
! 
! 			;; It was not an angle bracket arglist.
! 			(goto-char tmp)
! 
  		      ;; It was an angle bracket arglist.
  		      (setq c-record-found-types subres)
  
--- 5524,5558 ----
  		  ;; Either an operator starting with '<' or a nested arglist.
  		  (setq pos (point))
  		  (let (id-start id-end subres keyword-match)
! 		    (cond
! 		     ;; The '<' begins a multi-char operator.
! 		     ((looking-at c-<-op-cont-regexp)
! 		      (setq tmp (match-end 0))
! 		      (goto-char (match-end 0)))
! 		     ;; We're at a nested <.....>
! 		     ((progn
! 			(setq tmp pos)
! 			(backward-char)	; to the '<'
! 			(and
! 			 (save-excursion
! 			   ;; There's always an identifier before an angle
! 			   ;; bracket arglist, or a keyword in `c-<>-type-kwds'
! 			   ;; or `c-<>-arglist-kwds'.
! 			   (c-backward-syntactic-ws)
! 			   (setq id-end (point))
! 			   (c-simple-skip-symbol-backward)
! 			   (when (or (setq keyword-match
! 					   (looking-at c-opt-<>-sexp-key))
! 				     (not (looking-at c-keywords-regexp)))
! 			     (setq id-start (point))))
! 			 (setq subres
! 			       (let ((c-promote-possible-types t)
! 				     (c-record-found-types t))
! 				 (c-forward-<>-arglist-recur
! 				  (and keyword-match
! 				       (c-keyword-member
! 					(c-keyword-sym (match-string 1))
! 					'c-<>-type-kwds)))))))
  		      ;; It was an angle bracket arglist.
  		      (setq c-record-found-types subres)
  
***************
*** 5567,5574 ****
  				   (c-forward-syntactic-ws)
  				   (looking-at c-opt-identifier-concat-key)))
  			    (c-record-ref-id (cons id-start id-end))
! 			  (c-record-type-id (cons id-start id-end))))))
! 		  t)
  
  		 ((and (not c-restricted-<>-arglists)
  		       (or (and (eq (char-before) ?&)
--- 5566,5578 ----
  				   (c-forward-syntactic-ws)
  				   (looking-at c-opt-identifier-concat-key)))
  			    (c-record-ref-id (cons id-start id-end))
! 			  (c-record-type-id (cons id-start id-end)))))
! 
! 		     ;; At a "less than" operator.
! 		     (t
! 		      (forward-char)
! 		      )))
! 		  t)			; carry on looping.
  
  		 ((and (not c-restricted-<>-arglists)
  		       (or (and (eq (char-before) ?&)

=== modified file 'lisp/progmodes/cc-fonts.el'
*** lisp/progmodes/cc-fonts.el	2011-01-25 04:08:28 +0000
--- lisp/progmodes/cc-fonts.el	2011-02-04 22:10:01 +0000
***************
*** 1082,1088 ****
  	     (boundp 'parse-sexp-lookup-properties))))
  
        ;; Below we fontify a whole declaration even when it crosses the limit,
!       ;; to avoid gaps when lazy-lock fontifies the file a screenful at a
        ;; time.  That is however annoying during editing, e.g. the following is
        ;; a common situation while the first line is being written:
        ;;
--- 1082,1088 ----
  	     (boundp 'parse-sexp-lookup-properties))))
  
        ;; Below we fontify a whole declaration even when it crosses the limit,
!       ;; to avoid gaps when jit/lazy-lock fontifies the file a block at a
        ;; time.  That is however annoying during editing, e.g. the following is
        ;; a common situation while the first line is being written:
        ;;
***************
*** 1094,1102 ****
        ;; "some_other_variable" as an identifier, and the latter will not
        ;; correct itself until the second line is changed.  To avoid that we
        ;; narrow to the limit if the region to fontify is a single line.
!       (narrow-to-region
!        (point-min)
!        (if (<= limit (c-point 'bonl))
  	   (save-excursion
  	     ;; Narrow after any operator chars following the limit though,
  	     ;; since those characters can be useful in recognizing a
--- 1094,1102 ----
        ;; "some_other_variable" as an identifier, and the latter will not
        ;; correct itself until the second line is changed.  To avoid that we
        ;; narrow to the limit if the region to fontify is a single line.
!       (if (<= limit (c-point 'bonl))
! 	  (narrow-to-region
! 	   (point-min)
  	   (save-excursion
  	     ;; Narrow after any operator chars following the limit though,
  	     ;; since those characters can be useful in recognizing a
***************
*** 1104,1111 ****
  	     ;; after the header).
  	     (goto-char limit)
  	     (skip-chars-forward c-nonsymbol-chars)
! 	     (point))
! 	 limit))
  
        (c-find-decl-spots
         limit
--- 1104,1110 ----
  	     ;; after the header).
  	     (goto-char limit)
  	     (skip-chars-forward c-nonsymbol-chars)
! 	     (point))))
  
        (c-find-decl-spots
         limit




-- 
Alan Mackenzie (Nuremberg, Germany).





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

* bug#7722: 24.0.50; Finding this C++ header file drops emacs into a infinite loop
  2011-02-04 22:22   ` Alan Mackenzie
@ 2011-02-06 19:20     ` Tassilo Horn
  2011-02-12  1:25     ` Chong Yidong
  1 sibling, 0 replies; 9+ messages in thread
From: Tassilo Horn @ 2011-02-06 19:20 UTC (permalink / raw)
  To: Alan Mackenzie; +Cc: 7722, Chong Yidong

Alan Mackenzie <acm@muc.de> writes:

Hi Alan,

> Here's a putative patch for the problem.  I've refactored the
> offending function by replacing obscenely nested `if'-forms with a
> simple `cond'.  I've also removed some narrowing (to the 500n limit)
> which should help jit-lock, hopefully without hurting too much
> elsewhere.
>
> Tassilo, would you try out the patch, please, and let me know how it
> goes.  Thanks!

Seems to work fine.  I had no problems visiting that bad header file.

Bye,
Tassilo





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

* bug#7722: 24.0.50; Finding this C++ header file drops emacs into a infinite loop
  2011-02-04 22:22   ` Alan Mackenzie
  2011-02-06 19:20     ` Tassilo Horn
@ 2011-02-12  1:25     ` Chong Yidong
  2011-02-13 12:20       ` Alan Mackenzie
  1 sibling, 1 reply; 9+ messages in thread
From: Chong Yidong @ 2011-02-12  1:25 UTC (permalink / raw)
  To: Alan Mackenzie; +Cc: 7722, Tassilo Horn

Alan Mackenzie <acm@muc.de> writes:

> It was indeed such a loop.  It was caused by a 500n jit-lock boundary
> falling in the middle of a template construct, hence the "necessity" of
> all the whitespace to reproduce the failure.
>
> Here's a putative patch for the problem.  I've refactored the offending
> function by replacing obscenely nested `if'-forms with a simple `cond'.
> I've also removed some narrowing (to the 500n limit) which should help
> jit-lock, hopefully without hurting too much elsewhere.
>
> Tassilo, would you try out the patch, please, and let me know how it
> goes.  Thanks!

Thanks.  This patch doesn't apply cleanly to the emacs-23 branch.  Do
you think we could apply it to the trunk, and just use the workaround in
the branch (some of these logic changes don't look obvious to me)?





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

* bug#7722: 24.0.50; Finding this C++ header file drops emacs into a infinite loop
  2011-02-12  1:25     ` Chong Yidong
@ 2011-02-13 12:20       ` Alan Mackenzie
  2011-02-13 20:41         ` Chong Yidong
  0 siblings, 1 reply; 9+ messages in thread
From: Alan Mackenzie @ 2011-02-13 12:20 UTC (permalink / raw)
  To: Chong Yidong; +Cc: 7722, Tassilo Horn

Hi, Yidong!

On Fri, Feb 11, 2011 at 08:25:06PM -0500, Chong Yidong wrote:
> Alan Mackenzie <acm@muc.de> writes:

> > It was indeed such a loop.  It was caused by a 500n jit-lock boundary
> > falling in the middle of a template construct, hence the "necessity" of
> > all the whitespace to reproduce the failure.

> > Here's a putative patch for the problem.  I've refactored the offending
> > function by replacing obscenely nested `if'-forms with a simple `cond'.
> > I've also removed some narrowing (to the 500n limit) which should help
> > jit-lock, hopefully without hurting too much elsewhere.

> > Tassilo, would you try out the patch, please, and let me know how it
> > goes.  Thanks!

> Thanks.  This patch doesn't apply cleanly to the emacs-23 branch.

That surprises me.  Would you like me to rework the patch so that it
does?

> Do you think we could apply it to the trunk, and just use the
> workaround in the branch ....

To be honest, I haven't really looked at the workaround.  I suppose it
would be OK.  However, the patched version passed all the CC Mode
regression tests (which are about half indentation, half font-locking),
so I'm fairly confident about it.

> .... (some of these logic changes don't look obvious to me)?

One of the fixes was removing a `narrow-to-region' around the region
being fontified.  In a jit-lock 500-byte chunk, this had the effect of
cutting necessary context off the end.

The other change was basically to refactor, in which the infinite looping
disappeared in the wash.  Although I could get edebug going on this loop,
the source was just too complicated to be worthwhile trying to understand
in detail.  (Believe me, I tried.  :-)

Incidentally, I'm not getting mail from emacs-devel or bug-gnu-emacs at
the moment, and I've not got enough energy to do anything about it.  Do
you know anything specific which might be doing this to me?

-- 
Alan Mackenzie (Nuremberg, Germany).





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

* bug#7722: 24.0.50; Finding this C++ header file drops emacs into a infinite loop
  2011-02-13 12:20       ` Alan Mackenzie
@ 2011-02-13 20:41         ` Chong Yidong
  0 siblings, 0 replies; 9+ messages in thread
From: Chong Yidong @ 2011-02-13 20:41 UTC (permalink / raw)
  To: Alan Mackenzie; +Cc: 7722, Tassilo Horn

Alan Mackenzie <acm@muc.de> writes:

>> Thanks.  This patch doesn't apply cleanly to the emacs-23 branch.
>
> That surprises me.  Would you like me to rework the patch so that it
> does?

I took a stab at it, but I'm not familiar enough with the code to do the
job.  Here's an example of a mismatch.  In your patch, you have:

***************
*** 5486,5492 ****
                           (c-forward-type)
                           (c-forward-syntactic-ws))))))

!                 (setq pos (point))

                 ;; Note: These regexps exploit the match order in \| so
                 ;; that "<>" is matched by "<" rather than "[^>:-]>".
--- 5488,5494 ----
                           (c-forward-type)
                           (c-forward-syntactic-ws))))))

!                 (setq pos (point))    ; e.g. first token inside the '<'

                 ;; Note: These regexps exploit the match order in \| so
                 ;; that "<>" is matched by "<" rather than "[^>:-]>".


but in the branch, the relevant part of the code looks like this:

          ;; Must check for '>' at the very start separately,
          ;; since the regexp below has to avoid ">>" without
          ;; using \\=.
          (forward-char)
          t)

        ;; Note: These regexps exploit the match order in \| so
        ;; that "<>" is matched by "<" rather than "[^>:-]>".

This code was altered during Nathaniel Flath's changes for Java 5
support, back in July, which was (rightly) not committed to the branch:

  revno: 100951
  committer: Alan Mackenzie <acm@muc.de>
  branch nick: trunk
  timestamp: Sat 2010-07-31 20:01:08 +0000
  message:
  Enhance Java Mode to handle Java 5.0 (Tiger) and Java 6 (Mustang).
  Contributed by Nathaniel Flath.

Any suggestions? :-/





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

end of thread, other threads:[~2011-02-13 20:41 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-12-24  8:28 bug#7722: 24.0.50; Finding this C++ header file drops emacs into a infinite loop Tassilo Horn
2011-01-22 20:37 ` Chong Yidong
2011-01-27  0:55   ` Chong Yidong
2011-01-30 21:23     ` Daniel Colascione
2011-02-04 22:22   ` Alan Mackenzie
2011-02-06 19:20     ` Tassilo Horn
2011-02-12  1:25     ` Chong Yidong
2011-02-13 12:20       ` Alan Mackenzie
2011-02-13 20:41         ` Chong Yidong

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