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

IO::Socket Oddity on Solaris on 5.6.1 #4269

Closed
p5pRT opened this issue Aug 1, 2001 · 9 comments
Closed

IO::Socket Oddity on Solaris on 5.6.1 #4269

p5pRT opened this issue Aug 1, 2001 · 9 comments

Comments

@p5pRT
Copy link

p5pRT commented Aug 1, 2001

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

Searchable as RT7425$

@p5pRT
Copy link
Author

p5pRT commented Aug 1, 2001

From @pjscott

% perl -MIO​::Socket -e 'IO​::Socket​::INET->new(PeerAddr =>
"ice-www.larc.nasa.gov", PeerPort => 80, Timeout => 180)'

That produces the error 'Broken pipe'. This doesn't​:

% perl -MIO​::Socket -e 'IO​::Socket​::INET->new(PeerAddr => "ice-www.
larc.nasa.gov", PeerPort => 80)'

It's only on that address, BTW - pick another web server and it's fine
(!). Also it does not reproduce on Linux (RH 6.2).

Here's my perl config, and I'll follow it with the last steps of a trace (I
have no idea what's wrong). It's entirely possible that this machine lacks
some patch, but it's never showed up before.

Summary of my perl5 (revision 5.0 version 6 subversion 1) configuration​:
  Platform​:
  osname=solaris, osvers=2.5.1, archname=sun4-solaris-2.5.1
  uname='sunos eisws5 5.5.1 generic_103640-19 sun4u sparc sunw,ultra-1 '
  config_args='-de -Dcc=gcc -B/usr/ccs/bin/ -Uusemymalloc
-Dprefix=/opt/perl -Uinstallusrbinperl -Darchname=sun4-solaris-2.5.1
-Ubincompat5005'
  hint=recommended, useposix=true, d_sigaction=define
  usethreads=undef use5005threads=undef useithreads=undef
usemultiplicity=undef
  useperlio=undef d_sfio=undef uselargefiles=define usesocks=undef
  use64bitint=undef use64bitall=undef uselongdouble=undef
  Compiler​:
  cc='gcc -B/usr/ccs/bin/', ccflags ='-I/usr/ets/include ',
  optimize='-O',
  cppflags='-I/usr/ets/include'
  ccversion='', gccversion='2.8.1', gccosandvers='solaris2.5.1'
  intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321
  d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=16
  ivtype='long', ivsize=4, nvtype='double', nvsize=8, Off_t='off_t',
lseeksize=4
  alignbytes=8, usemymalloc=n, prototype=define
  Linker and Libraries​:
  ld='gcc -B/usr/ccs/bin/', ldflags =' -L/usr/ets/lib '
  libpth=/usr/ets/lib /usr/lib /usr/ccs/lib
  libs=-lsocket -lnsl -lgdbm -ldbm -ldb -ldl -lm -lc
  perllibs=-lsocket -lnsl -ldl -lm -lc
  libc=/lib/libc.so, so=so, useshrplib=false, libperl=libperl.a
  Dynamic Linking​:
  dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' '
  cccdlflags='-fPIC', lddlflags='-G -L/usr/ets/lib'

Characteristics of this binary (from libperl)​:
  Compile-time options​: USE_LARGE_FILES
  Built under solaris
  Compiled at Jun 11 2001 16​:34​:33
  @​INC​:
  /opt/perl/lib/5.6.1/sun4-solaris-2.5.1
  /opt/perl/lib/5.6.1
  /opt/perl/lib/site_perl/5.6.1/sun4-solaris-2.5.1
  /opt/perl/lib/site_perl/5.6.1
  /opt/perl/lib/site_perl
  .

IO​::Socket​::connect(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-solaris-2.5.1/IO/Socket.pm​:114)​:
114​: if (!$sel->can_write($timeout)) {
  DB<2> s
IO​::Select​::can_write(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-solaris-2.5.1/IO/Select.pm​:112)​:
112​: my $vec = shift;
  DB<2> n
IO​::Select​::can_write(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-solaris-2.5.1/IO/Select.pm​:113)​:
113​: my $timeout = shift;
  DB<2>
IO​::Select​::can_write(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-solaris-2.5.1/IO/Select.pm​:114)​:
114​: my $w = $vec->[VEC_BITS];
  DB<2>
IO​::Select​::can_write(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-solaris-2.5.1/IO/Select.pm​:116)​:
116​: defined($w) && (select(undef,$w,undef,$timeout) > 0)
117​: ? handles($vec, $w)
118​: : ();
  DB<2> s
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-solaris-2.5.1/IO/Select.pm​:219)​:
219​: my $vec = shift;
  DB<2> n
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-solaris-2.5.1/IO/Select.pm​:220)​:
220​: my $bits = shift;
  DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-solaris-2.5.1/IO/Select.pm​:221)​:
