GNU bug report logs -
#47244
28.0.50; SIGSEGV in long-runnning Emacs
Previous Next
Reported by: Michael Welsh Duggan <md5i <at> md5i.com>
Date: Thu, 18 Mar 2021 15:40:01 UTC
Severity: normal
Found in version 28.0.50
Done: Michael Welsh Duggan <mwd <at> md5i.com>
Bug is archived. No further changes may be made.
Full log
Message #146 received at 47244 <at> debbugs.gnu.org (full text, mbox):
Eli Zaretskii <eliz <at> gnu.org> writes:
>> Date: Mon, 29 Mar 2021 18:02:24 +0300
>> From: Eli Zaretskii <eliz <at> gnu.org>
>> Cc: mwd <at> md5i.com, schwab <at> linux-m68k.org, 47244 <at> debbugs.gnu.org
>>
>> Any idea where could be the Lisp code that switches from " *nntpd*" to
>> the buffer in the currently selected window? Perhaps some
>> with-current-buffer thing somewhere?
>
> Actually, no, I don't think it can be with-current-buffer, it must be
> something else. I wonder how we ended up being at top-level with
> current buffer being " *nntpd*" and the selected window's buffer being
> something else, which was killed? Hmm...
I'm far from certain myself. I have no options specifically set
regarding threads and I run Gnus from Emacs sources. What I can say is
that every time I can remember this happening, the following is the
sequence of events:
1) Emacs has locked up. This is presumably because:
a) I have switched my work VPN on, and
b) Gnus uses my existing IMAP connection to attempt to check for new
articles due to this clause in my .gnus file:
(gnus-demon-add-handler 'gnus-demon-scan-news 5 nil)
2) From the *Group* buffer I hit `C-g` to cancel its attempt, and `^` to
switch to the Gnus *Sever* buffer.
3) In that buffer I go to the imap connection and type `C O`, which runs
`gnus-server-close-server` and `gnus-server-open-server`,
respectively.
4) I type `q` to exit the server buffer. This is when the breakpoint
triggers. `g` calls the following function:
(defun gnus-server-exit ()
"Return to the group buffer."
(interactive nil gnus-server-mode)
(gnus-run-hooks 'gnus-server-exit-hook)
(gnus-kill-buffer (current-buffer))
(gnus-configure-windows 'group t))
`gnus-sever-exit-hook` is nil. The definition of `gnus-kill-buffer` is
as follows:
(defmacro gnus-kill-buffer (buffer)
"Kill BUFFER and remove from the list of Gnus buffers."
`(let ((buf ,buffer))
(when (gnus-buffer-live-p buf)
(kill-buffer buf)
(gnus-prune-buffers))))
(defun gnus-buffers ()
"Return a list of live Gnus buffers."
(setq gnus-buffers (seq-filter #'buffer-live-p gnus-buffers)))
(defalias 'gnus-prune-buffers #'gnus-buffers)
`gnus-configure-windows` is a quite complex function that I'm not going
to attach to this email, as it is easier to look at it in-situ from the
sources (gnus-win.el).
--
Michael Welsh Duggan
(mwd <at> cert.org)
This bug report was last modified 4 years and 28 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.