1

I asked in a prior question about what might be causing my emacsclient widows to shutdown immediately with the following output on stderr: "ERROR: Beginning of buffer". I have tried to use bug-hunter to bisect my init file, but the error is happening sporadically, so that bore no fruit.

I decided to ask the hopefully simpler question: how can I get the debugger to trigger to show me what's hapenning.

I know that, even with the debugger on, it normally ignores beggining-of-buffer errors. So I wrote the following function to change that and toggle on the debugger:

(defun ded:bugon ()
  ;; Remove the normal value of beginning-of-buffer from list
  (setq debug-ignored-errors
        '(beginning-of-line end-of-line end-of-buffer
                            end-of-file buffer-read-only
                            file-supersession mark-inactive
                            user-error))
  (setq debug-on-error t))

I then attempted to run this by adding it to several hooks, including this one:

(add-hook 'before-make-frame-hook #'ded:bugon)

Others I tried were:

(add-hook 'server-after-make-frame-hook #'ded:bugon)
(add-hook 'window-setup-hook #'ded:bugon)
(add-hook 'focus-in-hook #'ded:bugon)
(add-hook 'find-file-hook #'ded:bugon)

None of these triggered the debugger, much to my frustration. I also tried running strace on the emacsclient invocation, and the part immediately before the error was this:

write(1, "Waiting for Emacs...", 20)    = 20
recvfrom(3, "-emacs-pid 2923799\n", 8192, 0, NULL, NULL) = 19
recvfrom(3, "-emacs-pid 2923799\n", 8192, 0, NULL, NULL) = 19
recvfrom(3, 0x7ffd5cfb9d00, 8192, 0, NULL, NULL) = ? ERESTARTSYS (To be restarted if SA_RESTART is set)
--- SIGWINCH {si_signo=SIGWINCH, si_code=SI_KERNEL} ---
rt_sigreturn({mask=[]})                 = -1 EINTR (Interrupted system call)
kill(2923799, SIGWINCH)                 = 0
recvfrom(3, "-error Beginning&_of&_buffer", 8192, 0, NULL, NULL) = 28
write(1, "\n", 1)                       = 1
write(2, "*ERROR*: Beginning of buffer", 28*ERROR*: Beginning of buffer) = 28
ioctl(1, TIOCGPGRP, [3565004])          = 0
getpgrp()                               = 3565004
write(1, "\n", 1)                       = 1
close(3)                                = 0
exit_group(1)                           = ?
+++ exited with 1 +++

Anybody out there have an idea of what else to try?

0

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.