221​: my @​h = ();
  DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-solaris-2.5.1/IO/Select.pm​:222)​:
222​: my $i;
  DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-solaris-2.5.1/IO/Select.pm​:223)​:
223​: my $max = scalar(@​$vec) - 1;
  DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-solaris-2.5.1/IO/Select.pm​:225)​:
225​: for ($i = FIRST_FD; $i <= $max; $i++)
226​: {
  DB<2> n
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-solaris-2.5.1/IO/Select.pm​:227)​:
227​: next unless defined $vec->[$i];
  DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-solaris-2.5.1/IO/Select.pm​:225)​:
225​: for ($i = FIRST_FD; $i <= $max; $i++)
226​: {
  DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-solaris-2.5.1/IO/Select.pm​:227)​:
227​: next unless defined $vec->[$i];
  DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-solaris-2.5.1/IO/Select.pm​:225)​:
225​: for ($i = FIRST_FD; $i <= $max; $i++)
226​: {
  DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-solaris-2.5.1/IO/Select.pm​:227)​:
227​: next unless defined $vec->[$i];
  DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-solaris-2.5.1/IO/Select.pm​:225)​:
225​: for ($i = FIRST_FD; $i <= $max; $i++)
226​: {
  DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-solaris-2.5.1/IO/Select.pm​:227)​:
227​: next unless defined $vec->[$i];
  DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-solaris-2.5.1/IO/Select.pm​:225)​:
225​: for ($i = FIRST_FD; $i <= $max; $i++)
226​: {
  DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-solaris-2.5.1/IO/Select.pm​:227)​:
227​: next unless defined $vec->[$i];
  DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-solaris-2.5.1/IO/Select.pm​:225)​:
225​: for ($i = FIRST_FD; $i <= $max; $i++)
226​: {
  DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-solaris-2.5.1/IO/Select.pm​:227)​:
227​: next unless defined $vec->[$i];
  DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-solaris-2.5.1/IO/Select.pm​:225)​:
225​: for ($i = FIRST_FD; $i <= $max; $i++)
226​: {
  DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-solaris-2.5.1/IO/Select.pm​:227)​:
227​: next unless defined $vec->[$i];
  DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-solaris-2.5.1/IO/Select.pm​:225)​:
225​: for ($i = FIRST_FD; $i <= $max; $i++)
226​: {
  DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-solaris-2.5.1/IO/Select.pm​:227)​:
227​: next unless defined $vec->[$i];
  DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-solaris-2.5.1/IO/Select.pm​:228)​:
228​: push(@​h, $vec->[$i])
229​: if !defined($bits) || vec($bits, $i - FIRST_FD, 1);
  DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-solaris-2.5.1/IO/Select.pm​:225)​:
225​: for ($i = FIRST_FD; $i <= $max; $i++)
226​: {
  DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-solaris-2.5.1/IO/Select.pm​:232)​:
232​: @​h;
  DB<2>
Broken pipe

@p5pRT
Copy link
Author

p5pRT commented Mar 24, 2012

From @jkeenan

On Wed Aug 01 06​:14​:30 2001, Peter@​PSDT.com wrote​:

% perl -MIO​::Socket -e 'IO​::Socket​::INET->new(PeerAddr =>
"ice-www.larc.nasa.gov", PeerPort => 80, Timeout => 180)'

That produces the error 'Broken pipe'. This doesn't​:

% perl -MIO​::Socket -e 'IO​::Socket​::INET->new(PeerAddr => "ice-www.
larc.nasa.gov", PeerPort => 80)'

It's only on that address, BTW - pick another web server and it's fine
(!). Also it does not reproduce on Linux (RH 6.2).

