Subject: bug#45041: 27.1; Emacs hangs if the cited message contains some specific text

From: Pratyush Yadav <[email-masked]>
Date: Fri, 4 Dec 2020 17:18:37 +0530

Hi,

I use Gnus to read from the NNTP server over at nntp.lore.kernel.org on
the group org.kernel.vger.git. When I opened one particular message on
the group today Emacs froze up completely. top reported 100% CPU usage
from it. This went on for a couple minutes until I hit C-g. The message
that triggered this has Message-id
<CAN05THQGqV4hP218hb3QXjJhQbbBCDRHgf=PAty=[email-masked]>
and subject "Re: [Wireshark-dev] [Outreachy] Internship blog 2020"

I dug around a bit and found out the problem comes from the function
gnus-cite-parse in the following line:

      (when (and (< guess-limit (+ begin gnus-cite-max-prefix))
         (looking-at gnus-supercite-regexp))

The call to looking-at seems to be the problem. gnus-supercite-regexp
is:

"^\\(\\([     ]*\\(\\w\\|[_.]\\)+>+\\|[     ]*[>|]\\)+\\)? *>>>>>
+\"\\([^\"\n]+\\)\" +=="

This call works fine for most lines but at the end there is the line:

"> ___________________________________________________________________________"

I wrapped this in quotes because it freezes up this buffer as well.

Is this a problem with my setup only or do other people see it as well?
What can I do to fix it?

Thanks.

In GNU Emacs 27.1 (build 1, x86_64-pc-linux-gnu, GTK+ Version 3.24.21,
cairo version 1.17.3)
 of 2020-08-11 built on pratyush
Repository revision: 86d8d76aa36037184db0b2897c434cdaab1a9ae8
Repository branch: makepkg
Windowing system distributor 'The X.Org Foundation', version 11.0.12010000
System Description: Arch Linux

Recent messages:
"../.newsrc-dribble" 3L, 3C written
Gnus auto-save file exists.  Do you want to read it? (y or n) n
Reading /home/pratyush/.newsrc.eld...
Generating the cache active file...done
Opening nnfolder server on archive...done
No new newsgroups
Checking new news...
Reading active file from archive via nnfolder...done
Reading active file via nndraft...done
Checking new news...done
Quit
Configured using:
 'configure --prefix=/usr --sysconfdir=/etc --libexecdir=/usr/lib
 --localstatedir=/var --mandir=/usr/share/man --with-gameuser=:games
 --with-sound=alsa --with-modules --without-gconf --without-gsettings
 --with-x-toolkit=gtk3 --without-xaw3d --without-m17n-flt --with-cairo
 --without-compress-install 'CFLAGS=-march=x86-64 -mtune=generic -O2
 -pipe -fno-plt -g -flto -g -flto -s -fuse-ld=gold'
 CPPFLAGS=-D_FORTIFY_SOURCE=2
 LDFLAGS=-Wl,-O1,--sort-common,--as-needed,-z,relro,-z,now'

Configured features:
XPM JPEG TIFF GIF PNG RSVG CAIRO SOUND GPM DBUS GLIB NOTIFY INOTIFY ACL
GNUTLS LIBXML2 FREETYPE HARFBUZZ LIBOTF ZLIB TOOLKIT_SCROLL_BARS GTK3
X11 XDBE XIM MODULES THREADS LIBSYSTEMD JSON PDUMPER LCMS2 GMP

Important settings:
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8

Major mode: Summary

Minor modes in effect:
  gnus-draft-mode: t
  projectile-mode: t
  global-hl-line-mode: t
  winner-mode: t
  smartparens-global-mode: t
  ws-butler-global-mode: t
  global-undo-fu-session-mode: t
  undo-fu-session-mode: t
  undo-fu-mode: t
  global-flycheck-mode: t
  gcmh-mode: t
  which-key-mode: t
  savehist-mode: t
  better-jumper-mode: t
  better-jumper-local-mode: t
  helm-descbinds-mode: t
  helm-mode: t
  helm-ff-cache-mode: t
  ivy-rich-mode: t
  async-bytecomp-package-mode: t
  ivy-mode: t
  evil-goggles-mode: t
  evil-escape-mode: t
  evil-snipe-override-mode: t
  evil-snipe-mode: t
  evil-snipe-override-local-mode: t
  evil-snipe-local-mode: t
  solaire-global-mode: t
  doom-modeline-mode: t
  company-tng-mode: t
  global-company-mode: t
  company-mode: t
  persp-mode: t
  shell-dirtrack-mode: t
  evil-mode: t
  evil-local-mode: t
  +popup-mode: t
  general-override-mode: t
  global-eldoc-mode: t
  electric-indent-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  global-font-lock-mode: t
  font-lock-mode: t
  window-divider-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
  transient-mark-mode: t

Load-path shadows:
/home/pratyush/.emacs.d/.local/straight/build-27.1/notmuch/notmuch-parser
hides /usr/share/emacs/site-lisp/notmuch-parser
/home/pratyush/.emacs.d/.local/straight/build-27.1/notmuch/notmuch
hides /usr/share/emacs/site-lisp/notmuch
/home/pratyush/.emacs.d/.local/straight/build-27.1/notmuch/notmuch-tree
hides /usr/share/emacs/site-lisp/notmuch-tree
/home/pratyush/.emacs.d/.local/straight/build-27.1/notmuch/notmuch-jump
hides /usr/share/emacs/site-lisp/notmuch-jump
/home/pratyush/.emacs.d/.local/straight/build-27.1/notmuch/notmuch-mua
hides /usr/share/emacs/site-lisp/notmuch-mua
/home/pratyush/.emacs.d/.local/straight/build-27.1/notmuch/notmuch-show
hides /usr/share/emacs/site-lisp/notmuch-show
/home/pratyush/.emacs.d/.local/straight/build-27.1/notmuch/notmuch-address
hides /usr/share/emacs/site-lisp/notmuch-address
/home/pratyush/.emacs.d/.local/straight/build-27.1/notmuch/notmuch-draft
hides /usr/share/emacs/site-lisp/notmuch-draft
/home/pratyush/.emacs.d/.local/straight/build-27.1/notmuch/notmuch-crypto
hides /usr/share/emacs/site-lisp/notmuch-crypto
/home/pratyush/.emacs.d/.local/straight/build-27.1/notmuch/notmuch-message
hides /usr/share/emacs/site-lisp/notmuch-message
/home/pratyush/.emacs.d/.local/straight/build-27.1/notmuch/notmuch-company
hides /usr/share/emacs/site-lisp/notmuch-company
/home/pratyush/.emacs.d/.local/straight/build-27.1/notmuch/notmuch-tag
hides /usr/share/emacs/site-lisp/notmuch-tag
/home/pratyush/.emacs.d/.local/straight/build-27.1/notmuch/notmuch-query
hides /usr/share/emacs/site-lisp/notmuch-query
/home/pratyush/.emacs.d/.local/straight/build-27.1/notmuch/notmuch-lib
hides /usr/share/emacs/site-lisp/notmuch-lib
/home/pratyush/.emacs.d/.local/straight/build-27.1/notmuch/notmuch-compat
hides /usr/share/emacs/site-lisp/notmuch-compat
/home/pratyush/.emacs.d/.local/straight/build-27.1/cmake-mode/cmake-mode
hides /usr/share/emacs/site-lisp/cmake-mode
/home/pratyush/.emacs.d/.local/straight/build-27.1/notmuch/notmuch-print
hides /usr/share/emacs/site-lisp/notmuch-print
/home/pratyush/.emacs.d/.local/straight/build-27.1/notmuch/coolj hides
/usr/share/emacs/site-lisp/coolj
/home/pratyush/.emacs.d/.local/straight/build-27.1/notmuch/notmuch-wash
hides /usr/share/emacs/site-lisp/notmuch-wash
/home/pratyush/.emacs.d/.local/straight/build-27.1/notmuch/notmuch-hello
hides /usr/share/emacs/site-lisp/notmuch-hello
/home/pratyush/.emacs.d/.local/straight/build-27.1/notmuch/notmuch-maildir-fcc
hides /usr/share/emacs/site-lisp/notmuch-maildir-fcc

Features:
(shadow sort whitespace vi-tilde-fringe display-line-numbers
doom-snippets doom-snippets-lib yasnippet face-remap flycheck-popup-tip
evil-collection-popup popup evil-collection-elisp-mode elisp-mode
spell-fu ispell mail-extr emacsbug sendmail gnus-draft gnus-ml
disp-table nndraft nnmh nnfolder projectile evil-collection-grep grep
ibuffer-vc ibuf-ext evil-collection-ibuffer ibuffer ibuffer-loaddefs
network-stream nsm gnus-agent gnus-srvr gnus-score score-mode nnvirtual
gnus-msg gnus-art mm-uu mml2015 mm-view mml-smime smime dig nntp
gnus-cache gnus-sum url url-proxy url-privacy url-expand url-methods
url-history mailcap shr url-cookie url-domsuf url-util url-parse
url-vars svg xml dom browse-url gnus-group gnus-undo nnnotmuch
gnus-start gnus-cloud nnimap nnmail mail-source utf7 netrc nnoo
gnus-spec gnus-int gnus-range message rmc puny rfc822 mml mml-sec
evil-collection-epa epa epg epg-config mm-decode mm-bodies mm-encode
mail-parse rfc2231 mailabbrev gmm-utils mailheader gnus-win
evil-collection-gnus gnus hl-line winner paren smartparens-config
smartparens-text smartparens ws-butler undo-fu-session undo-fu
evil-collection-flycheck flycheck find-func nnheader gnus-util rmail
rmail-loaddefs rfc2047 rfc2045 ietf-drums text-property-search
mail-utils mm-util mail-prsvr cursor-sensor amx gcmh
evil-collection-which-key which-key savehist better-jumper company-capf
helm-descbinds helm-mode helm-files tramp tramp-loaddefs trampver
tramp-integration files-x tramp-compat parse-time iso8601 time-date
ls-lisp auth-source password-cache json map helm-buffers helm-occur
helm-tags helm-locate helm-grep helm-regexp format-spec helm-types
evil-collection-ivy ivy-rich counsel xdg helm-xref helm-utils helm-help
helm async-bytecomp helm-global-bindings helm-source eieio-compat
helm-multi-match helm-lib async ivy-xref evil-collection-xref xref
project eieio evil-collection-dired dired dired-loaddefs
evil-collection-compile evil-collection-help evil-collection-custom
cus-edit cus-start cus-load wid-edit evil-collection-comint
evil-collection annalist compile swiper ivy delsel ivy-faces ivy-overlay
colir color evil-goggles pulse evil-easymotion evil-escape evil-snipe
server autorevert filenotify doom-themes-ext-org solaire-mode
doom-gruvbox-theme doom-themes doom-themes-base dtrt-indent
doom-modeline doom-modeline-segments doom-modeline-env
doom-modeline-core shrink-path f s all-the-icons all-the-icons-faces
data-material data-weathericons data-octicons data-fileicons
data-faicons data-alltheicons memoize dash company-tng php-extras
company kconfig-mode persp-mode smartparens-lua ibuf-macs evil
evil-integration evil-maps evil-commands reveal flyspell evil-jumps
evil-command-window evil-types evil-search shell pcomplete comint
ansi-color evil-macros evil-repeat evil-states evil-core advice
evil-common windmove thingatpt rect evil-digraphs evil-vars ring derived
core-editor core-projects core-ui edmacro kmacro easy-mmode
core-keybinds pp general cl-extra help-mode seq byte-opt cl-seq
use-package-core bytecomp byte-compile cconv core-modules eieio-core
eieio-loaddefs tex-site rx helm-easymenu easymenu core core-lib pcase
cl-macs gv cl-loaddefs cl-lib subr-x tooltip eldoc electric uniquify
ediff-hook vc-hooks lisp-float-type mwheel term/x-win x-win
term/common-win x-dnd tool-bar dnd fontset image regexp-opt fringe
tabulated-list replace newcomment text-mode lisp-mode prog-mode register
page tab-bar menu-bar rfn-eshadow isearch timer select scroll-bar mouse
jit-lock font-lock syntax facemenu font-core term/tty-colors frame
minibuffer cl-generic cham georgian utf-8-lang misc-lang vietnamese
tibetan thai tai-viet lao korean japanese eucjp-ms cp51932 hebrew greek
romanian slovak czech european ethiopic indian cyrillic chinese
composite charscript charprop case-table epa-hook jka-cmpr-hook help
simple abbrev obarray cl-preloaded 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
threads dbusbind inotify lcms2 dynamic-setting font-render-setting cairo
move-toolbar gtk x-toolkit x multi-tty make-network-process emacs)

Memory information:
((conses 16 533531 346037)
 (symbols 48 40116 24)
 (strings 32 248430 28927)
 (string-bytes 1 5107019)
 (vectors 16 57146)
 (vector-slots 8 1387624 72918)
 (floats 8 1094 533)
 (intervals 56 1561 181)
 (buffers 1000 25))

-- 
Regards,
Pratyush Yadav