This happens when editing tex files in a shared folder, after others have changed the tex file. Emacs is stuck in an endless loop and keep prompting if the user wants to save the current buffer. However, answering the prompt does not get one out of the loop, and eventually emacs freezes and has to be killed or outright crashes.
System information:
MacOS 26.4 Tahoe/ Emacs 30.2
To reproduce:
- start Emacs via
emacs -Q
- load
auctex and procress
- create a .tex file (say main.tex)
- edit main.tex in another program.
- Emacs now gets trapped in a loop
Here's a backtrace of the stack when the error happens. I've lowered max-lisp-eval-depth to catch the error message.
Debugger entered--Lisp error: (excessive-lisp-nesting 101)
TeX-in-comment()
(not (TeX-in-comment))
(if (not (TeX-in-comment)) (setq answer (nth 1 (car entry))))
(if (re-search-forward (nth 2 (car entry)) 10000 t) (if (not (TeX-in-comment)) (setq answer (nth 1 (car entry)))) (setq entry (cdr entry)))
(while (and entry (not answer)) (if (re-search-forward (nth 2 (car entry)) 10000 t) (if (not (TeX-in-comment)) (setq answer (nth 1 (car entry)))) (setq entry (cdr entry))))
(let ((comment-start-skip (concat "\\(\\(^\\|[^\\\n]\\)\\(" (regexp-quote TeX-esc) (regexp-quote TeX-esc) "\\)*\\)\\(%+ *\\)")) (entry TeX-format-list) answer case-fold-search) (while (and entry (not answer)) (if (re-search-forward (nth 2 (car entry)) 10000 t) (if (not (TeX-in-comment)) (setq answer (nth 1 (car entry)))) (setq entry (cdr entry)))) (if answer answer TeX-default-mode))
(save-excursion (goto-char (point-min)) (let ((comment-start-skip (concat "\\(\\(^\\|[^\\\n]\\)\\(" (regexp-quote TeX-esc) (regexp-quote TeX-esc) "\\)*\\)\\(%+ *\\)")) (entry TeX-format-list) answer case-fold-search) (while (and entry (not answer)) (if (re-search-forward (nth 2 (car entry)) 10000 t) (if (not (TeX-in-comment)) (setq answer (nth 1 (car entry)))) (setq entry (cdr entry)))) (if answer answer TeX-default-mode)))
(if (or (equal (buffer-size) 0) TeX-force-default-mode) TeX-default-mode (save-excursion (goto-char (point-min)) (let ((comment-start-skip (concat "\\(\\(^\\|[^\\\n]\\)\\(" (regexp-quote TeX-esc) (regexp-quote TeX-esc) "\\)*\\)\\(%+ *\\)")) (entry TeX-format-list) answer case-fold-search) (while (and entry (not answer)) (if (re-search-forward (nth 2 (car entry)) 10000 t) (if (not (TeX-in-comment)) (setq answer (nth 1 ...))) (setq entry (cdr entry)))) (if answer answer TeX-default-mode))))
(funcall (if (or (equal (buffer-size) 0) TeX-force-default-mode) TeX-default-mode (save-excursion (goto-char (point-min)) (let ((comment-start-skip (concat "\\(\\(^\\|[^\\\n]\\)\\(" (regexp-quote TeX-esc) (regexp-quote TeX-esc) "\\)*\\)\\(%+ *\\)")) (entry TeX-format-list) answer case-fold-search) (while (and entry (not answer)) (if (re-search-forward (nth 2 ...) 10000 t) (if (not ...) (setq answer ...)) (setq entry (cdr entry)))) (if answer answer TeX-default-mode)))))
TeX-tex-mode()
set-auto-mode-0(tex-mode nil)
set-auto-mode--apply-alist((("\\.hva\\'" . LaTeX-mode) ("\\.gpg\\(~\\|\\.~[0-9]+~\\)?\\'" nil epa-file) ("\\.elc\\'" . elisp-byte-code-mode) ("\\.\\(?:3fr\\|arw\\|bmp\\|cr[2w]\\|d\\(?:c[mr]\\|ds\\|ng\\)\\|exr\\|gif\\|ico\\|jp\\(?:2\\|eg\\)\\|mrw\\|nef\\|orf\\|p\\(?:bm\\|ef\\|ict\\|ng\\|sd\\)\\|raf\\|s\\(?:gi\\|r[2f]\\|vg\\)\\|t\\(?:ga\\|iff\\)\\)\\'" . image-mode) ("\\.zst\\'" nil jka-compr) ("\\.dz\\'" nil jka-compr) ("\\.xz\\'" nil jka-compr) ("\\.lzma\\'" nil jka-compr) ("\\.lz\\'" nil jka-compr) ("\\.g?z\\'" nil jka-compr) ("\\.bz2\\'" nil jka-compr) ("\\.Z\\'" nil jka-compr) ("\\.vr[hi]?\\'" . vera-mode) ("\\(?:\\.\\(?:rbw?\\|ru\\|rake\\|thor\\|axlsx\\|jbuilder\\|rabl\\|gemspec\\|podspec\\)\\|/\\(?:Gem\\|Rake\\|Cap\\|Thor\\|Puppet\\|Berks\\|Brew\\|Fast\\|Vagrant\\|Guard\\|Pod\\)file\\)\\'" . ruby-mode) ("\\.re?st\\'" . rst-mode) ("/\\(?:Pipfile\\|\\.?flake8\\)\\'" . conf-mode) ("\\.py[iw]?\\'" . python-mode) ("\\.m\\'" . octave-maybe-mode) ("\\.less\\'" . less-css-mode) ("\\.editorconfig\\'" . editorconfig-conf-mode) ("\\.scss\\'" . scss-mode) ("\\.cs\\'" . csharp-mode) ("\\.awk\\'" . awk-mode) ("\\.\\(u?lpc\\|pike\\|pmod\\(\\.in\\)?\\)\\'" . pike-mode) ("\\.idl\\'" . idl-mode) ("\\.java\\'" . java-mode) ("\\.m\\'" . objc-mode) ("\\.ii\\'" . c++-mode) ("\\.i\\'" . c-mode) ("\\.lex\\'" . c-mode) ("\\.y\\(acc\\)?\\'" . c-mode) ("\\.h\\'" . c-or-c++-mode) ("\\.c\\'" . c-mode) ("\\.\\(CC?\\|HH?\\)\\'" . c++-mode) ("\\.[ch]\\(pp\\|xx\\|\\+\\+\\)\\'" . c++-mode) ("\\.\\(cc\\|hh\\)\\'" . c++-mode) ("\\.\\(bat\\|cmd\\)\\'" . bat-mode) ("\\.[sx]?html?\\(\\.[a-zA-Z_]+\\)?\\'" . mhtml-mode) ("\\.svgz?\\'" . image-mode) ("\\.svgz?\\'" . xml-mode) ("\\.x[bp]m\\'" . image-mode) ("\\.x[bp]m\\'" . c-mode) ("\\.p[bpgn]m\\'" . image-mode) ("\\.tiff?\\'" . image-mode) ("\\.gif\\'" . image-mode) ("\\.png\\'" . image-mode) ("\\.jpe?g\\'" . image-mode) ("\\.webp\\'" . image-mode) ("\\.te?xt\\'" . text-mode) ("\\.[tT]e[xX]\\'" . tex-mode) ...) nil nil)
set-auto-mode()
normal-mode(t)
after-find-file(nil nil t nil nil)
revert-buffer--default(t t)
revert-buffer(t t)
find-file-noselect("main.tex")
(set-buffer (find-file-noselect (TeX-master-file TeX-default-extension)))
(save-current-buffer (set-buffer (find-file-noselect (TeX-master-file TeX-default-extension))) (procress-modeline-string))
(with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string))
(list (with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string)))
eval((list (with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string))) t)
redisplay_internal\ \(C\ function\)()
yes-or-no-p("File main.tex changed on disk. Reread from disk? ")
find-file-noselect("main.tex")
(set-buffer (find-file-noselect (TeX-master-file TeX-default-extension)))
(save-current-buffer (set-buffer (find-file-noselect (TeX-master-file TeX-default-extension))) (procress-modeline-string))
(with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string))
(list (with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string)))
eval((list (with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string))) t)
redisplay_internal\ \(C\ function\)()
yes-or-no-p("File main.tex changed on disk. Reread from disk? ")
find-file-noselect("main.tex")
(set-buffer (find-file-noselect (TeX-master-file TeX-default-extension)))
(save-current-buffer (set-buffer (find-file-noselect (TeX-master-file TeX-default-extension))) (procress-modeline-string))
(with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string))
(list (with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string)))
eval((list (with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string))) t)
redisplay_internal\ \(C\ function\)()
yes-or-no-p("File main.tex changed on disk. Reread from disk? ")
find-file-noselect("main.tex")
(set-buffer (find-file-noselect (TeX-master-file TeX-default-extension)))
(save-current-buffer (set-buffer (find-file-noselect (TeX-master-file TeX-default-extension))) (procress-modeline-string))
(with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string))
(list (with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string)))
eval((list (with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string))) t)
redisplay_internal\ \(C\ function\)()
yes-or-no-p("File main.tex changed on disk. Reread from disk? ")
find-file-noselect("main.tex")
(set-buffer (find-file-noselect (TeX-master-file TeX-default-extension)))
(save-current-buffer (set-buffer (find-file-noselect (TeX-master-file TeX-default-extension))) (procress-modeline-string))
(with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string))
(list (with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string)))
eval((list (with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string))) t)
redisplay_internal\ \(C\ function\)()
yes-or-no-p("File main.tex changed on disk. Reread from disk? ")
find-file-noselect("main.tex")
(set-buffer (find-file-noselect (TeX-master-file TeX-default-extension)))
(save-current-buffer (set-buffer (find-file-noselect (TeX-master-file TeX-default-extension))) (procress-modeline-string))
(with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string))
(list (with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string)))
eval((list (with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string))) t)
redisplay_internal\ \(C\ function\)()
yes-or-no-p("File main.tex changed on disk. Reread from disk? ")
find-file-noselect("main.tex")
(set-buffer (find-file-noselect (TeX-master-file TeX-default-extension)))
(save-current-buffer (set-buffer (find-file-noselect (TeX-master-file TeX-default-extension))) (procress-modeline-string))
(with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string))
(list (with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string)))
eval((list (with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string))) t)
redisplay_internal\ \(C\ function\)()
yes-or-no-p("File main.tex changed on disk. Reread from disk? ")
find-file-noselect("main.tex")
(set-buffer (find-file-noselect (TeX-master-file TeX-default-extension)))
(save-current-buffer (set-buffer (find-file-noselect (TeX-master-file TeX-default-extension))) (procress-modeline-string))
(with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string))
(list (with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string)))
eval((list (with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string))) t)
redisplay_internal\ \(C\ function\)()
yes-or-no-p("File main.tex changed on disk. Reread from disk? ")
find-file-noselect("main.tex")
(set-buffer (find-file-noselect (TeX-master-file TeX-default-extension)))
(save-current-buffer (set-buffer (find-file-noselect (TeX-master-file TeX-default-extension))) (procress-modeline-string))
(with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string))
(list (with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string)))
eval((list (with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string))) t)
redisplay_internal\ \(C\ function\)()
yes-or-no-p("File main.tex changed on disk. Reread from disk? ")
find-file-noselect("main.tex")
(set-buffer (find-file-noselect (TeX-master-file TeX-default-extension)))
(save-current-buffer (set-buffer (find-file-noselect (TeX-master-file TeX-default-extension))) (procress-modeline-string))
(with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string))
(list (with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string)))
eval((list (with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string))) t)
redisplay_internal\ \(C\ function\)()
yes-or-no-p("File main.tex changed on disk. Reread from disk? ")
find-file-noselect("main.tex")
(set-buffer (find-file-noselect (TeX-master-file TeX-default-extension)))
(save-current-buffer (set-buffer (find-file-noselect (TeX-master-file TeX-default-extension))) (procress-modeline-string))
(with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string))
(list (with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string)))
eval((list (with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string))) t)
redisplay_internal\ \(C\ function\)()
yes-or-no-p("File main.tex changed on disk. Reread from disk? ")
find-file-noselect("main.tex")
(set-buffer (find-file-noselect (TeX-master-file TeX-default-extension)))
(save-current-buffer (set-buffer (find-file-noselect (TeX-master-file TeX-default-extension))) (procress-modeline-string))
(with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string))
(list (with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string)))
eval((list (with-current-buffer (find-file-noselect (TeX-master-file TeX-default-extension)) (procress-modeline-string))) t)
redisplay_internal\ \(C\ function\)()
This happens when editing tex files in a shared folder, after others have changed the tex file. Emacs is stuck in an endless loop and keep prompting if the user wants to save the current buffer. However, answering the prompt does not get one out of the loop, and eventually emacs freezes and has to be killed or outright crashes.
System information:
MacOS 26.4 Tahoe/ Emacs 30.2
To reproduce:
emacs -QauctexandprocressHere's a backtrace of the stack when the error happens. I've lowered
max-lisp-eval-depthto catch the error message.