Here's my perl config, and I'll follow it with the last steps of a
trace (I
have no idea what's wrong). It's entirely possible that this machine
lacks
some patch, but it's never showed up before.

Summary of my perl5 (revision 5.0 version 6 subversion 1)
configuration​:
Platform​:
osname=solaris, osvers=2.5.1, archname=sun4-solaris-2.5.1
uname='sunos eisws5 5.5.1 generic_103640-19 sun4u sparc
sunw,ultra-1 '
config_args='-de -Dcc=gcc -B/usr/ccs/bin/ -Uusemymalloc
-Dprefix=/opt/perl -Uinstallusrbinperl -Darchname=sun4-solaris-2.5.1
-Ubincompat5005'
hint=recommended, useposix=true, d_sigaction=define
usethreads=undef use5005threads=undef useithreads=undef
usemultiplicity=undef
useperlio=undef d_sfio=undef uselargefiles=define usesocks=undef
use64bitint=undef use64bitall=undef uselongdouble=undef
Compiler​:
cc='gcc -B/usr/ccs/bin/', ccflags ='-I/usr/ets/include ',
optimize='-O',
cppflags='-I/usr/ets/include'
ccversion='', gccversion='2.8.1', gccosandvers='solaris2.5.1'
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321
d_longlong=define, longlongsize=8, d_longdbl=define,
longdblsize=16
ivtype='long', ivsize=4, nvtype='double', nvsize=8,
Off_t='off_t',
lseeksize=4
alignbytes=8, usemymalloc=n, prototype=define
Linker and Libraries​:
ld='gcc -B/usr/ccs/bin/', ldflags =' -L/usr/ets/lib '
libpth=/usr/ets/lib /usr/lib /usr/ccs/lib
libs=-lsocket -lnsl -lgdbm -ldbm -ldb -ldl -lm -lc
perllibs=-lsocket -lnsl -ldl -lm -lc
libc=/lib/libc.so, so=so, useshrplib=false, libperl=libperl.a
Dynamic Linking​:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' '
cccdlflags='-fPIC', lddlflags='-G -L/usr/ets/lib'

Characteristics of this binary (from libperl)​:
Compile-time options​: USE_LARGE_FILES
Built under solaris
Compiled at Jun 11 2001 16​:34​:33
@​INC​:
/opt/perl/lib/5.6.1/sun4-solaris-2.5.1
/opt/perl/lib/5.6.1
/opt/perl/lib/site_perl/5.6.1/sun4-solaris-2.5.1
/opt/perl/lib/site_perl/5.6.1
/opt/perl/lib/site_perl
.

IO​::Socket​::connect(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Socket.pm​:114)​:
114​: if (!$sel->can_write($timeout)) {
DB<2> s
IO​::Select​::can_write(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:112)​:
112​: my $vec = shift;
DB<2> n
IO​::Select​::can_write(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:113)​:
113​: my $timeout = shift;
DB<2>
IO​::Select​::can_write(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:114)​:
114​: my $w = $vec->[VEC_BITS];
DB<2>
IO​::Select​::can_write(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:116)​:
116​: defined($w) && (select(undef,$w,undef,$timeout) > 0)
117​: ? handles($vec, $w)
118​: : ();
DB<2> s
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:219)​:
219​: my $vec = shift;
DB<2> n
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:220)​:
220​: my $bits = shift;
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:221)​:
221​: my @​h = ();
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:222)​:
222​: my $i;
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:223)​:
223​: my $max = scalar(@​$vec) - 1;
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:225)​:
225​: for ($i = FIRST_FD; $i <= $max; $i++)
226​: {
DB<2> n
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:227)​:
227​: next unless defined $vec->[$i];
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:225)​:
225​: for ($i = FIRST_FD; $i <= $max; $i++)
226​: {
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:227)​:
227​: next unless defined $vec->[$i];
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:225)​:
225​: for ($i = FIRST_FD; $i <= $max; $i++)
226​: {
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:227)​:
227​: next unless defined $vec->[$i];
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:225)​:
225​: for ($i = FIRST_FD; $i <= $max; $i++)
226​: {
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:227)​:
227​: next unless defined $vec->[$i];
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:225)​:
225​: for ($i = FIRST_FD; $i <= $max; $i++)
226​: {
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:227)​:
227​: next unless defined $vec->[$i];
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:225)​:
225​: for ($i = FIRST_FD; $i <= $max; $i++)
226​: {
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:227)​:
227​: next unless defined $vec->[$i];
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:225)​:
225​: for ($i = FIRST_FD; $i <= $max; $i++)
226​: {
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:227)​:
227​: next unless defined $vec->[$i];
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:225)​:
225​: for ($i = FIRST_FD; $i <= $max; $i++)
226​: {
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:227)​:
227​: next unless defined $vec->[$i];
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:228)​:
228​: push(@​h, $vec->[$i])
229​: if !defined($bits) || vec($bits, $i - FIRST_FD, 1);
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:225)​:
225​: for ($i = FIRST_FD; $i <= $max; $i++)
226​: {
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:232)​:
232​: @​h;
DB<2>
Broken pipe

