Any comments on this patch? Kind regards, Bram ----- Forwarded message from perlbug-followup@perl.org ----- Date: Wed, 30 Apr 2008 03:52:55 -0700 From: Bram via RT <perlbug-followup@perl.org> Reply-To: perlbug-followup@perl.org Subject: [perl #42329] [PATCH] Carp::croak() replace user error message by own To: "OtherRecipients of perl Ticket #42329"@ Cc: perl5-porters@perl.org > > 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/Heavy.pm in @INC (@INC contains: ...) at > /usr/lib/perl5/5.8.8/Carp.pm 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"; __END__ Now shows: Failed to load Carp::Heavy. Consider adding use Carp::Heavy in your code. Carp-Error: Can't locate Carp/Heavy.pm: Too many open files at lib/ Carp.pm line 44. Args: abc Kind regards, Bram ----- End forwarded message -----