Subject: bug#52735: 29.0.50; Gnus hangs while getting new news

From: Stephen Berman <[email-masked]>
Date: Wed, 22 Dec 2021 16:13:39 +0100

Since more than a week (I think it started on December 11), I've been
regularly experiencing a hang when I type `g' in the Gnus *Group*
buffer: the mouse pointer spins, and Emacs is locked up.  Typing `C-g'
releases the hang and then typing `g' again succeeds in fetching new
news.  I can also get a hang when typing RET on an article line in the
Gnus *Summary* buffer, and also here typing `C-g' releases the hang and
typing RET again opens the article.  These hangs happen reliably when I
don't provide any input to Gnus (e.g., opening a group or an article, or
just check again for new news) within several minutes (I haven't
determined a more precise amount of time).  They only involve the
news.gmane.io server, not any of the mail servers I fetch mail from (I
haven't tried any other news server).

The hang appears to happen in nntp-finish-retrieve-group-infos: stepping
through the code with Edebug, I see an infinite loop here:

          (while (and (gnus-buffer-live-p buf)
		      (progn
			(goto-char last-point)
			;; Count replies.
			(while (re-search-forward
				(if nntp-server-list-active-group
				    "^[.]"
				  "^[0-9]")
				nil t)
			  (cl-incf received))
			(setq last-point (point))
			(< received count)))
	    (nntp-accept-response))

when the server buffer (e.g. " *server news.gmane.io nntp *nntpd**") is
empty.  Since this code clearly does not expect an empty buffer, the bug
is presumably making this buffer empty when this code is executed.  But
I haven't managed to figure out how this happens.  (I have seen that
this buffer can become empty in other situations, e.g. on opening an
article in Gnus, and that doesn't cause any problems.)  I've also
observed that when I wait long enough for the server process to close
(the buffer then shows "Process nntpd connection broken by remote
peer"), then there is no hang on typing `g' in the *Group* buffer.

To my surprise, these hangs happen with all builds of Emacs I have:
master, 28, 27 and 26, which indicates the problem is not directly due
to a recent code change.  I also haven't knowingly made any changes in
my setup since I began observing this problem (moreover, I also seem to
get a hang when I start Gnus from -Q and open news.gmane.io, though I
haven't tried stepping through the code then to see if it's really the
same issue).  If there were a problem with news.gmane.io, I'd have
expected to see other reports or find some mention on the internet, but
I haven't.  Perhaps some unrelated recent code change somehow causes the
server buffer to become empty at the wrong point.  Or maybe my debugging
is faulty and the problem lies elsewhere.  I'll gladly try any
suggestions.

In GNU Emacs 29.0.50 (build 2, x86_64-pc-linux-gnu, GTK+ Version 3.24.29, cairo version 1.17.4)
 of 2021-12-22 built on strobelfs
Repository revision: 70266929c3eb173fae0c64d56f8d402a805ca786
Repository branch: master
Windowing system distributor 'System Description: Linux From Scratch 10.2-rc1

Configured using:
 'configure --with-pgtk 'CFLAGS=-Og -g3''

Configured features:
ACL CAIRO DBUS FREETYPE GIF GLIB GMP GNUTLS GSETTINGS HARFBUZZ JPEG JSON
LCMS2 LIBSYSTEMD LIBXML2 MODULES NOTIFY INOTIFY PDUMPER PGTK PNG RSVG
SECCOMP SOUND SQLITE3 THREADS TIFF TOOLKIT_SCROLL_BARS WEBP XIM GTK3
ZLIB