Bug#646016: perl: undefined behaviour in ext/POSIX/t/sysconf.t wrt FIFOs

Dominic Hargreaves dom at earth.li
Tue Nov 1 17:50:45 UTC 2011


On Thu, Oct 20, 2011 at 05:38:51PM +0200, Pino Toscano wrote:
> while compiling perl 5.14.2 on GNU/Hurd, I ran into what it seems a
> undefined POSIX behaviour in ext/POSIX/t/sysconf.t.
> 
>       my $fd = POSIX::open($fifo, O_RDWR)
> 	  or skip("could not open $fifo ($!)", 3 * @path_consts_fifo);
> 
> according to the POSIX open()[1] about O_RDWR,
>   The result is undefined if this flag is applied to a FIFO.
> .... which is actually our case.
> Apparently Linux and *FreeBSD (and maybe also OSes) accept this
> behaviour, but on GNU/Hurd this causes the open() call to block
> undefinitely. Given there's nothing done with the FIFO if not querying
> {,f}pathconf() values, the proposed solution I attached is to change
> the opening mode to "O_RDONLY | O_NONBLOCK".

Thanks for the patch. I'm testing this on bleadperl now and will
forward upstream prior to applying locally, using your message above
in the commit log.

-- 
Dominic Hargreaves | http://www.larted.org.uk/~dom/
PGP key 5178E2A5 from the.earth.li (keyserver,web,email)






More information about the Perl-maintainers mailing list