Daimrod <daim...@gmail.com> writes: > Eric Abrahamsen <e...@ericabrahamsen.net> writes: > >> Daimrod <daim...@gmail.com> writes: >> >>> Bastien <b...@gnu.org> writes: >>> >>>> Hi Eric, >>>> >>>> Eric Abrahamsen <e...@ericabrahamsen.net> writes: >>>> >>>>> After Nicolas made the last round of improvements to the caching >>>>> mechanism I got far fewer hangs with Org, but they are still happening. >>>>> Maybe once a day or so, on average, editing something in an Org buffer >>>>> causes emacs to hang, and my fans to spin up, and there we are until I >>>>> kill emacs. >> >> [...] >> >>> I have also semi-regular lockup with org-mode. I have opened a bug on >>> debbugs and here is what Stefan told me to try to debug this: >>> >>>> You can try `debug-on-event'. >>>> >>>> There's jit-lock-debug-mode but it doesn't disable inhibit-quit. >>>> So you'll need to additionally use >>>> >>>> (advice-add 'jit-lock--debug-fontify :around >>>> (lambda (fun &rest args) >>>> (with-local-quit (apply fun args)))) >>>> >>>> Of course sometimes this doesn't work because jit-lock-debug-mode >>>> changes the way things are executed and the bug may not manifest itself >>>> any more, but it's worth a try. >>>> >>>> Another source of info is to >>>> >>>> M-x trace-function RET org-adaptive-fill-function RET >>>> M-x trace-function RET org-element-at-point RET >>>> M-x trace-function RET org-element--cache-sync RET >>>> M-x trace-function RET org-element--cache-process-request RET >>>> >>>> Then reproduce the hang, then break the hang somehow (maybe with the >>>> jit-lock-debug hack above, or maybe with debug-on-event, or with C-g C-g >>>> C-g, ...), then look at the *trace..* buffer. >>> >>> I'll try to see what I can find this week end and report back. >>> >>> By the way, if you want to see in which part the infloop occurs, you can >>> attach a gdb debugger to the running emacs, source the >>> <path-to-emacs-source>/src/.gdbinit file and use the `xbacktrace' command. >>> >>> $ gdb <path-to-emacs-executable> <emacs-pid> >>> gdb) source <path-to-emacs-source>/src/.gdbinit >>> ... >>> gdb) xbacktrace >>> >>> You can also use the `bt' command but it contains much more noise. >> >> Thanks! This is the sort of thing I assumed I'd have to do, and it's >> good to have an actual recipe. If you're on it, I might take the lazy >> option and spectate for now... :) > > No problem, but could you attach gdb during a lockup, source .gdbitinit > and use the `xbacktrace' command to see if the lockup happens at the > same place?
Most definitely. Saving the instructions now...