Skip Menu |
Report information
Id: 120982
Status: resolved
Priority: 0/
Queue: perl5

Owner: Nobody
Requestors: verdrehung [at] gmail.com
Cc:
AdminCc:

Operating System: Linux
PatchStatus: (no value)
Severity: High
Type: library
Perl Version: 5.18.1
Fixed In: (no value)



From: Олег Г <verdrehung [...] gmail.com>
To: perlbug [...] perl.org
Subject: IO::Select->select() returns empty list even if there were no errors
Date: Mon, 13 Jan 2014 19:31:44 +0700
Download (untitled) / with headers
text/plain 9.3k
Download (untitled) / with headers
text/html 11.9k
This is a bug report for perl from oleg<>cpan.org,
generated with the help of perlbug 1.39 running under perl 5.18.1.


-----------------------------------------------------------------
[Please describe your issue here]
From IO::Select->select documentation: "Upon error an empty list is returned."
But in fact it returns empty list if select() return value was <= 0. See
https://metacpan.org/source/GBARR/IO-1.25/lib/IO/Select.pm#L191
So if select() returns 0 (0 file handles ready) IO::Select determines this
as error and returns empty list and IO::Select user can't distinguish error
from the fact that there is no ready file handles yet.


[Please do not change anything below this line]
-----------------------------------------------------------------
---
Flags:
    category=library
    severity=high
    module=IO::Select
---
Site configuration information for perl 5.18.1:

Configured by Debian Project at Wed Sep 11 23:11:04 UTC 2013.

