Perl / perl5

🐪 The Perl programming language
https://dev.perl.org/perl5/
Other
1.85k stars 527 forks source link

IPC::Open3 && IO::Select don't play nice together. #2632

Closed p5pRT closed 20 years ago

p5pRT commented 23 years ago

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

Searchable as RT4319$

p5pRT commented 23 years ago

From @abigail

Created by @abigail

  #!/opt/perl/bin/perl -w   use strict;   use IPC​::Open3;   use IO​::Select;

  my ($stdin\, $stdout\, $stderr);   my $pid = open3 ($stdin\, $stdout\, $stderr\, perl => '-e'\, 1);   if ($@​ && $@​ =~ /^open3​:/) {   die "open3 failed​: $@​\n";   }

  my $select = IO​::Select -> new ($stdin\, $stdout\, $stderr);

  print "Not reached...\n";

  __END__   Use of uninitialized value in pattern match (m//) at /opt/perl/lib/5.6.0/i686-linux-64int/IO/Select.pm line 60.   Can't use an undefined value as a symbol reference at /opt/perl/lib/5.6.0/i686-linux-64int/IO/Select.pm line 60.

Perl Info ``` Flags: category=library severity=high Site configuration information for perl v5.6.0: Configured by abigail at Wed Jun 14 21:00:02 EDT 2000. Summary of my perl5 (revision 5.0 version 6 subversion 0) configuration: Platform: osname=linux, osvers=2.2.13, archname=i686-linux-64int uname='linux alexandra 2.2.13 #5 tue feb 8 15:37:54 est 2000 i686 unknown ' config_args='-Dprefix=/opt/perl -d -Uinstallusrbinperl -Doptimize=-g -Dusemorebits' hint=recommended, useposix=true, d_sigaction=define usethreads=undef use5005threads=undef useithreads=undef usemultiplicity=undef useperlio=undef d_sfio=undef uselargefiles=define use64bitint=define use64bitall=undef uselongdouble=define usesocks=undef Compiler: cc='cc', optimize='-g', gccversion=2.95.2 19991024 (release) cppflags='-DDEBUGGING -fno-strict-aliasing -I/usr/local/include' ccflags ='-DDEBUGGING -fno-strict-aliasing -I/usr/local/include -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64' stdchar='char', d_stdstdio=define, usevfork=false intsize=4, longsize=4, ptrsize=4, doublesize=8 d_longlong=define, longlongsize=8, d_longdbl=define, longdblsize=12 ivtype='long long', ivsize=8, nvtype='long double', nvsize=12, Off_t='off_t', lseeksize=8 alignbytes=4, usemymalloc=n, prototype=define Linker and Libraries: ld='cc', ldflags =' -L/usr/local/lib' libpth=/usr/local/lib /lib /usr/lib libs=-lnsl -lndbm -lgdbm -ldbm -ldb -ldl -lm -lc -lposix -lcrypt libc=/lib/libc-2.1.2.so, so=so, useshrplib=false, libperl=libperl.a Dynamic Linking: dlsrc=dl_dlopen.xs, dlext=so, d_dlsymun=undef, ccdlflags='-rdynamic' cccdlflags='-fpic', lddlflags='-shared -L/usr/local/lib' Locally applied patches: @INC for perl v5.6.0: /home/abigail/Perl /home/abigail/Sybase /opt/perl/lib/5.6.0/i686-linux-64int /opt/perl/lib/5.6.0 /opt/perl/lib/site_perl/5.6.0/i686-linux-64int /opt/perl/lib/site_perl/5.6.0 /opt/perl/lib/site_perl/5.005 /opt/perl/lib/site_perl . Environment for perl v5.6.0: HOME=/home/abigail LANG (unset) LANGUAGE (unset) LD_LIBRARY_PATH=/home/abigail/Lib:/usr/local/lib:/usr/lib:/lib:/usr/X11R6/lib:/opt/tcl/lib:/opt/tk/lib/tk8.0 LOGDIR (unset) PATH=/home/abigail/Bin:/opt/perl/bin:/opt/tcl/bin:/opt/tk/bin:/usr/local/bin:/usr/local/X11/bin:/usr/bin:/bin:/usr/local/sbin:/usr/sbin:/sbin:/usr/X11R6/bin:/usr/games:/opt/povray/bin:/opt/teTeX/bin/i686-pc-linux-gnu:/opt/python/bin PERL5LIB=/home/abigail/Perl:/home/abigail/Sybase PERLDIR=/opt/perl PERL_BADLANG (unset) SHELL=/bin/bash ```
p5pRT commented 23 years ago

From [Unknown Contact. See original ticket]

I'm not sure I want to touch IO​::Select to make it do something more polite when handed an undefined 'fh'\, but that's not the real bug being reported anyway. This fixes the non-vivication of open3.

  --s.

Inline Patch ```diff --- lib/IPC/Open3.pm.DIST Mon Jul 31 22:31:48 2000 +++ lib/IPC/Open3.pm Sat Sep 16 16:54:26 2000 @@ -170,7 +170,7 @@ sub _open3 { croak "$Me: $@"; } - $dad_err ||= $dad_rdr; + $dad_err = $_[3] = $dad_rdr unless defined $dad_err && length $dad_err; $dup_wtr = ($dad_wtr =~ s/^[<>]&//); $dup_rdr = ($dad_rdr =~ s/^[<>]&//); ```
p5pRT commented 23 years ago

From [Unknown Contact. See original ticket]

Oops! Overeager patch there. I'm not sure that is a bug\, and I know that the patch I sent causes other problems. Retracted.

  --s.