> > 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, BramThread Previous | Thread Next