You are viewing a plain text version of this content. The canonical link for it is here.
Posted to modperl@perl.apache.org by "Paul G. Weiss" <PG...@arity.com> on 2000/11/01 20:49:46 UTC

RE: Apache 1.3.14 and Apache::RegistryLoader

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: 'modperl@apache.org'
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