Peter (or anyone)​:

Are you still observing this oddity on Solaris on versions of IO​::Socket
distributed with a supported version of Perl such as 5.14.2 or blead?

Thank you very much.
Jim Keenan

@p5pRT
Copy link
Author

p5pRT commented Apr 26, 2012

From @Hugmeir

On Fri, Mar 23, 2012 at 10​:15 PM, James E Keenan via RT <
perlbug-followup@​perl.org> wrote​:

On Wed Aug 01 06​:14​:30 2001, Peter@​PSDT.com wrote​:

% perl -MIO​::Socket -e 'IO​::Socket​::INET->new(PeerAddr =>
"ice-www.larc.nasa.gov", PeerPort => 80, Timeout => 180)'

That produces the error 'Broken pipe'. This doesn't​:

% perl -MIO​::Socket -e 'IO​::Socket​::INET->new(PeerAddr => "ice-www.
larc.nasa.gov", PeerPort => 80)'

It's only on that address, BTW - pick another web server and it's fine
(!). Also it does not reproduce on Linux (RH 6.2).

Here's my perl config, and I'll follow it with the last steps of a
trace (I
have no idea what's wrong). It's entirely possible that this machine
lacks
some patch, but it's never showed up before.

Summary of my perl5 (revision 5.0 version 6 subversion 1)
configuration​:
Platform​:
osname=solaris, osvers=2.5.1, archname=sun4-solaris-2.5.1
uname='sunos eisws5 5.5.1 generic_103640-19 sun4u sparc
sunw,ultra-1 '
config_args='-de -Dcc=gcc -B/usr/ccs/bin/ -Uusemymalloc
-Dprefix=/opt/perl -Uinstallusrbinperl -Darchname=sun4-solaris-2.5.1
-Ubincompat5005'
hint=recommended, useposix=true, d_sigaction=define
usethreads=undef use5005threads=undef useithreads=undef
usemultiplicity=undef
useperlio=undef d_sfio=undef uselargefiles=define usesocks=undef
use64bitint=undef use64bitall=undef uselongdouble=undef
Compiler​:
cc='gcc -B/usr/ccs/bin/', ccflags ='-I/usr/ets/include ',
optimize='-O',
cppflags='-I/usr/ets/include'
ccversion='', gccversion='2.8.1', gccosandvers='solaris2.5.1'
intsize=4, longsize=4, ptrsize=4, doublesize=8, byteorder=4321
d_longlong=define, longlongsize=8, d_longdbl=define,
longdblsize=16
ivtype='long', ivsize=4, nvtype='double', nvsize=8,
Off_t='off_t',
lseeksize=4
alignbytes=8, usemymalloc=n, prototype=define
Linker and Libraries​:
ld='gcc -B/usr/ccs/bin/', ldflags =' -L/usr/ets/lib '
libpth=/usr/ets/lib /usr/lib /usr/ccs/lib
libs=-lsocket -lnsl -lgdbm -ldbm -ldb -ldl -lm -lc
perllibs=-lsocket -lnsl -ldl -lm -lc
libc=/lib/libc.so, so=so, useshrplib=false, libperl=libperl.a
Dynamic Linking​:
dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags=' '
cccdlflags='-fPIC', lddlflags='-G -L/usr/ets/lib'

Characteristics of this binary (from libperl)​:
Compile-time options​: USE_LARGE_FILES
Built under solaris
Compiled at Jun 11 2001 16​:34​:33
@​INC​:
/opt/perl/lib/5.6.1/sun4-solaris-2.5.1
/opt/perl/lib/5.6.1
/opt/perl/lib/site_perl/5.6.1/sun4-solaris-2.5.1
/opt/perl/lib/site_perl/5.6.1
/opt/perl/lib/site_perl
.

IO​::Socket​::connect(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Socket.pm​:114)​:
114​: if (!$sel->can_write($timeout)) {
DB<2> s
IO​::Select​::can_write(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:112)​:
112​: my $vec = shift;
DB<2> n
IO​::Select​::can_write(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:113)​:
113​: my $timeout = shift;
DB<2>
IO​::Select​::can_write(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:114)​:
114​: my $w = $vec->[VEC_BITS];
DB<2>
IO​::Select​::can_write(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:116)​:
116​: defined($w) && (select(undef,$w,undef,$timeout) > 0)
117​: ? handles($vec, $w)
118​: : ();
DB<2> s
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:219)​:
219​: my $vec = shift;
DB<2> n
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:220)​:
220​: my $bits = shift;
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:221)​:
221​: my @​h = ();
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:222)​:
222​: my $i;
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:223)​:
223​: my $max = scalar(@​$vec) - 1;
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:225)​:
225​: for ($i = FIRST_FD; $i <= $max; $i++)
226​: {
DB<2> n
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:227)​:
227​: next unless defined $vec->[$i];
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:225)​:
225​: for ($i = FIRST_FD; $i <= $max; $i++)
226​: {
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:227)​:
227​: next unless defined $vec->[$i];
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:225)​:
225​: for ($i = FIRST_FD; $i <= $max; $i++)
226​: {
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:227)​:
227​: next unless defined $vec->[$i];
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:225)​:
225​: for ($i = FIRST_FD; $i <= $max; $i++)
226​: {
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:227)​:
227​: next unless defined $vec->[$i];
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:225)​:
225​: for ($i = FIRST_FD; $i <= $max; $i++)
226​: {
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:227)​:
227​: next unless defined $vec->[$i];
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:225)​:
225​: for ($i = FIRST_FD; $i <= $max; $i++)
226​: {
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:227)​:
227​: next unless defined $vec->[$i];
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:225)​:
225​: for ($i = FIRST_FD; $i <= $max; $i++)
226​: {
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:227)​:
227​: next unless defined $vec->[$i];
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:225)​:
225​: for ($i = FIRST_FD; $i <= $max; $i++)
226​: {
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:227)​:
227​: next unless defined $vec->[$i];
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:228)​:
228​: push(@​h, $vec->[$i])
229​: if !defined($bits) || vec($bits, $i - FIRST_FD, 1);
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:225)​:
225​: for ($i = FIRST_FD; $i <= $max; $i++)
226​: {
DB<2>
IO​::Select​::handles(/afs/jpl/rep/f/fil/uai/perl/lib/5.6.1/sun4-
solaris-2.5.1/IO/Select.pm​:232)​:
232​: @​h;
DB<2>
Broken pipe

Peter (or anyone)​:

Are you still observing this oddity on Solaris on versions of IO​::Socket
distributed with a supported version of Perl such as 5.14.2 or blead?

I can't reproduce this on 5.8.4, 5.12.4, 5.14.2, nor blead.

@p5pRT
Copy link
Author

p5pRT commented Apr 27, 2012

From @jkeenan

On Thu Apr 26 16​:41​:16 2012, Hugmeir wrote​:

On Fri, Mar 23, 2012 at 10​:15 PM, James E Keenan via RT <
perlbug-followup@​perl.org> wrote​:

[snip]

Peter (or anyone)​:

Are you still observing this oddity on Solaris on versions of IO​::Socket
distributed with a supported version of Perl such as 5.14.2 or blead?

I can't reproduce this on 5.8.4, 5.12.4, 5.14.2, nor blead.

Good enough for me. Closing.

@p5pRT
Copy link
Author

p5pRT commented Apr 27, 2012

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

@p5pRT p5pRT closed this as completed Apr 27, 2012
@p5pRT
Copy link
Author

p5pRT commented Apr 27, 2012

From @nwc10

On Thu Apr 26 16​:41​:16 2012, Hugmeir wrote​:

On Fri, Mar 23, 2012 at 10​:15 PM, James E Keenan via RT <
perlbug-followup@​perl.org> wrote​:

On Wed Aug 01 06​:14​:30 2001, Peter@​PSDT.com wrote​:

% perl -MIO​::Socket -e 'IO​::Socket​::INET->new(PeerAddr =>
"ice-www.larc.nasa.gov", PeerPort => 80, Timeout => 180)'

