Daimrod <daim...@gmail.com> writes: > Matt Lundin <m...@imapmail.org> writes: >> >> With the latest git, I've experienced three lock-ups/freezes this >> evening when a) archiving a subtree to a file, b) changing a todo state >> with repeating timestamp, and 3) calling C-c C-c in an org-capture >> buffer. (I don't think this is due to a recent change - I've been >> running into these lockups sporadically for several months.) >> >> The freezes are very difficult to replicate reliably. When they happen, >> emacs is unresponsive and can only be killed from the outside. Any tips >> on how to debug this would be greatly appreciated. > > See my previous post: > http://thread.gmane.org/gmane.emacs.orgmode/86255/focus=86263 > > You can wrap `jit-lock--debug-fontify' with: > > (advice-add 'jit-lock--debug-fontify :around > (lambda (fun &rest args) > (with-local-quit (apply fun args)))) > > and then force emacs to break and display a backtrace by sending the > SIGUSR2 to the emacs process.
O.K., I built the most emacs development from bzr and used the advice above. With "killall -USR2 emacs", the following backtrace popped up, which highlights flyspell as the culrpit. Note: I have flyspell turned on in all text buffers, but I have (for several months) only experienced lockups when using org-mode. I spend more time in TeX buffers than in org-mode, and I have never had a lockup with AUCTeX. --8<---------------cut here---------------start------------->8--- * (setq quit-flag t) (condition-case nil (let ((inhibit-quit nil)) (let ((command this-command) deactivate-mark) (if (flyspell-check-pre-word-p) (save-excursion (quote (flyspell-debug-signal-pre-word-checked)) (goto-char flyspell-pre-point) (flyspell-word))) (if (flyspell-check-word-p) (progn (quote (flyspell-debug-signal-word-checked)) (flyspell-word) (setq flyspell-pre-pre-buffer (current-buffer)) (setq flyspell-pre-pre-point (point))) (setq flyspell-pre-pre-buffer nil) (setq flyspell-pre-pre-point nil) (if (and (symbolp this-command) (get this-command (quote flyspell-delayed))) (progn (setq flyspell-word-cache-end -1) (setq flyspell-word-cache-result (quote _))))) (while (and (not (input-pending-p)) (consp flyspell-changes)) (let ((start (car ...)) (stop (cdr ...))) (if (flyspell-check-changed-word-p start stop) (save-excursion (quote ...) (goto-char start) (flyspell-word))) (setq flyspell-changes (cdr flyspell-changes)))) (setq flyspell-previous-command command))) (quit (setq quit-flag t) (eval (quote (ignore nil))))) (progn (condition-case nil (let ((inhibit-quit nil)) (let ((command this-command) deactivate-mark) (if (flyspell-check-pre-word-p) (save-excursion (quote (flyspell-debug-signal-pre-word-checked)) (goto-char flyspell-pre-point) (flyspell-word))) (if (flyspell-check-word-p) (progn (quote (flyspell-debug-signal-word-checked)) (flyspell-word) (setq flyspell-pre-pre-buffer (current-buffer)) (setq flyspell-pre-pre-point (point))) (setq flyspell-pre-pre-buffer nil) (setq flyspell-pre-pre-point nil) (if (and (symbolp this-command) (get this-command ...)) (progn (setq flyspell-word-cache-end -1) (setq flyspell-word-cache-result ...)))) (while (and (not (input-pending-p)) (consp flyspell-changes)) (let ((start ...) (stop ...)) (if (flyspell-check-changed-word-p start stop) (save-excursion ... ... ...)) (setq flyspell-changes (cdr flyspell-changes)))) (setq flyspell-previous-command command))) (quit (setq quit-flag t) (eval (quote (ignore nil)))))) (if flyspell-mode (progn (condition-case nil (let ((inhibit-quit nil)) (let ((command this-command) deactivate-mark) (if (flyspell-check-pre-word-p) (save-excursion (quote ...) (goto-char flyspell-pre-point) (flyspell-word))) (if (flyspell-check-word-p) (progn (quote ...) (flyspell-word) (setq flyspell-pre-pre-buffer ...) (setq flyspell-pre-pre-point ...)) (setq flyspell-pre-pre-buffer nil) (setq flyspell-pre-pre-point nil) (if (and ... ...) (progn ... ...))) (while (and (not ...) (consp flyspell-changes)) (let (... ...) (if ... ...) (setq flyspell-changes ...))) (setq flyspell-previous-command command))) (quit (setq quit-flag t) (eval (quote (ignore nil))))))) flyspell-post-command-hook() recursive-edit() --8<---------------cut here---------------end--------------->8--- Matt