develooper Front page | perl.perl5.porters | Postings from August 2008

Fwd: [perl #42329] [PATCH] Carp::croak() replace user errormessage by own

August 3, 2008 01:48
Fwd: [perl #42329] [PATCH] Carp::croak() replace user errormessage by own
Message ID:
Any comments on this patch?

Kind regards,


----- Forwarded message from -----
     Date: Wed, 30 Apr 2008 03:52:55 -0700
     From: Bram via RT <>
  Subject: [perl #42329] [PATCH] Carp::croak() replace user error  
message by own
       To: "OtherRecipients of perl Ticket #42329"@

> Looks like when script doing heavy I/O use all 1024 file descriptors,
> fail on opening next one and try to report this error using croak(),
> the Carp try to load (require) Carp::Heavy, and fail too (because
>    there no
> available file descriptors). This result in die() with message:
>     Can't locate Carp/ in @INC (@INC contains: ...) at
>     /usr/lib/perl5/5.8.8/ line 255.
> instead of original user's message.
> I think Carp should avoid requesting more resources (memory, file
> descriptors, etc.) when user call carp/croak/etc. Either Carp::Heavy
> should be loaded together with Carp when script start or in case
> Carp::Heavy can't be loaded Carp should contain some failback code,
> which at least output user's message using usual warn/die.
> -----------------------------------------------------------------

Patch attached that:
a) shows the error from Carp::Heavy,
b) the supplied string,
c) a solution/work-around

#!/usr/bin/perl -l

use Carp;
my @t;
for (1 .. 1024) {
   open my $fh, "<", $0;
   push @t, $fh;
croak "abc";

Now shows:

Failed to load Carp::Heavy.  Consider adding use Carp::Heavy in your
Carp-Error: Can't locate Carp/   Too many open files at lib/ line 44.
Args: abc

Kind regards,


----- End forwarded message ----- Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About