Subject: bug#49866: 28.0.50; gnus-summary-exit from the transient search buffer giving error

From: Eric Abrahamsen <[email-masked]>
Date: Thu, 05 Aug 2021 11:44:53 -0700

Eric Abrahamsen <[email-masked]> writes:

> Pankaj Jangid <[email-masked]> writes:
>
>> Eric Abrahamsen <[email-masked]> writes:
>>
>>> Pankaj Jangid <[email-masked]> writes:
>>>
>>>> I think I have isolated the cause. And the error is cause by these lines
>>>> in my ~/.emacs.d/init.el (only if ebdb package is installed):
>>>>
>>>> (when (package-installed-p 'ebdb)
>>>>   (require 'ebdb-gnus)
>>>>   (require 'ebdb-message))
>>>>
>>>>
>>>> If I remove the package ebdb then the error goes away.
>>>
>>> That's pretty weird, as EBDB doesn't mess with Gnus marks at all.
>>> Perhaps it is raising an error at some point, which is interrupting
>>> nnselect's normal buffer setup? That's a completely wild guess.
>>>
>>> Maybe try setting `ebdb-mua-auto-update-p' to nil and try again?
>>> Whatever damage EBDB might be doing to Gnus should be done in the auto
>>> update process.
>>>
>>> But again, I can't even begin to guess why this would be happening.
>>
>> more weird things happening here.
>>
>> I have ‘ebdb-mua-auto-update-p’ set to nil in my config. This was
>> already the case.
>>
>> But calling (describe-variable) on ‘ebdb-mua-auto-update’ shows this
>> error with the following steps:
>>
>> Steps:
>>
>> 1. Start emacs afresh
>>
>> 2. (setq debug-on-error t)
>>
>> 3. Launch gnus
>>
>> 4. C-h v ebdb-mua-auto-update-p RET
>>
>> Result:
>>
>> Debugger entered--Lisp error: (file-missing "Cannot open load file" "No such file or directory" "vm-autoloads")
>>   require(vm-autoloads)

Okay, after going into ebdb-vm.el and provoking the above error by
eval-ling the (when t ...) statement, I'm now seeing the same bug when
exiting search groups. In my case I'm seeing it when
`nnselect-push-info' is cycling over mark types, and reaches "bookmark",
which is of type 'tuple: the first mark of that type.

That puts us into the (eq mark-type 'tuple) branch of the cond for the
first time, which is also the first time it runs:

(map-merge
  'list list
  (alist-get type (gnus-info-marks group-info)))

There are no bookmark marks in this group, so naturally we get the
no-applicable-method error for "nil".

This does nothing to explain how this code doesn't error normally, or
how on earth raising a `require'-based error would change its behavior.

I'm out for the rest of the afternoon, but I'll restart Gnus and look at
how it works in a non-broken setup later in the day.

Eric