GNU bug report logs - #35208
27.0.50; Gnus nndraft error when saving message buffer

Previous Next

Packages: emacs, gnus;

Reported by: "Basil L. Contovounesios" <contovob <at> tcd.ie>

Date: Tue, 9 Apr 2019 13:47:02 UTC

Severity: normal

Found in version 5.13

Done: Katsumi Yamaoka <yamaoka <at> jpl.org>

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: Katsumi Yamaoka <yamaoka <at> jpl.org>
Cc: tracker <at> debbugs.gnu.org
Subject: bug#35208: closed (27.0.50; Gnus nndraft error when saving
 message buffer)
Date: Thu, 11 Apr 2019 00:25:02 +0000
[Message part 1 (text/plain, inline)]
Your message dated Thu, 11 Apr 2019 09:24:32 +0900
with message-id <b4m7ec1crsv.fsf <at> jpl.org>
and subject line Re: bug#35208: 27.0.50; Gnus nndraft error when saving message buffer
has caused the debbugs.gnu.org bug report #35208,
regarding 27.0.50; Gnus nndraft error when saving message buffer
to be marked as done.

(If you believe you have received this mail in error, please contact
help-debbugs <at> gnu.org.)


-- 
35208: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=35208
GNU Bug Tracking System
Contact help-debbugs <at> gnu.org with problems
[Message part 2 (message/rfc822, inline)]
From: "Basil L. Contovounesios" <contovob <at> tcd.ie>
To: submit <at> debbugs.gnu.org (The Gnus Bugfixing Girls + Boys)
Subject: 27.0.50; Gnus nndraft error when saving message buffer
Date: Tue, 09 Apr 2019 14:46:20 +0100
Trying to save a draft, e.g. as follows:

