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