Subject: bug#39618: 28.0.50; gnus nnimap reports more group articles than actually exist

From: Deus Max <[email-masked]>
Date: Wed, 19 Feb 2020 22:06:59 +0200

On Tue, Feb 18 2020, Eric Abrahamsen wrote:

> On 02/18/20 21:56 PM, Deus Max wrote:
>> On Sun, Feb 16 2020, Eric Abrahamsen wrote:
>>
>>> Deus Max <[email-masked]> writes:
>>>
>>>> Recently my gnus started displaying (in the *Group* buffer) some groups
>>>> (which had previously no unread articles) with an unread "ghost" article
>>>> but which groups could not be normally entered.
>>>>
snip
>>>> This issue has happened before, it is not the first time.
>>>
>>> This definitely happens to many of us from time to time. Unfortunately I
>>> can't really reproduce the problem, as by the time it appears it's too
>>> late to figure out where it came from, though I assume it has to do with
>>> Gnus calculating unread messages from a high-low range, and not being
>>> aware of "filled in" read messages within that range.
>>>
>> You think this is a nnimap or a general Gnus issue ?
>
> I don't know. I suspect that it's a general Gnus issue, but it is more
> evident with nnimap, since that's pretty much the only (?) server where
> local marks must be kept in sync with a remote server. In principle,
> there's no reason why Gnus would need to keep local marks for imap
> groups.
>
Hey ! Maybe you have a point here.
Simplifying nnimap not to keep track of local marks, may not only reduce
complexity but also take care of this problem.
If it's not needed, it's a waste. What do you think ?

Of course, some info needs to be kept to avoid the heavy load that
occurs when one starts with an empty .newsrc.
For one, we have the group names...

>> Understanding how the newsrc file is written, should be next for me.
>
> It's just, with their lists of marks. The lists are in "gnus range"
> format (see gnus-range.el), which is just a compressed list of integers:
> '(1 2 3 4 6 12 21 22 23) => '((1. 4) 6 12 (21. 23))
>
> They are treated as sets, with lots of the usual set manipulation
> functions in gnus-range.el. Part of the problem is the direct
> manipulation of ranges that happens elsewhere in the codebase, typically
> impenetrable thickets of "(setcdr (nthcdr 3 range) (cadar range)" etc
> etc, often with little or no comments.
>
> On my (long) list of things to do with Gnus is to write several more
> macros for range manipulation, so that all the messy stuff happens
> inside gnus-range.el, and the rest of the codebase is fairly readable.
> My hope is that, in the course of that process, bugs will show
> themselves up.
>
Really interesting, thanks.
Sounds like a complete re-write of Gnus (streamlined of course!) is
hiding behind what you just said :-)

>> The primary thing a mail, em..sorry.. news-reader, should be is stable.
>> Not to have any corruption issues.
>
> No argument here...
>
>>> In the meantime, is "M-g" on the problematic group(s) enough to
>>> permanently fix the problem? Not a great solution, though better than
>>> doctoring your .newsrc.eld file...
>>
>> No difference. On testing your suggestion, the "M-g" was ignored as
>> was/is the regular "g".
>
> Sorry, I don't know where else to look. My only solution is the hard
> one: clean up range manipulation until we can see what's going on.

Thanks
I didn't find any other similar bug reports on debbugs. Is that just my
terrible search abilities ?