Subject: Re: bug#34252: 27.0.50; rmail-get-new-mail fails

From: john <[email-masked]>
Date: Wed, 30 Jan 2019 18:10:29 +0000 (GMT)

This could be due to a kernel/NFS problem but te effect on using rmail for 
my user-base is a real problem.  The problems with proto being nil in
rmail-remote-proto-p is clearly wrong and despite your statement it does 
happen to me on two diffrent computers/users attempting to read mail in 
emacs via rmail.

This backtrace was before I changed anything

Debugger entered--Lisp error: (wrong-type-argument stringp nil)
    string-match("^\\(imap\\|pop\\)s?$" nil nil)
    rmail-remote-proto-p(nil)
    rmail-insert-inbox-text(("/var/spool/mail/jpff" 
"/mnt/snout/home/jpff/mbox")
t)
    rmail-get-new-mail-1(nil ("/var/spool/mail/jpff"
"/mnt/snout/home/jpff/mbox") nil)
    rmail-get-new-mail(nil)
    funcall-interactively(rmail-get-new-mail nil)
    call-interactively(rmail-get-new-mail nil nil)
    command-execute(rmail-get-new-mail)

Note argument to rmail-remote-proto-p is nil.  "/var/spool/mail/jpff"
is a local file and is always zero length.  "/mnt/snout/home/jpff/mbox" is 
mounted from a Debian system using NFS version 3

The NFS issue is described in 
https://utcc.utoronto.ca/~cks/space/blog/linux/KernelNFSPageBug
which someone pointed me at....

Thank you for your attention

==John ffitch

  On Tue, 29 Jan 2019, Glenn Morris wrote:

> John wrote:
>
>> in case of reading a mail box on a nfs-mounted disk
>
> It's hard to see how that could make a difference to Rmail.
>
>> --- a/lisp/mail/rmail.el
>> +++ b/lisp/mail/rmail.el
>> @@ -1902,7 +1902,7 @@ rmail-parse-url
>>             (host  (substring file (or (match-end 2)
>>                                        (+ 3 (match-end 1))))))
>>
>> -       (if (rmail-remote-proto-p proto)
>> +       (if (and proto (rmail-remote-proto-p proto))
>
> It's not possible for proto to be nil here.
>
>>             (if (not pass)
>>                 (when rmail-remote-password-required
>>                   (setq got-password (not (rmail-have-password)))
>> @@ -1913,7 +1913,7 @@ rmail-parse-url
>>               ;; does not really like it, in spite of the movemail spec.
>>               (setq file (concat proto "://" user "@" host))))
>>
>> -       (if (rmail-movemail-variant-p 'emacs)
>> +       (if (and proto (rmail-movemail-variant-p 'emacs))
>
> Or here.
>
>>             (if (string-equal proto "pop")
>>                 (list (concat "po:" user ":" host)
>>                       proto
>> @@ -2072,7 +2072,7 @@ rmail-insert-inbox-text
>>                    ;; If we just read the password, most likely it is
>>                    ;; wrong.  Otherwise, see if there is a specific
>>                    ;; reason to think that the problem is a wrong passwd.
>> -                  (if (and (rmail-remote-proto-p proto)
>> +                  (if (and proto (rmail-remote-proto-p proto)
>
> Here I think you may be correct.
>
>