That produces the error 'Broken pipe'. This doesn't​:

% perl -MIO​::Socket -e 'IO​::Socket​::INET->new(PeerAddr => "ice-www.
larc.nasa.gov", PeerPort => 80)'

It's only on that address, BTW - pick another web server and it's fine
(!). Also it does not reproduce on Linux (RH 6.2).

Are you still observing this oddity on Solaris on versions of IO​::Socket
distributed with a supported version of Perl such as 5.14.2 or blead?

I can't reproduce this on 5.8.4, 5.12.4, 5.14.2, nor blead.

Thanks for checking this, but sadly I doubt that *anyone* can usefully
reproduce the problem totally, as the specific host the bug report
mentions as the problem no longer exists​:

$ host ice-www.larc.nasa.gov
Host ice-www.larc.nasa.gov not found​: 3(NXDOMAIN)

It's a shame that we missed asking this question at the time, but
for future reference, I think what we really (also) needed was the
output from running the test program under truss.

It looks like a spurious SIGPIPE is being sent by the OS for no
particularly good reason, as the error seems to arrive without
the Perl code doing any sort of read on the socket. To be sure about
this we would have needed to know the order of system calls - hence
truss

(and equivalently ktrace on *BSD, strace on Linux. Not sure whether
any other platforms have similarly good tools)

