From: Michael Albinus <michael.albinus@gmx.de>
To: Andreas Politz <politza@hochschule-trier.de>
Cc: 26126@debbugs.gnu.org
Subject: bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches
Date: Wed, 22 Mar 2017 14:17:10 +0100 [thread overview]
Message-ID: <877f3h4fjd.fsf@detlef> (raw)
In-Reply-To: <87efxqmzyp.fsf@luca> (Andreas Politz's message of "Tue, 21 Mar 2017 16:06:22 +0100")
Andreas Politz <politza@hochschule-trier.de> writes:
Hi Andreas,
>> I've applied the patch, and filenotify-tests.el passes all tests
>> (except `file-notify-test04-autorevert-remote', but that's another
>> story). So I believe it is OK to apply it to master, and see how it goes
>> (waiting for feedback).
>
> Let me work on this a little more. I think, I'm not removing the
> descriptors in inotify.c correctly.
OK. Take your time.
>> I'm not sure we can eliminate the `file' binding. I believe, it is
>> needed for the kqueue library. Maybe you add a TODO comment for
>> retesting instead.
>
> Shouldn't be, since kqueue, w32notify and gfilenotify all return a
> pointer wrapped in a Lisp-Integer, i.e. for these back-ends the file
> value was already nil all the time.
We shall recheck, once your changed inotify implementation has hit the repo.
>> I'm a little bit undecided, whether we shall add this as extra test
>> case, or whether we shall integrate it into
>> `file-notify-test03-events'. The former might be better, but it would
>> also mean that we shall break down `file-notify-test03-events' into
>> smaller tests.
>
> I think it would be better to split those tests into smaller units. For
> once it makes it easier to determine which should-form actually failed.
> And secondly, it makes it easier to add a new test (especially for
> people not to familiar with the code), without being anxious about
> interfering with existing ones.
Likely yes. I have the same feeling, but haven't done due to lack of
energy and time.
For the time being, I have added a modified version of your test
removing watch descriptors out of order to
`file-notify-test02-rm-watch'. Since this fails for inotify, I've added
an :expected-result tag to this test. Can be removed, when fixed in
inotify.c.
>>> * inotify_add_watch internally uses a single watch per directory, which
>>> may be shared by multiple clients (using filenotify.el). The problem
>>> here seems to be that these clients may use different FLAGS as
>>> argument to file-notify-add-watch. Currently, the last added client's
>>> FLAGS become the effective mask for the underlying C-descriptor,
>>> meaning that clients added before may not receive change or
>>> attribute-change events if the mask was modified accordingly.
>>
>> I'm aware of this problem (it happens also for other libraries, I
>> believe). No idea yet whether it is important to fix it. But maybe you
>> add a TODO entry at the end of filenotify.el.
>
> I think, it is important. For example, auto-revert's file-notify
> mechanism (using '(change attribute-change) as flags) would break, if
> some other package decides to watch the same file, but for
> attribute-changes only.
>
> It seems to me that this only affects inotify, since all other back-ends
> return a newly created descriptor, but I haven't explicitly checked
> this.
So I would let it for you to implement it in inotify.c. When there is
also a respective test, we will see whether it is a problem for other
backends, too.
> -ap
Best regards, Michael.
next prev parent reply other threads:[~2017-03-22 13:17 UTC|newest]
Thread overview: 63+ messages / expand[flat|nested] mbox.gz Atom feed top
2017-03-16 14:14 bug#26126: 26.0.50; file-notify-rm-watch removes arbitrary watches Andreas Politz
2017-03-17 14:41 ` Michael Albinus
2017-03-17 14:59 ` Andreas Politz
2017-03-17 16:08 ` Michael Albinus
2017-03-17 17:45 ` Andreas Politz
2017-03-18 8:30 ` Michael Albinus
2017-03-18 13:32 ` Andreas Politz
2017-03-18 19:36 ` Michael Albinus
2017-03-18 20:37 ` Andreas Politz
2017-03-19 9:39 ` Michael Albinus
2017-03-19 11:14 ` Andreas Politz
2017-03-19 19:23 ` Michael Albinus
2017-03-20 20:39 ` Andreas Politz
2017-03-21 8:44 ` Michael Albinus
2017-03-21 15:37 ` Eli Zaretskii
2017-03-21 18:59 ` Andreas Politz
2017-03-22 13:23 ` Michael Albinus
2017-03-22 15:44 ` Eli Zaretskii
2017-03-22 16:01 ` Michael Albinus
2017-03-22 16:13 ` Eli Zaretskii
2017-03-22 16:23 ` Michael Albinus
2017-03-24 19:54 ` Andreas Politz
2017-03-25 12:50 ` Michael Albinus
2017-03-25 13:59 ` Andreas Politz
2017-03-25 14:08 ` Michael Albinus
2017-03-25 16:27 ` Andreas Politz
2017-03-25 16:37 ` Michael Albinus
2017-03-25 17:12 ` Andreas Politz
2017-03-25 18:36 ` Michael Albinus
2017-03-25 19:34 ` Andreas Politz
2017-03-26 7:08 ` Michael Albinus
2017-03-21 15:56 ` Andreas Politz
2017-03-22 12:56 ` Michael Albinus
2017-03-22 17:34 ` Andreas Politz
2017-03-22 18:49 ` Michael Albinus
2017-03-19 22:05 ` Andreas Politz
2017-03-21 13:05 ` Michael Albinus
2017-03-21 15:06 ` Andreas Politz
2017-03-21 15:54 ` Eli Zaretskii
2017-03-22 13:17 ` Michael Albinus [this message]
2017-03-22 17:43 ` Andreas Politz
2017-03-22 18:57 ` Michael Albinus
2017-03-22 20:02 ` Eli Zaretskii
2017-03-23 7:36 ` Michael Albinus
2017-03-23 15:22 ` Eli Zaretskii
2017-03-23 16:10 ` Michael Albinus
2017-03-22 19:40 ` Michael Albinus
2017-03-24 20:44 ` Andreas Politz
2017-03-25 6:35 ` Eli Zaretskii
2017-03-25 8:57 ` Andreas Politz
2017-03-25 14:17 ` Eli Zaretskii
2017-03-25 16:34 ` Andreas Politz
2017-03-25 14:04 ` Michael Albinus
2017-03-25 16:19 ` Andreas Politz
2017-03-25 17:09 ` Michael Albinus
2017-03-25 17:26 ` Andreas Politz
2017-03-25 18:18 ` Andreas Politz
2017-03-25 18:40 ` Michael Albinus
2017-03-25 16:21 ` Andreas Politz
2017-03-18 19:28 ` Andreas Politz
2017-03-18 19:49 ` Michael Albinus
2017-03-18 20:48 ` Andreas Politz
2017-03-30 18:15 ` Paul Eggert
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
List information: https://www.gnu.org/software/emacs/
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=877f3h4fjd.fsf@detlef \
--to=michael.albinus@gmx.de \
--cc=26126@debbugs.gnu.org \
--cc=politza@hochschule-trier.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this public inbox
https://git.savannah.gnu.org/cgit/emacs.git
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).