GNU bug report logs - #64117
28.2; "gnus-request-set-mark: Buffer is read-only" when exiting agentized, unplugged summary buffer

Previous Next

Package: emacs;

Reported by: Jens Schmidt <jschmidt4gnu <at> vodafonemail.de>

Date: Fri, 16 Jun 2023 18:59:01 UTC

Severity: normal

Found in version 28.2

Done: Jens Schmidt <jschmidt4gnu <at> vodafonemail.de>

Bug is archived. No further changes may be made.

Full log


View this message in rfc822 format

From: help-debbugs <at> gnu.org (GNU bug Tracking System)
To: Jens Schmidt <jschmidt4gnu <at> vodafonemail.de>
Subject: bug#64117: closed (Re: bug#64117: 28.2; "gnus-request-set-mark:
 Buffer is read-only" when exiting agentized, unplugged summary buffer)
Date: Sun, 02 Jul 2023 07:16:01 +0000
[Message part 1 (text/plain, inline)]
Your bug report

#64117: 28.2; "gnus-request-set-mark: Buffer is read-only" when exiting agentized, unplugged summary buffer

which was filed against the emacs package, has been closed.

The explanation is attached below, along with your original report.
If you require more details, please reply to 64117 <at> debbugs.gnu.org.

-- 
64117: https://debbugs.gnu.org/cgi/bugreport.cgi?bug=64117
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: Jens Schmidt <jschmidt4gnu <at> vodafonemail.de>
To: Eric Abrahamsen <eric <at> ericabrahamsen.net>, Andrew Cohen <cohen <at> andy.bu.edu>
Cc: Andrew Cohen <cohen <at> bu.edu>, 64117-done <at> debbugs.gnu.org,
 Eli Zaretskii <eliz <at> gnu.org>
Subject: Re: bug#64117: 28.2; "gnus-request-set-mark: Buffer is read-only"
 when exiting agentized, unplugged summary buffer
Date: Sun, 2 Jul 2023 09:14:59 +0200
On 2023-07-02  01:54, Eric Abrahamsen wrote:

> Thanks to all for taking care of this!

Same here.

Closed.


[Message part 3 (message/rfc822, inline)]
From: Jens Schmidt <jschmidt4gnu <at> vodafonemail.de>
To: bug-gnu-emacs <at> gnu.org
Subject: 28.2; "gnus-request-set-mark: Buffer is read-only" when exiting
 agentized, unplugged summary buffer
Date: Fri, 16 Jun 2023 20:58:05 +0200
This issue should be also present in Emacs master, judging by the
code.  However I have reproduced this issue only in my
"production Emacs" on 28.2 and, in particular, *not* in an "emacs
-Q" environment.  Gnus setup complete with IMAP and all is
finicky, so probably you accept this bug report without all that.

Here are the steps to reproduce the issue:

- Ensure you have an agentized nnimap group G with some unread
  articles.

- Ensure Gnus is unplugged.

- Enter group G from the *Group* buffer by pressing "RET" on it.

- Mark some unread articles in the summary buffer of G as "read"
  by positioning point on them and pressing "d".

- Exit group G from the summary buffer by pressing "q".

The last step results in an error

  gnus-request-set-mark: Buffer is read-only: #<buffer *Summary 
nnimap+<host>:INBOX*>

for me.

Expected result is that the agent writes the information on the
marks that have changed while unplugged to a separate file which
it later, when Gnus gets plugged again, replays.

The reason for the bug us most likely commit


https://git.savannah.gnu.org/cgit/emacs.git/commit/src?id=cb12a84f2c519a48dd87453c925e3bc36d9944db

and here the change

  * lisp/gnus/nnagent.el: Don't use a unibyte buffer.

The author has removed a macro call to `mm-with-unibyte-buffer'
in function `nnagent-request-set-mark' without replacing it by,
for example, a call to `with-temp-buffer'.  Accordingly, function
`nnagent-request-set-mark' tries to operate on the current
buffer, which happens to be the read-only summary buffer.

Adding a `with-temp-buffer' around the inserts and the call to
`write-region' fixes this issue (showing 28.2-based code):

(deffoo nnagent-request-set-mark (group action server)
  (with-temp-buffer
    (insert "(gnus-agent-synchronize-group-flags \""
	    group
	    "\" '")
    (gnus-pp action)
    (insert " \""
	    (gnus-method-to-server gnus-command-method)
	    "\"")
    (insert ")\n")
    (let ((coding-system-for-write nnheader-file-coding-system))
      (write-region (point-min) (point-max) (gnus-agent-lib-file "flags")
		    t 'silent)))
  ;; Also set the marks for the original back end that keeps marks in
  ;; the local system.
  (let ((gnus-agent nil))
    (when (and (memq (car gnus-command-method) '(nntp))
	       (gnus-check-backend-function 'request-set-mark
					    (car gnus-command-method)))
      (funcall (gnus-get-function gnus-command-method 'request-set-mark)
	       group action server)))
  nil)

I could provide a patch on emacs-29 but only without actually
testing it...



This bug report was last modified 1 year and 331 days ago.

Previous Next


GNU bug tracking system
Copyright (C) 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson.