Subject: Re: bug#65447: 30.0.50; Gnus: No such function: nnfolder-server-opened

From: Eric Abrahamsen <[email-masked]>
Date: Wed, 23 Aug 2023 10:01:49 -0700

On 08/23/23 07:18 AM, Gerd Möllmann wrote:
> Eric Abrahamsen <[email-masked]> writes:
>
>> Yes, it's `gnus-newsrc-alist' that will contain group definitions,
>
> Ah, ok.  Sorry, I didn't know that.

No problem :)

>> including seven (it looks like) for your archive groups, each one with
>> an identical method definition looking like:
>>
>> (nnfolder "archive"
>> 	  (nnfolder-directory "~/Mail/archive")
>> 	  (nnfolder-active-file "~/Mail/archive/active")
>> 	  (nnfolder-get-new-mail nil)
>> 	  (nnfolder-inhibit-expiry t))
>>
>> I know the file is a bit eye-watering to look at, but try to confirm
>> that you have seven archive groups in there, and each one ends with the
>> form above.
>
> No problem.  When I 'pp' the list, I see these 7:
>
>  (\"nnfolder+archive:sent.2022-06\" 3 nil ((unexist) (seen (1 . 2)))
>   (nnfolder \"archive\" (nnfolder-directory \"~/Mail/archive\")
> 	    (nnfolder-active-file \"~/Mail/archive/active\")
> 	    (nnfolder-get-new-mail nil) (nnfolder-inhibit-expiry t)))
>  (\"nnfolder+archive:sent.2022-07\" 3 nil nil
>   (nnfolder \"archive\" (nnfolder-directory \"~/Mail/archive\")
> 	    (nnfolder-active-file \"~/Mail/archive/active\")
> 	    (nnfolder-get-new-mail nil) (nnfolder-inhibit-expiry t))
>   nil)
>  (\"nnfolder+archive:sent.2022-08\" 3 nil nil
>   (nnfolder \"archive\" (nnfolder-directory \"~/Mail/archive\")
> 	    (nnfolder-active-file \"~/Mail/archive/active\")
> 	    (nnfolder-get-new-mail nil) (nnfolder-inhibit-expiry t))
>   nil)
>  (\"nnfolder+archive:sent.2022-09\" 3 nil nil
>   (nnfolder \"archive\" (nnfolder-directory \"~/Mail/archive\")
> 	    (nnfolder-active-file \"~/Mail/archive/active\")
> 	    (nnfolder-get-new-mail nil) (nnfolder-inhibit-expiry t))
>   nil)
>  (\"nnfolder+archive:sent.2022-10\" 3 nil nil
>   (nnfolder \"archive\" (nnfolder-directory \"~/Mail/archive\")
> 	    (nnfolder-active-file \"~/Mail/archive/active\")
> 	    (nnfolder-get-new-mail nil) (nnfolder-inhibit-expiry t))
>   nil)
>  (\"nnfolder+archive:sent.2022-11\" 3 nil nil
>   (nnfolder \"archive\" (nnfolder-directory \"~/Mail/archive\")
> 	    (nnfolder-active-file \"~/Mail/archive/active\")
> 	    (nnfolder-get-new-mail nil) (nnfolder-inhibit-expiry t))
>   nil)
>  (\"nnfolder+archive:sent.2023-08\" 3 nil nil
>   (nnfolder \"archive\" (nnfolder-directory \"~/Mail/archive\")
> 	    (nnfolder-active-file \"~/Mail/archive/active\")
> 	    (nnfolder-get-new-mail nil) (nnfolder-inhibit-expiry t))
>   nil))
>
>> It's pretty weird that you're seeing this with your archive server,
>
> I am weird :-).
>
>> because that one gets special treatment. Take a close look at the file
>> first, and maybe we can try something else.
>
> I can also try to catch that in the debugger, if it helps.  Since
> setting debug-on-error seems not to help, can I perhaps set a breakpoint
> somewhere in Gnus?

The error has to be coming out of `gnus-get-function', in gnus-int.el.
Right above the spot where the error is signaled, we have a:

(require (car method))

In your case, (car method) is supposed to be the symbol 'nnfolder. I
can't imagine how the function name has been constructed as
`nnfolder-server-opened', yet (car method) is something other than
`nnfolder'. So the place to set a breakpoint would be at the bottom of
`gnus-get-function', maybe you can put it behind a check for
(eq func 'nnfolder-server-opened).

Then we would want to know what the value of `method' is here, and also
where in the startup sequence we are.

Thanks!
Eric