Raku / old-issue-tracker

Tickets from RT
https://github.com/Raku/old-issue-tracker/issues
2 stars 1 forks source link

Use of Proc with IO::Pipe is counter-intuitive #4906

Open p6rt opened 8 years ago

p6rt commented 8 years ago

Migrated from rt.perl.org#126998 (status was 'open')

Searchable as RT126998$

p6rt commented 8 years ago

From vytdau@gmail.com

Following script throws error ( "Aborted (core dumped)" ) when $id == 1007. This is because $p.err is really never closed. however, what I find intriguing is if I remove "my $output = $p.err.slurp-rest;" line it works fine. None the less, error message should be improved.

use v6;

my $id = 0; recursion();

sub recursion() {   say ++$id;

  my $p = run('false', :out, :err );   my $output = $p.err.slurp-rest;

  try {   $p.out.close;   $p.err.close;   CATCH { default {} }   }

  if ($id \< 1010) {   recursion();   } }

$ perl6 --version This is Rakudo version 2015.11-708-g76c447b built on MoarVM version 2015.11-113-gbd56e2e implementing Perl 6.b.

p6rt commented 7 years ago

From @zoffixznet

On Wed, 23 Dec 2015 03​:05​:41 -0800, vytdau@​gmail.com wrote​:

Following script throws error ( "Aborted (core dumped)" ) when $id == 1007. This is because $p.err is really never closed. however, what I find intriguing is if I remove "my $output = $p.err.slurp-rest;" line it works fine. None the less, error message should be improved.

use v6;

my $id = 0; recursion();

sub recursion() { say ++$id;

my $p = run\('false', :out, :err \);
my $output = $p\.err\.slurp\-rest;

try \{
    $p\.out\.close;
    $p\.err\.close;
    CATCH \{ default \{\} \}
\}

if \($id \< 1010\) \{
    recursion\(\);
\}

}

$ perl6 --version This is Rakudo version 2015.11-708-g76c447b built on MoarVM version 2015.11-113-gbd56e2e implementing Perl 6.b.

To note​: the crash is due to exhausting open file descriptors. Sticking this at the start of the script makes it crash when $id is 807

  my @​fhs = ^200 .map​: *.IO.open​: :w;

p6rt commented 7 years ago

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