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

Pino Toscano pino at debian.org
Thu Oct 20 15:38:51 UTC 2011


Package: perl
Version: 5.14.2-1
Severity: normal
Tags: patch

Hi,

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".

[1] http://pubs.opengroup.org/onlinepubs/9699919799/functions/open.html

Thanks,
-- 
Pino
-------------- next part --------------
A non-text attachment was scrubbed...
Name: sysconf.t-posix.diff
Type: text/x-diff
Size: 377 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/perl-maintainers/attachments/20111020/be0994a1/attachment.diff>


More information about the Perl-maintainers mailing list