Nicholas Clark

@p5pRT
Copy link
Author

p5pRT commented Apr 30, 2012

From @pjscott

On 4/27/2012 4​:19 AM, Nicholas Clark via RT wrote​:

On Thu Apr 26 16​:41​:16 2012, Hugmeir wrote​:

On Fri, Mar 23, 2012 at 10​:15 PM, James E Keenan via RT<
perlbug-followup@​perl.org> wrote​:

On Wed Aug 01 06​:14​:30 2001, Peter@​PSDT.com wrote​:

% perl -MIO​::Socket -e 'IO​::Socket​::INET->new(PeerAddr =>
"ice-www.larc.nasa.gov", PeerPort => 80, Timeout => 180)'

That produces the error 'Broken pipe'. This doesn't​:

% perl -MIO​::Socket -e 'IO​::Socket​::INET->new(PeerAddr => "ice-www.
larc.nasa.gov", PeerPort => 80)'

It's only on that address, BTW - pick another web server and it's fine
(!). Also it does not reproduce on Linux (RH 6.2).

Are you still observing this oddity on Solaris on versions of IO​::Socket
distributed with a supported version of Perl such as 5.14.2 or blead?

I can't reproduce this on 5.8.4, 5.12.4, 5.14.2, nor blead.
Thanks for checking this, but sadly I doubt that *anyone* can usefully
reproduce the problem totally, as the specific host the bug report
mentions as the problem no longer exists​:

$ host ice-www.larc.nasa.gov
Host ice-www.larc.nasa.gov not found​: 3(NXDOMAIN)

It's a shame that we missed asking this question at the time, but
for future reference, I think what we really (also) needed was the
output from running the test program under truss.

It looks like a spurious SIGPIPE is being sent by the OS for no
particularly good reason, as the error seems to arrive without
the Perl code doing any sort of read on the socket. To be sure about
this we would have needed to know the order of system calls - hence
truss

(and equivalently ktrace on *BSD, strace on Linux. Not sure whether
any other platforms have similarly good tools)
FWIW, I tried connecting to 100+ NASA web servers using the same Perl
(5.6.1) and Solaris box that triggered this report, no dice. Even if
that DNS address were still around I doubt it would help as it must have
something to do with the type of httpd they were running and I imagine
that even they would have upgraded it in 11 years.

@p5pRT
Copy link
Author

p5pRT commented May 1, 2012

From @nwc10

On Mon, Apr 30, 2012 at 11​:12​:31AM -0700, Peter Scott wrote​:

FWIW, I tried connecting to 100+ NASA web servers using the same Perl
(5.6.1) and Solaris box that triggered this report, no dice. Even if

Gosh. You still have both! I had assumed that both hosts were long gone.

that DNS address were still around I doubt it would help as it must have
something to do with the type of httpd they were running and I imagine
that even they would have upgraded it in 11 years.

Shame that they don't have their end still. Thanks for trying.

I'm suspicious that it was an OS bug. The SIGPIPE arriving when it did was
completely illogical.

Nicholas Clark

@p5pRT
Copy link
Author

p5pRT commented May 4, 2012

From @icerider70

On Fri, Apr 27, 2012 at 6​:19 AM, Nicholas Clark via RT <
perlbug-followup@​perl.org> wrote​:

(and equivalently ktrace on *BSD, strace on Linux. Not sure whether
any other platforms have similarly good tools)

tusc on HP-UX.

--Phil

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

No branches or pull requests

1 participant