Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix hang in ext/POSIX/t/sysconf.t on GNU/Hurd #11731

Closed
p5pRT opened this issue Nov 3, 2011 · 5 comments
Closed

Fix hang in ext/POSIX/t/sysconf.t on GNU/Hurd #11731

p5pRT opened this issue Nov 3, 2011 · 5 comments

Comments

@p5pRT
Copy link

p5pRT commented Nov 3, 2011

Migrated from rt.perl.org#102888 (status was 'resolved')

Searchable as RT102888$

@p5pRT
Copy link
Author

p5pRT commented Nov 3, 2011

From @jmdh

Created by @jmdh

This is a bug report for perl from dom@​earth.li,
generated with the help of perlbug 1.39 running under perl 5.15.4.

-----------------------------------------------------------------
Please find attached a patch fixing a hang in ext/POSIX/t/sysconf.t on
GNU/Hurd.

Original author details and commentary enclosed.

Debian bug report is <http​://bugs.debian.org/646016>

The patch is verified to fix the hang with blead on GNU/Hurd; but note
that there are still some test failures in that file to investigate.

Perl Info

Flags:
    category=library
    severity=medium

Site configuration information for perl 5.15.4:

Configured by dom at Tue Nov  1 17:05:08 UTC 2011.

Summary of my perl5 (revision 5 version 15 subversion 4) configuration:
  Local Commit: 644f49267bda687a2fcb7b0101c568c76b160b6f
  Ancestor: a058c51605ec2d38bf37f2e2c4f81926e3a90ea9
  Platform:
    osname=gnu, osvers=0.3, archname=i686-AT386-gnu
    uname='gnu hurdtest 0.3 gnu-mach 1.3.99hurd-0.3 i686-at386 gnu '
    config_args='-de -Dusedevel -Dprefix=/home/dom/blead'
    hint=recommended, useposix=true, d_sigaction=define
    useithreads=undef, usemultiplicity=undef
    useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
    use64bitint=undef, use64bitall=undef, uselongdouble=undef
    usemymalloc=y, bincompat5005=undef
  Compiler:
    cc='cc', ccflags ='-D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include',
    optimize='-O2',
    cppflags='-D_GNU_SOURCE -fno-strict-aliasing -pipe -fstack-protector -I/usr/local/include'
    ccversion='', gccversion='4.6.1', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=1234
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
    ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=4
    alignbytes=4, prototype=define
  Linker and Libraries:
    ld='cc', ldflags =' -fstack-protector -L/usr/local/lib'
    libpth=/usr/local/lib /lib/i386-gnu /lib /usr/lib/i386-gnu /usr/lib
    libs=-lgdbm -ldb -ldl -lm -lcrypt -lutil -lpthread -lbsd -lgdbm_compat
    perllibs=-ldl -lm -lcrypt -lutil -lpthread -lbsd
    libc=, so=so, useshrplib=false, libperl=libperl.a
    gnulibc_version='2.13'
  Dynamic Linking:
    dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-Wl,-E'
    cccdlflags='-fpic', lddlflags='-shared -L/usr/local/lib -fstack-protector'

Locally applied patches:
    


@INC for perl 5.15.4:
    /home/dom/blead/lib/perl5/site_perl/5.15.4/i686-AT386-gnu
    /home/dom/blead/lib/perl5/site_perl/5.15.4
    /home/dom/blead/lib/perl5/5.15.4/i686-AT386-gnu
    /home/dom/blead/lib/perl5/5.15.4
    .


Environment for perl 5.15.4:
    HOME=/home/dom
    LANG=en_GB.UTF-8
    LANGUAGE=en_GB:en
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)
    PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
    PERL_BADLANG (unset)
    SHELL=/bin/bash

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

@p5pRT
Copy link
Author

p5pRT commented Nov 3, 2011

From @jmdh

0001-Fix-hang-in-ext-POSIX-t-sysconf.t-on-GNU-Hurd.patch
From e45bf55d20b5565f5fe65593f8e5d689c02a4487 Mon Sep 17 00:00:00 2001
From: Pino Toscano <pino@debian.org>
Date: Mon, 31 Oct 2011 21:37:04 +0000
Subject: [PATCH] Fix hang in ext/POSIX/t/sysconf.t on GNU/Hurd

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
---
 ext/POSIX/t/sysconf.t |    2 +-
 1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/ext/POSIX/t/sysconf.t b/ext/POSIX/t/sysconf.t
index 8008996..65625a8 100644
--- a/ext/POSIX/t/sysconf.t
+++ b/ext/POSIX/t/sysconf.t
@@ -125,7 +125,7 @@ SKIP: {
 	or skip("could not create fifo $fifo ($!)", 2 * 3 * @path_consts_fifo);
 
   SKIP: {
-      my $fd = POSIX::open($fifo, O_RDWR)
+      my $fd = POSIX::open($fifo, O_RDONLY | O_NONBLOCK)
 	  or skip("could not open $fifo ($!)", 3 * @path_consts_fifo);
 
       for my $constant (@path_consts_fifo) {
-- 
1.7.7

@p5pRT
Copy link
Author

p5pRT commented Nov 4, 2011

From @nwc10

On Thu, Nov 03, 2011 at 03​:10​:24PM -0700, Dominic Hargreaves wrote​:

Please find attached a patch fixing a hang in ext/POSIX/t/sysconf.t on
GNU/Hurd.

Original author details and commentary enclosed.

Debian bug report is <http​://bugs.debian.org/646016>

The patch is verified to fix the hang with blead on GNU/Hurd; but note
that there are still some test failures in that file to investigate.

Thanks, applied (8040185)

Nicholas Clark

@p5pRT
Copy link
Author

p5pRT commented Nov 4, 2011

The RT System itself - Status changed from 'new' to 'open'

@p5pRT
Copy link
Author

p5pRT commented Nov 4, 2011

@nwc10 - Status changed from 'open' to 'resolved'

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant