I tried using Apache::RegistryLoader with my
Apache 1.3.14/mod_perl 1.24_2 installation.
I put this in a file that I PerlRequire:
use Apache::RegistryLoader ();
my $perl_dir = Apache->server_root_relative."docs";
my $cmd = qq{find $perl_dir -follow \\( -name "*.pl" -o -name "*.cgi" \\)
-print};
my $output = `$cmd`;
my @files = split /\s+/, $output;
my $rl = Apache::RegistryLoader->new;
foreach my $file (@files)
{
print "pre-loading $file\n";
$file =~ /$perl_dir(.*)/;
my $status = $rl->handler($1, $file);
unless($status == 200) {
warn "pre-load of `$url' failed, status=$status\n";
}
}
(In other words, I load every .cgi or .pl file found under a certain
directory. I've also coded it with File::Find instead of running
find as a separate process with the same results.)
The results were not good. This appeared in error_log:
[Tue Oct 31 15:26:32 2000] [notice] caught SIGTERM, shutting down
signal fault in critical section
signal number: 11, signal code: 1, fault address: 0x1a5c,
pc: 0xff3b9c64, sp: 0xffbef530
libthread panic: fault in libthread critical section (PID: 19927 LWP 1)
stacktrace:
ff3b9c30
ff3be3a0
ff3bd498
ff3bd4f4
4bfd8
fedc185c
fedc189c
1c2c4
199fc
329f0
33808
18e98
0
This is under Solaris 2.7. The perl that I used for mod_perl was not
built with any threading options. Is this now required, given that
Apache 1.3.14 appears to be using threads?
-Paul