Subject: bug#34260: 27.0.50; Emacs randomly hangs during redisplay

From: John Shahid <[email-masked]>
Date: Wed, 30 Jan 2019 15:32:29 -0500

I have updated to the latest master a while ago and since then my Emacs
have been acting weird and becomes unusable.  I tried to turn on
debug-on-quit but I Emacs is always inside redisplay when I hit C-g.
Almost always the stacktrace has somewhere a call to `message` which in
turn calls `redisplay` and it just hangs and consumes 100% of the cpu.
I tried to debug the proces using gdb and found out that Emacs is always
inside `redisplay_internal' when I stop it using `kill -TSTP emacs'.

Worth noting that this problem isn't predictable and is hard to
reproduce.  It also might be related to EXWM and commit `e567ac1495'.

> 436c225f1b * Unbreak the macOS NS build
> 957090b795 *   Merge from origin/emacs-26
>            |\
> c9f6f86814 | * Prevent redrawing if frame is garbaged
> 00ba2267ed | * Attempt to fix hangs on MS-Windows due to C-g
> e567ac1495 * | Run window change functions during redisplay

I reverted my local copy of Emacs to '470082de55: List lengths are
always fixnums now' and haven't ran into any issues since then.

Let me know how I can debug this issue further.  Would the display
engine trace help in this case ?  Emacs doesn't enter an infinite
recursion but from the CPU usage it is entering some sort of infinite
loop, but I can't figure out why.

In GNU Emacs 27.0.50 (build 4, x86_64-pc-linux-gnu, GTK+ Version 3.24.4)
 of 2019-01-30 built on amun
Repository revision: 1d804268c4656e9a7561a0bdff728d932ffd3812
Repository branch: wtf
Windowing system distributor 'The X.Org Foundation', version 11.0.12003000
System Description: Arch Linux

Recent messages:
Mark set
08bc407a228796b64e321cb28b38b39062ab1732
(New file)
Mark set
Starting new Ispell process /usr/bin/ispell with default dictionary...
Invalid face attribute :inherit mu4e-header-key-face [17 times]
Message modified; kill anyway? (y or n) y
[mu4e] Found 102 matching messages
Mark set
Quit
Quit
Configured using:
 'configure --prefix=/home/jvshahid/bin/emacs-27
 PKG_CONFIG_PATH=/home/jvshahid/.gvm/pkgsets/go1.11.1/global/overlay/lib/pkgconfig:'

Configured features:
XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS GLIB
NOTIFY INOTIFY ACL GNUTLS LIBXML2 FREETYPE M17N_FLT LIBOTF XFT ZLIB
TOOLKIT_SCROLL_BARS GTK3 X11 XDBE XIM THREADS LIBSYSTEMD JSON LCMS2 GMP

Important settings:
  value of $LC_COLLATE: en_US.UTF-8
  value of $LC_CTYPE: en_US.UTF-8
  value of $LC_MESSAGES: en_US.UTF-8
  value of $LC_MONETARY: en_US.UTF-8
  value of $LC_NUMERIC: en_US.UTF-8
  value of $LC_TIME: en_US.UTF-8
  value of $LANG: en_US.UTF-8
  locale-coding-system: utf-8-unix

Major mode: mu4e-headers

Minor modes in effect:
  recentf-mode: t
  hl-line-mode: t
  global-magit-file-mode: t
  diff-auto-refine-mode: t
  global-git-commit-mode: t
  shell-dirtrack-mode: t
  show-paren-mode: t
  display-battery-mode: t
  flx-ido-mode: t
  global-company-mode: t
  company-mode: t
  async-bytecomp-package-mode: t
  winner-mode: t
  global-auto-revert-mode: t
  savehist-mode: t
  display-time-mode: t
  direnv-mode: t
  projectile-mode: t
  straight-use-package-mode: t
  straight-package-neutering-mode: t
  tooltip-mode: t
  global-eldoc-mode: t
  mouse-wheel-mode: t
  file-name-shadow-mode: t
  auto-composition-mode: t
  auto-encryption-mode: t
  auto-compression-mode: t
  buffer-read-only: t
  column-number-mode: t
  line-number-mode: t
  transient-mark-mode: t
  auto-save-visited-mode: t

Load-path shadows:
/home/jvshahid/.emacs.d/straight/build/jsonrpc/jsonrpc hides /home/jvshahid/bin/emacs-27/share/emacs/27.0.50/lisp/jsonrpc
/home/jvshahid/.emacs.d/straight/build/flymake/flymake hides /home/jvshahid/bin/emacs-27/share/emacs/27.0.50/lisp/progmodes/flymake
/home/jvshahid/.emacs.d/straight/build/cl-lib/cl-lib hides /home/jvshahid/bin/emacs-27/share/emacs/27.0.50/lisp/emacs-lisp/cl-lib
/home/jvshahid/.emacs.d/straight/build/let-alist/let-alist hides /home/jvshahid/bin/emacs-27/share/emacs/27.0.50/lisp/emacs-lisp/let-alist
/home/jvshahid/.emacs.d/straight/build/seq/seq hides /home/jvshahid/bin/emacs-27/share/emacs/27.0.50/lisp/emacs-lisp/seq
/home/jvshahid/.emacs.d/straight/build/cl-generic/cl-generic hides /home/jvshahid/bin/emacs-27/share/emacs/27.0.50/lisp/emacs-lisp/cl-generic

Features:
(shadow sort emacsbug flyspell ispell supercite regi face-remap
cap-words superword subword cc-mode cc-fonts cc-guess cc-menus cc-cmds
cc-styles cc-align cc-engine cc-vars cc-defs tramp-archive tramp-gvfs
zeroconf dbus novice tabify pcmpl-unix image-file ffap filecache recentf
tree-widget helm-x-files helm-for-files helm-bookmark helm-adaptive
magit-bookmark bookmark helm-external helm-net xml url url-proxy
url-privacy url-expand url-methods url-history url-cookie url-domsuf
url-util woman man helm-man conf-mode mu4e desktop frameset
mu4e-speedbar mu4e-main mu4e-view cal-menu calendar cal-loaddefs
browse-url gnus-art mm-uu mml2015 mm-view mml-smime smime dig mailcap
gnus-sum gnus-group gnus-undo gnus-start gnus-cloud nnimap nnmail
mail-source utf7 netrc nnoo gnus-spec gnus-int gnus-range gnus-win gnus
nnheader wid-edit mu4e-headers mu4e-compose mu4e-context mu4e-draft
mu4e-actions rfc2368 smtpmail sendmail mu4e-mark mu4e-message flow-fill
mu4e-proc mu4e-utils doc-view image-mode mu4e-lists mu4e-vars hl-line
mu4e-meta mail-extr pp yaml-mode vc-git sh-script smie executable
bug-reference jka-compr eshell-z em-unix em-term term disp-table ehelp
em-script em-prompt em-ls em-hist em-pred em-glob em-dirs em-cmpl
em-basic em-banner em-alias esh-var esh-cmd esh-opt esh-io esh-ext
esh-proc esh-arg esh-groups eshell esh-module esh-mode esh-util
eieio-opt speedbar sb-image ezimage dframe help-fns misearch
multi-isearch files-x tramp-sh tramp-cache tramp tramp-loaddefs trampver
tramp-compat ucs-normalize parse-time windmove helm-command helm-elisp
helm-eval edebug backtrace helm-info helm-mode magit-extras
magit-submodule magit-obsolete magit-blame magit-stash magit-bisect
magit-push magit-pull magit-fetch magit-clone magit-remote magit-commit
magit-sequence magit-notes magit-worktree magit-tag magit-merge
magit-branch magit-reset magit-files magit-refs magit-status magit
magit-repos magit-apply magit-wip magit-log which-func imenu magit-diff
smerge-mode diff-mode magit-core magit-autorevert magit-process
magit-margin magit-mode git-commit magit-git magit-section magit-utils
magit-popup crm log-edit message rmc puny rfc822 mml mml-sec epa derived
epg gnus-util rmail rmail-loaddefs time-date mm-decode mm-bodies
mm-encode mail-parse rfc2231 rfc2047 rfc2045 mm-util ietf-drums
mail-prsvr mailabbrev mail-utils gmm-utils mailheader pcvs-util add-log
with-editor shell pcomplete dired-aux parinfer-ext paredit parinfer
ediff-merg ediff-wind ediff-diff ediff-mult ediff-help ediff-init
ediff-util ediff mode-local find-func parinferlib dired-x dired
dired-loaddefs paren battery cus-start cus-load flx-ido flx
floobits-autoloads highlight-autoloads arduino-mode-autoloads ede/auto
rust-mode-autoloads flycheck-clojure-autoloads cider-autoloads
sesman-autoloads spinner-autoloads queue-autoloads
clojure-mode-autoloads parinfer-autoloads paredit-autoloads
ginkgo-mode-autoloads go-rename-autoloads company-go-autoloads
go-eldoc-autoloads go-guru-autoloads go-mode-autoloads robe-autoloads
inf-ruby-autoloads rvm-autoloads eglot-autoloads flymake-autoloads
jsonrpc-autoloads company-oddmuse company-keywords company-etags etags
multifile generator xref project company-gtags company-dabbrev-code
company-dabbrev company-files company-capf company-cmake company-xcode
company-clang company-semantic company-eclim company-template
company-bbdb company company-autoloads emms-autoloads pianobar-autoloads
eshell-z-autoloads cl helm-config helm-easymenu async-bytecomp
helm-projectile helm-files helm-tags helm-buffers helm-grep helm-regexp
format-spec helm-utils helm-locate helm-help helm-types helm helm-source
eieio-compat helm-multi-match helm-lib advice async
helm-projectile-autoloads helm-autoloads helm-core-autoloads
popup-autoloads git-link-autoloads magit-autoloads magit-popup-autoloads
git-commit-autoloads exwm-randr xcb-randr exwm-config ido exwm
exwm-input xcb-keysyms xcb-xkb exwm-manage exwm-floating xcb-cursor
xcb-render exwm-layout exwm-workspace exwm-core xcb-ewmh xcb-icccm xcb
xcb-xproto xcb-types xcb-debug exwm-autoloads xelb-autoloads
cl-generic-autoloads tango-dark-theme server winner edmacro kmacro
autorevert filenotify savehist time direnv dash projectile grep ibuf-ext
ibuffer ibuffer-loaddefs direnv-autoloads with-editor-autoloads
async-autoloads edit-indirect-autoloads concourse-mode-autoloads
hierarchy-autoloads flx-ido-autoloads flx-autoloads wgrep-autoloads
flycheck-autoloads seq-autoloads let-alist-autoloads dash-autoloads
ace-window-autoloads avy-autoloads dockerfile-mode-autoloads s-autoloads
yasnippet-snippets-autoloads yasnippet-autoloads protobuf-mode-autoloads
markdown-mode-autoloads yaml-mode-autoloads etags-select-autoloads
projectile-autoloads pkg-info-autoloads epl-autoloads debbugs-autoloads
cl-lib-autoloads straight-autoloads rx compile comint ansi-color ring
cl-extra straight info autoload radix-tree lisp-mnt easy-mmode pcase
subr-x checkdoc thingatpt help-mode elec-pair mule-util finder-inf
package easymenu epg-config url-handlers url-parse auth-source cl-seq
eieio eieio-core cl-macs eieio-loaddefs password-cache json map url-vars
seq byte-opt gv bytecomp byte-compile cconv cl-loaddefs cl-lib 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 elisp-mode
lisp-mode prog-mode register page menu-bar rfn-eshadow isearch timer
select scroll-bar mouse jit-lock font-lock syntax facemenu font-core
term/tty-colors frame 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 minibuffer 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
system-font-setting font-render-setting move-toolbar gtk x-toolkit x
multi-tty make-network-process emacs)

Memory information:
((conses 16 1123477 636547)
 (symbols 48 61493 19)
 (strings 32 457169 87036)
 (string-bytes 1 21729363)
 (vectors 16 123050)
 (vector-slots 8 2723362 688044)
 (floats 8 792 4873)
 (intervals 56 23521 8702)
 (buffers 992 101))