More info on the problem for some kind soul:
When I run the server under gdb in single server
mode it produces the following output:
[New LWP 2 ]
[New LWP 3 ]
Program received signal SIGSEGV, Segmentation fault.
0xff3b9c64 in ?? ()
(gdb) i thread
6 Thread 3 0xfe3ce64c in _reap_wait () from
/usr/lib/libthread.so.1
5 Thread 2 (LWP 2) 0xff2174bc in _signotifywait () from
/usr/lib/libc.so.1
* 4 Thread 1 (LWP 1) 0xff3b9c64 in ?? ()
3 LWP 3 0xff215094 in door_restart () from /usr/lib/libc.so.1
2 LWP 2 0xff2174bc in _signotifywait () from
/usr/lib/libc.so.1
1 LWP 1 0xff3b9c64 in ?? ()
(gdb) bt
#0 0xff3b9c64 in ?? ()
#1 0xff3be3a8 in ?? ()
#2 0xff3bd4a0 in ?? ()
#3 0xff3bd4fc in ?? ()
#4 0x4bed4 in ap_os_dso_unload (handle=0xfeed19a4) at os.c:133
#5 0xfedc1864 in unload_xs_so (librefs=0xb18d0) at mod_perl.c:480
#6 0xfedc18a4 in mp_dso_unload (data=0x7cb90) at mod_perl.c:512
#7 0x1c2c8 in run_cleanups (c=0x92738) at alloc.c:1946
#8 0x19a04 in ap_clear_pool (a=0x7cb90) at alloc.c:689
#9 0x3298c in standalone_main (argc=6, argv=0xffbefac4) at http_main.c:4741
#10 0x337a4 in main (argc=6, argv=0xffbefac4) at http_main.c:5123
(gdb) frame 4
#4 0x4bed4 in ap_os_dso_unload (handle=0xfeed19a4) at os.c:133
(gdb)
The last frame for which I have symbols shows the following:
void ap_os_dso_unload(void *handle)
{
#if defined(HPUX) || defined(HPUX10) || defined(HPUX11)
shl_unload((shl_t)handle);
#elif defined(HAVE_DYLD)
NSUnLinkModule(handle,FALSE);
#else
=> dlclose(handle);
#endif
return;
}
Again, can I ask if anyone out there is doing the following:
using 1.3.14 under Solaris 2.7
using DSO's
using Perl 5.6.0 built w/o threading options
Is this a no-no?
By the way, I have simplified my startup script to only
make a single call to Apache::RegistryLoader::handler
for a particular file. Same result. Without the call
to Apache::RegistryLoader::handler the server seems to
perform flawlessly.
-Paul
-----Original Message-----
From: Paul G. Weiss
Sent: Tuesday, October 31, 2000 3:37 PM
To: '[EMAIL PROTECTED]'
Subject: Apache 1.3.14 and Apache::RegistryLoader
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