public inbox for linux-kernel@vger.kernel.org
 help / color / mirror / Atom feed
From: Alex Riesen <Alexander.Riesen@synopsys.com>
To: Oskar Liljeblad <oskar@osk.mine.nu>
Cc: linux-kernel@vger.kernel.org
Subject: Re: directory notifications lost after fork?
Date: Mon, 11 Mar 2002 08:41:54 +0100	[thread overview]
Message-ID: <20020311084154.C4573@riesen-pc.gr05.synopsys.com> (raw)
In-Reply-To: <20020310210802.GA1695@oskar>
In-Reply-To: <20020310210802.GA1695@oskar>

Just a "me too".
I have tried also to use the default (SIGIO) by setting owner pid (just
in case). It is all the same.
Does someone use the notifications, btw?
The whole thing seems somewhat untested.
-alex

On Sun, Mar 10, 2002 at 10:08:02PM +0100, Oskar Liljeblad wrote:
> The code snipper demonstrates what I consider a bug in the
> dnotify facilities in the kernel. After a fork, all registered
> notifications are lost in the process where they originally
> where registered (the parent process). "lost" here means that
> the signal specified with F_SETSIG fcntl no longer is delivered
> when notified.
> 
> How to reproduce (tested with 2.4.17):
>   gcc -o dnoticebug dnoticebug.c
>   dnoticebug &				# run in background
>   cat dnoticebug.c >/dev/null		# "notified" should now be printed
>   cat dnoticebug.c >/dev/null		# nothing is printed this time
>   
> If you comment out the line with fork below, "notified" *will* be
> printed every time you cat dnoticebug.c.
> 
> I'm not subscribed to the list so I'd appreciate if you CCed me.
> (Otherwise I'd have to use the archives :) Thanks.
> 
> Oskar Liljeblad (oskar@osk.mine.nu)
> 
> ===
> 
> #define _GNU_SOURCE
> #include <fcntl.h>
> #include <signal.h>
> #include <stdio.h>
> #include <unistd.h>
> 
> static void handler(int sig, siginfo_t *si, void *data)
> {
> 	printf("notified\n");
> }
> 
> int main(void)
> {
> 	struct sigaction act;
> 	int fd;
> 
> 	act.sa_sigaction = handler;
> 	sigemptyset(&act.sa_mask);
> 	act.sa_flags = SA_SIGINFO;
> 	sigaction(SIGRTMIN, &act, NULL);
> 
> 	fd = open(".", O_RDONLY);
> 	fcntl(fd, F_SETSIG, SIGRTMIN);
> 	fcntl(fd, F_NOTIFY, DN_ACCESS|DN_MULTISHOT);
> 
> 	while (1) {
> 		pause();
> 		if (fork() <= 0) exit(0);
> 		wait(NULL);
> 	}
> }
> -
> To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> Please read the FAQ at  http://www.tux.org/lkml/

  reply	other threads:[~2002-03-11  7:42 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-03-10 21:08 directory notifications lost after fork? Oskar Liljeblad
2002-03-11  7:41 ` Alex Riesen [this message]
2002-03-12 12:19   ` Jamie Lokier
2002-03-11  8:50 ` Oskar Liljeblad
2002-03-11 10:20   ` Alex Riesen
2002-03-11 10:26 ` Andrea Arcangeli
2002-03-12  1:04   ` Stephen Rothwell
2002-03-12  1:20     ` Andrea Arcangeli
2002-03-12  2:59       ` Stephen Rothwell
2002-03-12  4:01         ` Andrea Arcangeli
     [not found] <20020311122701.A9718@riesen-pc.gr05.synopsys.com>
2002-03-11 19:34 ` Alex Riesen
  -- strict thread matches above, loose matches on Subject: below --
2002-03-12  1:47 Malte Starostik
2002-03-12 12:55 ` Jamie Lokier
2002-03-12 16:37   ` Daniel Phillips
2002-03-12 17:21     ` Jamie Lokier

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

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20020311084154.C4573@riesen-pc.gr05.synopsys.com \
    --to=alexander.riesen@synopsys.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=oskar@osk.mine.nu \
    /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.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox