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

[perl #42329] [PATCH] Carp::croak() replace user error message by own

Thread Previous | Thread Next
Bram via RT
April 30, 2008 07:21
[perl #42329] [PATCH] Carp::croak() replace user error message by own
Message ID:
> 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,


Thread Previous | Thread Next Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at | Group listing | About