Subject: Re: bug#21804: 25.0.50; file-notify-tests failure on Cygwin

From: Ken Brown <[email-masked]>
Date: Fri, 30 Dec 2016 18:15:57 -0500

Hi Michael,

On 12/30/2016 2:16 PM, Michael Albinus wrote:
> Ken Brown <[email-masked]> writes:
>> Actually it turns out to be GFamFileMonitor on my system, presumably
>> because I have the gamin package installed.

It turns out that this isn't special to my system.  The emacs package on 
Cygwin requires libglib2.0_0, which requires gamin.  So the monitor on 
Cygwin will always be of type GFamFileMonitor.

> Next time I have access to a cygwin machine I'll check. However, I
> wonder whether we need to respect the polling period then. According to
> <http://oss.sgi.com/projects/fam/faq.html#what_is_fam>, FAM does not poll.

It says on that page, "If FAM is running on a system that doesn't have a 
supported kernel monitor, it polls."  And I've checked the gamin sources 
(since Cygwin uses gamin for its implementation of libfam), and the same 
seems to be true there.

On the other hand, the default polling interval seems to be 1 second, so 
I'm not sure why the tests need such a big timeout.  One factor might be 
the following in gio/glocalfilemonitor.c:

   #define VIRTUAL_CHANGES_DONE_DELAY  2 * G_TIME_SPAN_SECOND

If I understand the code correctly, this causes a 2-second delay before 
a CHANGES_DONE_HINT event is sent after a CHANGED event.

>> As a quick check, however, I applied the following patch...
>>
>> --- a/test/lisp/filenotify-tests.el
>> +++ b/test/lisp/filenotify-tests.el
>> @@ -73,7 +73,8 @@ file-notify--test-read-event
>>      ;; gio/gpollfilemonitor.c declares POLL_TIME_SECS 5. So we must
>>      ;; wait at least this time.
>>      ((and (string-equal (file-notify--test-library) "gfilenotify")
>> -         (string-equal (file-notify--test-monitor) "GPollFileMonitor"))
>> +          (or (string-equal (file-notify--test-monitor) "GPollFileMonitor")
>> +              (string-equal (file-notify--test-monitor) "GFamFileMonitor")))
>>       7)
>>      ((file-remote-p temporary-file-directory) 0.1)
>>      (t 0.01))))
>>
>> ...and all the inexpensive tests passed.  I'll keep playing with this.
>
> It's OK for me if you commit this patch. You know cygwin behaviour much
> better then I do.

Let me play with this a little more first.

Best regards,

Ken