0. HOME=$(mktemp -d) emacs -Q
1. M-x toggle-debug-on-error RET
2. (setq gnus-select-method '(nnnil)) C-j
3. M-x gnus RET
4. m
5. foo C-x C-s

results in the following error:

--8<---------------cut here---------------start------------->8---
Debugger entered--Lisp error: (wrong-type-argument number-or-marker-p nil)
  nndraft-update-unread-articles()
  run-hooks(after-save-hook)
  basic-save-buffer(t)
  save-buffer(1)
  funcall-interactively(save-buffer 1)
  call-interactively(save-buffer nil nil)
  command-execute(save-buffer)
--8<---------------cut here---------------end--------------->8---

Reevaluating nndraft-update-unread-articles and repeating step (5) gives
the following backtrace:

--8<---------------cut here---------------start------------->8---
Debugger entered--Lisp error: (wrong-type-argument number-or-marker-p nil)
  =(0 nil)
  (if (= 0 (gnus-group-group-unread)) (progn (delete-region (point-at-bol) (progn (forward-line 1) (point)))))
  (if (and gnus-permanently-visible-groups (string-match gnus-permanently-visible-groups group)) nil (gnus-group-goto-group group) (if (= 0 (gnus-group-group-unread)) (progn (delete-region (point-at-bol) (progn (forward-line 1) (point))))))
  (while --dolist-tail-- (setq group (car --dolist-tail--)) (if (and gnus-permanently-visible-groups (string-match gnus-permanently-visible-groups group)) nil (gnus-group-goto-group group) (if (= 0 (gnus-group-group-unread)) (progn (delete-region (point-at-bol) (progn (forward-line 1) (point)))))) (setq --dolist-tail-- (cdr --dolist-tail--)))
  (let ((--dolist-tail-- groups) group) (while --dolist-tail-- (setq group (car --dolist-tail--)) (if (and gnus-permanently-visible-groups (string-match gnus-permanently-visible-groups group)) nil (gnus-group-goto-group group) (if (= 0 (gnus-group-group-unread)) (progn (delete-region (point-at-bol) (progn (forward-line 1) (point)))))) (setq --dolist-tail-- (cdr --dolist-tail--))))
  (save-excursion (let ((--dolist-tail-- groups) group) (while --dolist-tail-- (setq group (car --dolist-tail--)) (if (and gnus-permanently-visible-groups (string-match gnus-permanently-visible-groups group)) nil (gnus-group-goto-group group) (if (= 0 (gnus-group-group-unread)) (progn (delete-region (point-at-bol) (progn ... ...))))) (setq --dolist-tail-- (cdr --dolist-tail--)))))
  (let* ((groups (mapcar #'(lambda (elem) (gnus-group-prefixed-name (car elem) (list ... ""))) (nnmail-get-active))) (gnus-group-marked (copy-sequence groups)) (gnus-get-new-news-hook nil) (inhibit-read-only t)) (gnus-group-get-new-news-this-group nil t) (save-excursion (let ((--dolist-tail-- groups) group) (while --dolist-tail-- (setq group (car --dolist-tail--)) (if (and gnus-permanently-visible-groups (string-match gnus-permanently-visible-groups group)) nil (gnus-group-goto-group group) (if (= 0 (gnus-group-group-unread)) (progn (delete-region ... ...)))) (setq --dolist-tail-- (cdr --dolist-tail--))))))
  (save-current-buffer (set-buffer gnus-group-buffer) (let* ((groups (mapcar #'(lambda (elem) (gnus-group-prefixed-name ... ...)) (nnmail-get-active))) (gnus-group-marked (copy-sequence groups)) (gnus-get-new-news-hook nil) (inhibit-read-only t)) (gnus-group-get-new-news-this-group nil t) (save-excursion (let ((--dolist-tail-- groups) group) (while --dolist-tail-- (setq group (car --dolist-tail--)) (if (and gnus-permanently-visible-groups (string-match gnus-permanently-visible-groups group)) nil (gnus-group-goto-group group) (if (= 0 ...) (progn ...))) (setq --dolist-tail-- (cdr --dolist-tail--)))))))
  nndraft-update-unread-articles()
  run-hooks(after-save-hook)
  basic-save-buffer(t)
  save-buffer(1)
  funcall-interactively(save-buffer 1)
  call-interactively(save-buffer nil nil)
  command-execute(save-buffer)
--8<---------------cut here---------------end--------------->8---

I'm temporarily working around this by
changing (zerop (gnus-group-group-unread))
to (eq 0 (gnus-group-group-unread)),
but a larger problem seems to be at play.

Any tips?  Thanks,

-- 
Basil

Gnus v5.13
In GNU Emacs 27.0.50 (build 1, x86_64-pc-linux-gnu, X toolkit, Xaw3d scroll bars)
 of 2019-04-09 built on thunk
Repository revision: 44b306d3510e54432b76724583ea9405f1c90686
Repository branch: master
Windowing system distributor 'The X.Org Foundation', version 11.0.12003000
System Description: Debian GNU/Linux buster/sid

Configured using:
 'configure 'CC=ccache gcc' 'CFLAGS=-O2 -march=native' --config-cache
 --prefix=/home/blc/.local --with-mailutils --with-x-toolkit=lucid
 --with-modules --with-file-notification=yes --with-x'

Configured features:
XAW3D XPM JPEG TIFF GIF PNG RSVG IMAGEMAGICK SOUND GPM DBUS GSETTINGS
GLIB NOTIFY INOTIFY ACL LIBSELINUX GNUTLS LIBXML2 FREETYPE M17N_FLT
LIBOTF XFT ZLIB TOOLKIT_SCROLL_BARS LUCID X11 XDBE XIM MODULES THREADS
LIBSYSTEMD JSON PDUMPER LCMS2 GMP


[Message part 3 (message/rfc822, inline)]
From: Katsumi Yamaoka <yamaoka <at> jpl.org>
To: Basil L. Contovounesios <contovob <at> tcd.ie>
Cc: Eric Abrahamsen <eric <at> ericabrahamsen.net>, 35208-done <at> debbugs.gnu.org
Subject: Re: bug#35208: 27.0.50; Gnus nndraft error when saving message buffer
Date: Thu, 11 Apr 2019 09:24:32 +0900
On Wed, 10 Apr 2019 18:24:02 +0100, Basil L. Contovounesios wrote:
> Katsumi Yamaoka <yamaoka <at> jpl.org> writes:
>> The message is saved with no error, hmmm.
[...]
> Hmm, that's odd.  I can reproduce the error 100% of the time.

Oh, I could 100% reproduce this issue.  Maybe the cause of
the failure was I did it in the real home directory instead of
the pseudo home.  Probably Gnus loaded something from ~/News .
Sorry.

Me culprit.  The cause is that `nndraft-update-unread-articles'
fails to go to the nndraft:queue group (in order to delete the
group line if the group has no unread article).  nndraft:queue
and its directory are created when Gnus launches, and it is
registered into `gnus-active-hashtb' but not `gnus-newsrc-hashtb'.
So, `gnus-group-goto-group', that I recently changed so as to
use `gnus-newsrc-hashtb' instead of `gnus-active-hashtb', fails
to find the nndraft:queue group.

I've pushed the fix.  Thank you for pointing this out.

Regards,


This bug report was last modified 6 years and 78 days ago.

Previous Next


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