Summary of my perl5 (revision 5 version 18 subversion 1) configuration:
  
  Platform:
    osname=linux, osvers=3.2.0-4-686-pae, archname=i486-linux-gnu-thread-multi-64int
    uname='linux callisto 3.2.0-4-686-pae #1 smp debian 3.2.46-1+deb7u1 i686 gnulinux '
    config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN -D_FORTIFY_SOURCE=2 -g -O2 -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC -Darchname=i486-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.18 -Darchlib=/usr/lib/perl/5.18 -Dvendorprefix=/usr -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.18.1 -Dsitearch=/usr/local/lib/perl/5.18.1 -Dman1dir=/usr/share/man/man1 -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm -Ui_libutil -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib -Dlibperl=libperl.so.5.18.1 -des'
    hint=recommended, useposix=true, d_sigaction=define
    useithreads=define, usemultiplicity=define
    useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef
    use64bitint=define, use64bitall=undef, uselongdouble=undef
    usemymalloc=n, bincompat5005=undef
  Compiler:
    cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fstack-protector -fno-strict-aliasing -pipe -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64',
    optimize='-O2 -g',
    cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fstack-protector -fno-strict-aliasing -pipe -I/usr/local/include'
    ccversion='', gccversion='4.8.1', gccosandvers=''
    intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=12345678
    d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12
    ivtype='long long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', lseeksize=8
    alignbytes=4, prototype=define
  Linker and Libraries:
    ld='cc', ldflags =' -fstack-protector -L/usr/local/lib'
    libpth=/usr/local/lib /lib/i386-linux-gnu /lib/../lib /usr/lib/i386-linux-gnu /usr/lib/../lib /lib /usr/lib
    libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt
    perllibs=-ldl -lm -lpthread -lc -lcrypt
    libc=, so=so, useshrplib=true, libperl=libperl.so.5.18.1
    gnulibc_version='2.17'
  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:
    DEBPKG:debian/cpan_definstalldirs - Provide a sensible INSTALLDIRS default for modules installed from CPAN.
    DEBPKG:debian/db_file_ver - http://bugs.debian.org/340047 Remove overly restrictive DB_File version check.
    DEBPKG:debian/doc_info - Replace generic man(1) instructions with Debian-specific information.
    DEBPKG:debian/enc2xs_inc - http://bugs.debian.org/290336 Tweak enc2xs to follow symlinks and ignore missing @INC directories.
    DEBPKG:debian/errno_ver - http://bugs.debian.org/343351 Remove Errno version check due to upgrade problems with long-running processes.
    DEBPKG:debian/libperl_embed_doc - http://bugs.debian.org/186778 Note that libperl-dev package is required for embedded linking
    DEBPKG:fixes/respect_umask - Respect umask during installation
    DEBPKG:debian/writable_site_dirs - Set umask approproately for site install directories
    DEBPKG:debian/extutils_set_libperl_path - EU:MM: Set location of libperl.a to /usr/lib
    DEBPKG:debian/no_packlist_perllocal - Don't install .packlist or perllocal.pod for perl or vendor
    DEBPKG:debian/prefix_changes - Fiddle with *PREFIX and variables written to the makefile
    DEBPKG:debian/fakeroot - Postpone LD_LIBRARY_PATH evaluation to the binary targets.
    DEBPKG:debian/instmodsh_doc - Debian policy doesn't install .packlist files for core or vendor.
    DEBPKG:debian/ld_run_path - Remove standard libs from LD_RUN_PATH as per Debian policy.
    DEBPKG:debian/libnet_config_path - Set location of libnet.cfg to /etc/perl/Net as /usr may not be writable.
    DEBPKG:debian/mod_paths - Tweak @INC ordering for Debian
    DEBPKG:debian/module_build_man_extensions - http://bugs.debian.org/479460 Adjust Module::Build manual page extensions for the Debian Perl policy
    DEBPKG:debian/prune_libs - http://bugs.debian.org/128355 Prune the list of libraries wanted to what we actually need.
    DEBPKG:fixes/net_smtp_docs - [rt.cpan.org #36038] http://bugs.debian.org/100195 Document the Net::SMTP 'Port' option
    DEBPKG:debian/perlivp - http://bugs.debian.org/510895 Make perlivp skip include directories in /usr/local
    DEBPKG:debian/cpanplus_definstalldirs - http://bugs.debian.org/533707 Configure CPANPLUS to use the site directories by default.
    DEBPKG:debian/cpanplus_config_path - Save local versions of CPANPLUS::Config::System into /etc/perl.
    DEBPKG:debian/deprecate-with-apt - http://bugs.debian.org/702096 Point users to Debian packages of deprecated core modules
    DEBPKG:debian/squelch-locale-warnings - http://bugs.debian.org/508764 Squelch locale warnings in Debian package maintainer scripts
    DEBPKG:debian/skip-upstream-git-tests - Skip tests specific to the upstream Git repository
    DEBPKG:debian/patchlevel - http://bugs.debian.org/567489 List packaged patches for 5.18.1-4 in patchlevel.h
    DEBPKG:debian/skip-kfreebsd-crash - http://bugs.debian.org/628493 [perl #96272] Skip a crashing test case in t/op/threads.t on GNU/kFreeBSD
    DEBPKG:fixes/document_makemaker_ccflags - http://bugs.debian.org/628522 [rt.cpan.org #68613] Document that CCFLAGS should include $Config{ccflags}
    DEBPKG:debian/find_html2text - http://bugs.debian.org/640479 Configure CPAN::Distribution with correct name of html2text
    DEBPKG:debian/hurd_test_todo_syslog - http://bugs.debian.org/650093 Disable failing GNU/Hurd tests in cpan/Sys-Syslog/t/syslog.t
    DEBPKG:debian/hurd_test_skip_sigdispatch - http://bugs.debian.org/650188 Disable failing GNU/Hurd tests op/sigdispatch.t
    DEBPKG:debian/hurd_test_skip_stack - http://bugs.debian.org/650175 Disable failing GNU/Hurd tests dist/threads/t/stack.t
    DEBPKG:debian/hurd_test_skip_pipe - http://bugs.debian.org/650187 Disable failing GNU/Hurd tests io/pipe.t
    DEBPKG:debian/hurd_test_skip_io_pipe - http://bugs.debian.org/650096 Disable failing GNU/Hurd tests dist/IO/t/io_pipe.t
    DEBPKG:fixes/manpage_name_Test-Harness - http://bugs.debian.org/650451 [rt.cpan.org #73399] cpan/Test-Harness: add NAME headings in modules with POD
    DEBPKG:debian/makemaker-pasthru - http://bugs.debian.org/660195 [rt.cpan.org #28632] Make EU::MM pass LD through to recursive Makefile.PL invocations
    DEBPKG:debian/perl5db-x-terminal-emulator.patch - http://bugs.debian.org/668490 Invoke x-terminal-emulator rather than xterm in perl5db.pl
    DEBPKG:debian/cpan-missing-site-dirs - http://bugs.debian.org/688842 Fix CPAN::FirstTime defaults with nonexisting site dirs if a parent is writable
    DEBPKG:debian/hurd_net_ping_disable_test - http://bugs.debian.org/709385 Disable failing Net-Ping tests for GNU/Hurd
    DEBPKG:fixes/memoize_storable_nstore - [rt.cpan.org #77790] http://bugs.debian.org/587650 Memoize::Storable: respect 'nstore' option not respected
    DEBPKG:fixes/net_ftp_failed_command - [rt.cpan.org #37700] http://bugs.debian.org/491062 Net::FTP: cope gracefully with a failed command
    DEBPKG:fixes/perlbug-patchlist - [3541c11] http://bugs.debian.org/710842 [perl #118433] Make perlbug look up the list of local patches at run time
    DEBPKG:fixes/regexp-preserve - http://bugs.debian.org/718209 [perl #118213] [f4194b2] RT #118213: handle $r=qr/.../; /$r/p properly
    DEBPKG:fixes/regexp-preserve-testcases - http://bugs.debian.org/718209 [perl #118213] [4d7b2f5] Disable new //p tests
    DEBPKG:fixes/module_metadata_security_doc - [68cdd4b] CVE-2013-1437 documentation fix
    DEBPKG:fixes/module_metadata_taint_fix - [bff978f] http://bugs.debian.org/722210 [rt.cpan.org #88576] untaint version, if needed, in Module::Metadata

---
@INC for perl 5.18.1:
    /etc/perl
    /usr/local/lib/perl/5.18.1
    /usr/local/share/perl/5.18.1
    /usr/lib/perl5
    /usr/share/perl5
    /usr/lib/perl/5.18
    /usr/share/perl/5.18
    /usr/local/lib/site_perl
    .

---
Environment for perl 5.18.1:
    HOME=/home/oleg
    LANG=ru_RU.UTF-8
    LANGUAGE (unset)
    LD_LIBRARY_PATH (unset)
    LOGDIR (unset)
    PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games
    PERL_BADLANG (unset)
    SHELL=/bin/bash

RT-Send-CC: perl5-porters [...] perl.org
Download (untitled) / with headers
text/plain 803b
Trimming this report so that it will show up in the rt.perl.org GUI. On Mon Jan 13 04:31:58 2014, verdrehung@gmail.com wrote: Show quoted text
> This is a bug report for perl from oleg<>cpan.org, > generated with the help of perlbug 1.39 running under perl 5.18.1. > > > ----------------------------------------------------------------- > [Please describe your issue here] > From IO::Select->select documentation: "Upon error an empty list is > returned." > But in fact it returns empty list if select() return value was <= 0. See > https://metacpan.org/source/GBARR/IO-1.25/lib/IO/Select.pm#L191 > So if select() returns 0 (0 file handles ready) IO::Select determines this > as error and returns empty list and IO::Select user can't distinguish error > from the fact that there is no ready file handles yet. > >
Date: Tue, 14 Jan 2014 21:56:08 +0400
CC: bugs-bitbucket [...] rt.perl.org
From: Victor Efimov <victor [...] vsespb.ru>
To: Perl5 Porters <perl5-porters [...] perl.org>
Subject: Re: [perl #120982] IO::Select->select() returns empty list even if there were no errors
Download (untitled) / with headers
text/plain 10.1k
duplicate https://rt.cpan.org/Public/Bug/Display.html?id=90091 there are 35 open issues on CPAN RT btw. 2014/1/13 Олег Г <perlbug-followup@perl.org>: Show quoted text
> # New Ticket Created by Олег Г > # Please include the string: [perl #120982] > # in the subject line of all future correspondence about this issue. > # <URL: https://rt.perl.org/Ticket/Display.html?id=120982 > > > > This is a bug report for perl from oleg<>cpan.org, > generated with the help of perlbug 1.39 running under perl 5.18.1. > > > ----------------------------------------------------------------- > [Please describe your issue here]
> >From IO::Select->select documentation: "Upon error an empty list is
> returned." > But in fact it returns empty list if select() return value was <= 0. See > https://metacpan.org/source/GBARR/IO-1.25/lib/IO/Select.pm#L191 > So if select() returns 0 (0 file handles ready) IO::Select determines this > as error and returns empty list and IO::Select user can't distinguish error > from the fact that there is no ready file handles yet. > > > [Please do not change anything below this line] > ----------------------------------------------------------------- > --- > Flags: > category=library > severity=high > module=IO::Select > --- > Site configuration information for perl 5.18.1: > > Configured by Debian Project at Wed Sep 11 23:11:04 UTC 2013. > > Summary of my perl5 (revision 5 version 18 subversion 1) configuration: > > Platform: > osname=linux, osvers=3.2.0-4-686-pae, > archname=i486-linux-gnu-thread-multi-64int > uname='linux callisto 3.2.0-4-686-pae #1 smp debian 3.2.46-1+deb7u1 > i686 gnulinux ' > config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN > -D_FORTIFY_SOURCE=2 -g -O2 -fstack-protector --param=ssp-buffer-size=4 > -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro > -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC > -Darchname=i486-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.18 > -Darchlib=/usr/lib/perl/5.18 -Dvendorprefix=/usr > -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 > -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.18.1 > -Dsitearch=/usr/local/lib/perl/5.18.1 -Dman1dir=/usr/share/man/man1 > -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 > -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl > -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm > -Ui_libutil -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib > -Dlibperl=libperl.so.5.18.1 -des' > hint=recommended, useposix=true, d_sigaction=define > useithreads=define, usemultiplicity=define > useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef > use64bitint=define, use64bitall=undef, uselongdouble=undef > usemymalloc=n, bincompat5005=undef > Compiler: > cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN > -fstack-protector -fno-strict-aliasing -pipe -I/usr/local/include > -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', > optimize='-O2 -g', > cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fstack-protector > -fno-strict-aliasing -pipe -I/usr/local/include' > ccversion='', gccversion='4.8.1', gccosandvers='' > intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=12345678 > d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12 > ivtype='long long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', > lseeksize=8 > alignbytes=4, prototype=define > Linker and Libraries: > ld='cc', ldflags =' -fstack-protector -L/usr/local/lib' > libpth=/usr/local/lib /lib/i386-linux-gnu /lib/../lib > /usr/lib/i386-linux-gnu /usr/lib/../lib /lib /usr/lib > libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt > perllibs=-ldl -lm -lpthread -lc -lcrypt > libc=, so=so, useshrplib=true, libperl=libperl.so.5.18.1 > gnulibc_version='2.17' > 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: > DEBPKG:debian/cpan_definstalldirs - Provide a sensible INSTALLDIRS > default for modules installed from CPAN. > DEBPKG:debian/db_file_ver - http://bugs.debian.org/340047 Remove overly > restrictive DB_File version check. > DEBPKG:debian/doc_info - Replace generic man(1) instructions with > Debian-specific information. > DEBPKG:debian/enc2xs_inc - http://bugs.debian.org/290336 Tweak enc2xs > to follow symlinks and ignore missing @INC directories. > DEBPKG:debian/errno_ver - http://bugs.debian.org/343351 Remove Errno > version check due to upgrade problems with long-running processes. > DEBPKG:debian/libperl_embed_doc - http://bugs.debian.org/186778 Note > that libperl-dev package is required for embedded linking > DEBPKG:fixes/respect_umask - Respect umask during installation > DEBPKG:debian/writable_site_dirs - Set umask approproately for site > install directories > DEBPKG:debian/extutils_set_libperl_path - EU:MM: Set location of > libperl.a to /usr/lib > DEBPKG:debian/no_packlist_perllocal - Don't install .packlist or > perllocal.pod for perl or vendor > DEBPKG:debian/prefix_changes - Fiddle with *PREFIX and variables > written to the makefile > DEBPKG:debian/fakeroot - Postpone LD_LIBRARY_PATH evaluation to the > binary targets. > DEBPKG:debian/instmodsh_doc - Debian policy doesn't install .packlist > files for core or vendor. > DEBPKG:debian/ld_run_path - Remove standard libs from LD_RUN_PATH as > per Debian policy. > DEBPKG:debian/libnet_config_path - Set location of libnet.cfg to > /etc/perl/Net as /usr may not be writable. > DEBPKG:debian/mod_paths - Tweak @INC ordering for Debian > DEBPKG:debian/module_build_man_extensions - > http://bugs.debian.org/479460 Adjust Module::Build manual page extensions > for the Debian Perl policy > DEBPKG:debian/prune_libs - http://bugs.debian.org/128355 Prune the list > of libraries wanted to what we actually need. > DEBPKG:fixes/net_smtp_docs - [rt.cpan.org #36038] > http://bugs.debian.org/100195 Document the Net::SMTP 'Port' option > DEBPKG:debian/perlivp - http://bugs.debian.org/510895 Make perlivp skip > include directories in /usr/local > DEBPKG:debian/cpanplus_definstalldirs - > http://bugs.debian.org/533707Configure CPANPLUS to use the site > directories by default. > DEBPKG:debian/cpanplus_config_path - Save local versions of > CPANPLUS::Config::System into /etc/perl. > DEBPKG:debian/deprecate-with-apt - http://bugs.debian.org/702096 Point > users to Debian packages of deprecated core modules > DEBPKG:debian/squelch-locale-warnings - > http://bugs.debian.org/508764Squelch locale warnings in Debian package > maintainer scripts > DEBPKG:debian/skip-upstream-git-tests - Skip tests specific to the > upstream Git repository > DEBPKG:debian/patchlevel - http://bugs.debian.org/567489 List packaged > patches for 5.18.1-4 in patchlevel.h > DEBPKG:debian/skip-kfreebsd-crash - http://bugs.debian.org/628493 [perl > #96272] Skip a crashing test case in t/op/threads.t on GNU/kFreeBSD > DEBPKG:fixes/document_makemaker_ccflags - http://bugs.debian.org/628522[ > rt.cpan.org #68613] Document that CCFLAGS should include $Config{ccflags} > DEBPKG:debian/find_html2text - http://bugs.debian.org/640479 Configure > CPAN::Distribution with correct name of html2text > DEBPKG:debian/hurd_test_todo_syslog - > http://bugs.debian.org/650093Disable failing GNU/Hurd tests in > cpan/Sys-Syslog/t/syslog.t > DEBPKG:debian/hurd_test_skip_sigdispatch - > http://bugs.debian.org/650188Disable failing GNU/Hurd tests > op/sigdispatch.t > DEBPKG:debian/hurd_test_skip_stack - > http://bugs.debian.org/650175Disable failing GNU/Hurd tests > dist/threads/t/stack.t > DEBPKG:debian/hurd_test_skip_pipe - > http://bugs.debian.org/650187Disable failing GNU/Hurd tests io/pipe.t > DEBPKG:debian/hurd_test_skip_io_pipe - > http://bugs.debian.org/650096Disable failing GNU/Hurd tests > dist/IO/t/io_pipe.t > DEBPKG:fixes/manpage_name_Test-Harness - http://bugs.debian.org/650451 [ > rt.cpan.org #73399] cpan/Test-Harness: add NAME headings in modules with POD > DEBPKG:debian/makemaker-pasthru - http://bugs.debian.org/660195 [ > rt.cpan.org #28632] Make EU::MM pass LD through to recursive Makefile.PL > invocations > DEBPKG:debian/perl5db-x-terminal-emulator.patch - > http://bugs.debian.org/668490 Invoke x-terminal-emulator rather than xterm > in perl5db.pl > DEBPKG:debian/cpan-missing-site-dirs - > http://bugs.debian.org/688842Fix CPAN::FirstTime defaults with > nonexisting site dirs if a parent is > writable > DEBPKG:debian/hurd_net_ping_disable_test - > http://bugs.debian.org/709385Disable failing Net-Ping tests for > GNU/Hurd > DEBPKG:fixes/memoize_storable_nstore - [rt.cpan.org #77790] > http://bugs.debian.org/587650 Memoize::Storable: respect 'nstore' option > not respected > DEBPKG:fixes/net_ftp_failed_command - [rt.cpan.org #37700] > http://bugs.debian.org/491062 Net::FTP: cope gracefully with a failed > command > DEBPKG:fixes/perlbug-patchlist - [3541c11] > http://bugs.debian.org/710842[perl #118433] Make perlbug look up the > list of local patches at run time > DEBPKG:fixes/regexp-preserve - http://bugs.debian.org/718209 [perl > #118213] [f4194b2] RT #118213: handle $r=qr/.../; /$r/p properly > DEBPKG:fixes/regexp-preserve-testcases - > http://bugs.debian.org/718209[perl #118213] [4d7b2f5] Disable new //p > tests > DEBPKG:fixes/module_metadata_security_doc - [68cdd4b] CVE-2013-1437 > documentation fix > DEBPKG:fixes/module_metadata_taint_fix - [bff978f] > http://bugs.debian.org/722210 [rt.cpan.org #88576] untaint version, if > needed, in Module::Metadata > > --- > @INC for perl 5.18.1: > /etc/perl > /usr/local/lib/perl/5.18.1 > /usr/local/share/perl/5.18.1 > /usr/lib/perl5 > /usr/share/perl5 > /usr/lib/perl/5.18 > /usr/share/perl/5.18 > /usr/local/lib/site_perl > . > > --- > Environment for perl 5.18.1: > HOME=/home/oleg > LANG=ru_RU.UTF-8 > LANGUAGE (unset) > LD_LIBRARY_PATH (unset) > LOGDIR (unset) > PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games > PERL_BADLANG (unset) > SHELL=/bin/bash >
From: Олег Г <verdrehung [...] gmail.com>
Subject: Re: [perl #120982] IO::Select->select() returns empty list even if there were no errors
To: perlbug-followup [...] perl.org
Date: Wed, 15 Jan 2014 01:22:31 +0700
Download (untitled) / with headers
text/plain 10.5k
Documentation says that it is currently maintained by the Perl Porters and should be reported here. So, maybe we'll get some response 2014/1/15 Victor Efimov via RT <perlbug-followup@perl.org>: Show quoted text
> duplicate https://rt.cpan.org/Public/Bug/Display.html?id=90091 > > there are 35 open issues on CPAN RT btw. > > > 2014/1/13 Олег Г <perlbug-followup@perl.org>:
>> # New Ticket Created by Олег Г >> # Please include the string: [perl #120982] >> # in the subject line of all future correspondence about this issue. >> # <URL: https://rt.perl.org/Ticket/Display.html?id=120982 > >> >> >> This is a bug report for perl from oleg<>cpan.org, >> generated with the help of perlbug 1.39 running under perl 5.18.1. >> >> >> ----------------------------------------------------------------- >> [Please describe your issue here]
>> >From IO::Select->select documentation: "Upon error an empty list is
>> returned." >> But in fact it returns empty list if select() return value was <= 0. See >> https://metacpan.org/source/GBARR/IO-1.25/lib/IO/Select.pm#L191 >> So if select() returns 0 (0 file handles ready) IO::Select determines this >> as error and returns empty list and IO::Select user can't distinguish error >> from the fact that there is no ready file handles yet. >> >> >> [Please do not change anything below this line] >> ----------------------------------------------------------------- >> --- >> Flags: >> category=library >> severity=high >> module=IO::Select >> --- >> Site configuration information for perl 5.18.1: >> >> Configured by Debian Project at Wed Sep 11 23:11:04 UTC 2013. >> >> Summary of my perl5 (revision 5 version 18 subversion 1) configuration: >> >> Platform: >> osname=linux, osvers=3.2.0-4-686-pae, >> archname=i486-linux-gnu-thread-multi-64int >> uname='linux callisto 3.2.0-4-686-pae #1 smp debian 3.2.46-1+deb7u1 >> i686 gnulinux ' >> config_args='-Dusethreads -Duselargefiles -Dccflags=-DDEBIAN >> -D_FORTIFY_SOURCE=2 -g -O2 -fstack-protector --param=ssp-buffer-size=4 >> -Wformat -Werror=format-security -Dldflags= -Wl,-z,relro >> -Dlddlflags=-shared -Wl,-z,relro -Dcccdlflags=-fPIC >> -Darchname=i486-linux-gnu -Dprefix=/usr -Dprivlib=/usr/share/perl/5.18 >> -Darchlib=/usr/lib/perl/5.18 -Dvendorprefix=/usr >> -Dvendorlib=/usr/share/perl5 -Dvendorarch=/usr/lib/perl5 >> -Dsiteprefix=/usr/local -Dsitelib=/usr/local/share/perl/5.18.1 >> -Dsitearch=/usr/local/lib/perl/5.18.1 -Dman1dir=/usr/share/man/man1 >> -Dman3dir=/usr/share/man/man3 -Dsiteman1dir=/usr/local/man/man1 >> -Dsiteman3dir=/usr/local/man/man3 -Duse64bitint -Dman1ext=1 -Dman3ext=3perl >> -Dpager=/usr/bin/sensible-pager -Uafs -Ud_csh -Ud_ualarm -Uusesfio -Uusenm >> -Ui_libutil -Uversiononly -DDEBUGGING=-g -Doptimize=-O2 -Duseshrplib >> -Dlibperl=libperl.so.5.18.1 -des' >> hint=recommended, useposix=true, d_sigaction=define >> useithreads=define, usemultiplicity=define >> useperlio=define, d_sfio=undef, uselargefiles=define, usesocks=undef >> use64bitint=define, use64bitall=undef, uselongdouble=undef >> usemymalloc=n, bincompat5005=undef >> Compiler: >> cc='cc', ccflags ='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN >> -fstack-protector -fno-strict-aliasing -pipe -I/usr/local/include >> -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64', >> optimize='-O2 -g', >> cppflags='-D_REENTRANT -D_GNU_SOURCE -DDEBIAN -fstack-protector >> -fno-strict-aliasing -pipe -I/usr/local/include' >> ccversion='', gccversion='4.8.1', gccosandvers='' >> intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=12345678 >> d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12 >> ivtype='long long', ivsize=8, nvtype='double', nvsize=8, Off_t='off_t', >> lseeksize=8 >> alignbytes=4, prototype=define >> Linker and Libraries: >> ld='cc', ldflags =' -fstack-protector -L/usr/local/lib' >> libpth=/usr/local/lib /lib/i386-linux-gnu /lib/../lib >> /usr/lib/i386-linux-gnu /usr/lib/../lib /lib /usr/lib >> libs=-lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt >> perllibs=-ldl -lm -lpthread -lc -lcrypt >> libc=, so=so, useshrplib=true, libperl=libperl.so.5.18.1 >> gnulibc_version='2.17' >> 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: >> DEBPKG:debian/cpan_definstalldirs - Provide a sensible INSTALLDIRS >> default for modules installed from CPAN. >> DEBPKG:debian/db_file_ver - http://bugs.debian.org/340047 Remove overly >> restrictive DB_File version check. >> DEBPKG:debian/doc_info - Replace generic man(1) instructions with >> Debian-specific information. >> DEBPKG:debian/enc2xs_inc - http://bugs.debian.org/290336 Tweak enc2xs >> to follow symlinks and ignore missing @INC directories. >> DEBPKG:debian/errno_ver - http://bugs.debian.org/343351 Remove Errno >> version check due to upgrade problems with long-running processes. >> DEBPKG:debian/libperl_embed_doc - http://bugs.debian.org/186778 Note >> that libperl-dev package is required for embedded linking >> DEBPKG:fixes/respect_umask - Respect umask during installation >> DEBPKG:debian/writable_site_dirs - Set umask approproately for site >> install directories >> DEBPKG:debian/extutils_set_libperl_path - EU:MM: Set location of >> libperl.a to /usr/lib >> DEBPKG:debian/no_packlist_perllocal - Don't install .packlist or >> perllocal.pod for perl or vendor >> DEBPKG:debian/prefix_changes - Fiddle with *PREFIX and variables >> written to the makefile >> DEBPKG:debian/fakeroot - Postpone LD_LIBRARY_PATH evaluation to the >> binary targets. >> DEBPKG:debian/instmodsh_doc - Debian policy doesn't install .packlist >> files for core or vendor. >> DEBPKG:debian/ld_run_path - Remove standard libs from LD_RUN_PATH as >> per Debian policy. >> DEBPKG:debian/libnet_config_path - Set location of libnet.cfg to >> /etc/perl/Net as /usr may not be writable. >> DEBPKG:debian/mod_paths - Tweak @INC ordering for Debian >> DEBPKG:debian/module_build_man_extensions - >> http://bugs.debian.org/479460 Adjust Module::Build manual page extensions >> for the Debian Perl policy >> DEBPKG:debian/prune_libs - http://bugs.debian.org/128355 Prune the list >> of libraries wanted to what we actually need. >> DEBPKG:fixes/net_smtp_docs - [rt.cpan.org #36038] >> http://bugs.debian.org/100195 Document the Net::SMTP 'Port' option >> DEBPKG:debian/perlivp - http://bugs.debian.org/510895 Make perlivp skip >> include directories in /usr/local >> DEBPKG:debian/cpanplus_definstalldirs - >> http://bugs.debian.org/533707Configure CPANPLUS to use the site >> directories by default. >> DEBPKG:debian/cpanplus_config_path - Save local versions of >> CPANPLUS::Config::System into /etc/perl. >> DEBPKG:debian/deprecate-with-apt - http://bugs.debian.org/702096 Point >> users to Debian packages of deprecated core modules >> DEBPKG:debian/squelch-locale-warnings - >> http://bugs.debian.org/508764Squelch locale warnings in Debian package >> maintainer scripts >> DEBPKG:debian/skip-upstream-git-tests - Skip tests specific to the >> upstream Git repository >> DEBPKG:debian/patchlevel - http://bugs.debian.org/567489 List packaged >> patches for 5.18.1-4 in patchlevel.h >> DEBPKG:debian/skip-kfreebsd-crash - http://bugs.debian.org/628493 [perl >> #96272] Skip a crashing test case in t/op/threads.t on GNU/kFreeBSD >> DEBPKG:fixes/document_makemaker_ccflags - http://bugs.debian.org/628522[ >> rt.cpan.org #68613] Document that CCFLAGS should include $Config{ccflags} >> DEBPKG:debian/find_html2text - http://bugs.debian.org/640479 Configure >> CPAN::Distribution with correct name of html2text >> DEBPKG:debian/hurd_test_todo_syslog - >> http://bugs.debian.org/650093Disable failing GNU/Hurd tests in >> cpan/Sys-Syslog/t/syslog.t >> DEBPKG:debian/hurd_test_skip_sigdispatch - >> http://bugs.debian.org/650188Disable failing GNU/Hurd tests >> op/sigdispatch.t >> DEBPKG:debian/hurd_test_skip_stack - >> http://bugs.debian.org/650175Disable failing GNU/Hurd tests >> dist/threads/t/stack.t >> DEBPKG:debian/hurd_test_skip_pipe - >> http://bugs.debian.org/650187Disable failing GNU/Hurd tests io/pipe.t >> DEBPKG:debian/hurd_test_skip_io_pipe - >> http://bugs.debian.org/650096Disable failing GNU/Hurd tests >> dist/IO/t/io_pipe.t >> DEBPKG:fixes/manpage_name_Test-Harness - http://bugs.debian.org/650451 [ >> rt.cpan.org #73399] cpan/Test-Harness: add NAME headings in modules with POD >> DEBPKG:debian/makemaker-pasthru - http://bugs.debian.org/660195 [ >> rt.cpan.org #28632] Make EU::MM pass LD through to recursive Makefile.PL >> invocations >> DEBPKG:debian/perl5db-x-terminal-emulator.patch - >> http://bugs.debian.org/668490 Invoke x-terminal-emulator rather than xterm >> in perl5db.pl >> DEBPKG:debian/cpan-missing-site-dirs - >> http://bugs.debian.org/688842Fix CPAN::FirstTime defaults with >> nonexisting site dirs if a parent is >> writable >> DEBPKG:debian/hurd_net_ping_disable_test - >> http://bugs.debian.org/709385Disable failing Net-Ping tests for >> GNU/Hurd >> DEBPKG:fixes/memoize_storable_nstore - [rt.cpan.org #77790] >> http://bugs.debian.org/587650 Memoize::Storable: respect 'nstore' option >> not respected >> DEBPKG:fixes/net_ftp_failed_command - [rt.cpan.org #37700] >> http://bugs.debian.org/491062 Net::FTP: cope gracefully with a failed >> command >> DEBPKG:fixes/perlbug-patchlist - [3541c11] >> http://bugs.debian.org/710842[perl #118433] Make perlbug look up the >> list of local patches at run time >> DEBPKG:fixes/regexp-preserve - http://bugs.debian.org/718209 [perl >> #118213] [f4194b2] RT #118213: handle $r=qr/.../; /$r/p properly >> DEBPKG:fixes/regexp-preserve-testcases - >> http://bugs.debian.org/718209[perl #118213] [4d7b2f5] Disable new //p >> tests >> DEBPKG:fixes/module_metadata_security_doc - [68cdd4b] CVE-2013-1437 >> documentation fix >> DEBPKG:fixes/module_metadata_taint_fix - [bff978f] >> http://bugs.debian.org/722210 [rt.cpan.org #88576] untaint version, if >> needed, in Module::Metadata >> >> --- >> @INC for perl 5.18.1: >> /etc/perl >> /usr/local/lib/perl/5.18.1 >> /usr/local/share/perl/5.18.1 >> /usr/lib/perl5 >> /usr/share/perl5 >> /usr/lib/perl/5.18 >> /usr/share/perl/5.18 >> /usr/local/lib/site_perl >> . >> >> --- >> Environment for perl 5.18.1: >> HOME=/home/oleg >> LANG=ru_RU.UTF-8 >> LANGUAGE (unset) >> LD_LIBRARY_PATH (unset) >> LOGDIR (unset) >> PATH=/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games >> PERL_BADLANG (unset) >> SHELL=/bin/bash >>
> >
Subject: Re: [perl #120982] IO::Select->select() returns empty list even if there were no errors
To: Randy Stauner via RT <perlbug-comment [...] perl.org>
From: Leon Timmermans <fawaka [...] gmail.com>
CC: Perl5 Porters <perl5-porters [...] perl.org>
Date: Wed, 15 Jan 2014 00:02:05 +0100
Download (untitled) / with headers
text/plain 771b
On Mon Jan 13 04:31:58 2014, verdrehung@gmail.com wrote:
Show quoted text
From IO::Select->select documentation: "Upon error an empty list is
returned."
But in fact it returns empty list if select() return value was <= 0. See
https://metacpan.org/source/GBARR/IO-1.25/lib/IO/Select.pm#L191
So if select() returns 0 (0 file handles ready) IO::Select determines this
as error and returns empty list and IO::Select user can't distinguish error
from the fact that there is no ready file handles yet.

This is an unfortunate interface, but I suspect given backwards-compatibility we can't really change that anymore; though one could argue it could return ([], [], []) if select(…) == 0. Depending on your needs my advice may be to use something more sensible anyway.

Leon
From: Victor Efimov <victor [...] vsespb.ru>
CC: Randy Stauner via RT <perlbug-comment [...] perl.org>, Perl5 Porters <perl5-porters [...] perl.org>
Subject: Re: [perl #120982] IO::Select->select() returns empty list even if there were no errors
To: Leon Timmermans <fawaka [...] gmail.com>
Date: Wed, 15 Jan 2014 09:27:48 +0400
Download (untitled) / with headers
text/plain 878b
at least docs should be changed. 2014/1/15 Leon Timmermans <fawaka@gmail.com>: Show quoted text
> On Mon Jan 13 04:31:58 2014, verdrehung@gmail.com wrote:
>> >> From IO::Select->select documentation: "Upon error an empty list is >> returned." >> But in fact it returns empty list if select() return value was <= 0. See >> https://metacpan.org/source/GBARR/IO-1.25/lib/IO/Select.pm#L191 >> So if select() returns 0 (0 file handles ready) IO::Select determines this >> as error and returns empty list and IO::Select user can't distinguish >> error >> from the fact that there is no ready file handles yet.
> > > This is an unfortunate interface, but I suspect given > backwards-compatibility we can't really change that anymore; though one > could argue it could return ([], [], []) if select(…) == 0. Depending on > your needs my advice may be to use something more sensible anyway. > > Leon
To: Leon Timmermans <fawaka [...] gmail.com>
Subject: Re: [perl #120982] IO::Select->select() returns empty list even if there were no errors
CC: Randy Stauner via RT <perlbug-comment [...] perl.org>, Perl5 Porters <perl5-porters [...] perl.org>
From: Victor Efimov <victor [...] vsespb.ru>
Date: Fri, 17 Jan 2014 23:42:23 +0400
or maybe introduce new global var in IO::Select namespace which will hold the real return value of select/can_XXX 2014/1/15 Victor Efimov <victor@vsespb.ru>: Show quoted text
> at least docs should be changed. > > 2014/1/15 Leon Timmermans <fawaka@gmail.com>:
>> On Mon Jan 13 04:31:58 2014, verdrehung@gmail.com wrote:
>>> >>> From IO::Select->select documentation: "Upon error an empty list is >>> returned." >>> But in fact it returns empty list if select() return value was <= 0. See >>> https://metacpan.org/source/GBARR/IO-1.25/lib/IO/Select.pm#L191 >>> So if select() returns 0 (0 file handles ready) IO::Select determines this >>> as error and returns empty list and IO::Select user can't distinguish >>> error >>> from the fact that there is no ready file handles yet.
>> >> >> This is an unfortunate interface, but I suspect given >> backwards-compatibility we can't really change that anymore; though one >> could argue it could return ([], [], []) if select(…) == 0. Depending on >> your needs my advice may be to use something more sensible anyway. >> >> Leon
To: perl5-porters [...] perl.org
Date: Sat, 16 Dec 2017 04:05:41 +0000
From: Zefram <zefram [...] fysh.org>
Subject: Re: [perl #120982] IO::Select->select() returns empty list even if there were no errors
Download (untitled) / with headers
text/plain 420b
Oleg G wrote: Show quoted text
>So if select() returns 0 (0 file handles ready) IO::Select determines this >as error and returns empty list and IO::Select user can't distinguish error >from the fact that there is no ready file handles yet.
Actually they can be distinguished by use of $!. The documentation was recently extended to describe this in commit bc3331071e1ccbdab715397718bb00282f5c5e88. This ticket can be closed. -zefram


This service is sponsored and maintained by Best Practical Solutions and runs on Perl.org infrastructure.

For issues related to this RT instance (aka "perlbug"), please contact perlbug-admin at perl.org