kern/94772: FIFOs (named pipes) + select() == broken
Bruce Evans
bde at zeta.org.au
Thu Mar 23 00:50:18 UTC 2006
The following reply was made to PR kern/94772; it has been noted by GNATS.
From: Bruce Evans <bde at zeta.org.au>
To: Oliver Fromme <olli at lurza.secnetix.de>
Cc: bug-followup at freebsd.org
Subject: Re: kern/94772: FIFOs (named pipes) + select() == broken
Date: Thu, 23 Mar 2006 11:47:36 +1100 (EST)
On Wed, 22 Mar 2006, Oliver Fromme wrote:
> Bruce Evans wrote:
> > Here is a program that tests more cases. I made it give no output
> > ...
>
> It does not produce any output on Solaris 9, NetBSD 3.0,
> DEC UNIX 4.0D and Linux 2.4.32. (I had to replace signal()
> with sigset() on Solaris, add a few missing #includes and
> write small replacements for err() and warnx().)
I thought that the signal() was portable. Under FreeBSD, <stdlib.h>
of all things is the only missing include. I stopped trying to avoid
using the err() family in test programs when Linux got them 6-8 years
ago.
> (By the way, DEC UNIX 4.0D _does_ have a bug: If the FIFO
> has O_NONBLOCK set and no writer has opened the FIFO, then
> select() doesn't block. That's a violation of SUSv3/POSIX.
> However, that's not related to the bug described in this
> PR, and it doesn't seem to be checked by the test program.)
Will reply to later mail about this.
> I would be happy to help out, but I'm not familiar with
> that part of the kernel code. I wouldn't even know how
> to start. Also, I don't have a spare box running Current
> (I assume that such patches would have to go into Current
> first). Or is the difference of that code between 6-Stable
> and Current very small?
I've been trying for about a month to get someone else to fix this for
-current since I haven't run most of it for a long time. The diffs
relative to -current would be small but still need testing.
Bruce
More information about the freebsd-bugs
mailing list