On Thursday 13 December 2007 10:00:30 am Jeff Pang wrote:
> right now I got these exceptions in error_log:
>
> [Thu Dec 13 21:53:49 2007] [notice] child pid 4660 exit signal
> Segmentation fault (11)
Apache::Scoreboard is basically just a wrapper around the apache scoreboard
api, so we're dealing with the C layer for the most part not the perl layer.
The seg faults suggests we're wandering off a bad pointer somewhere. :-(
Did you try running apache under a debugger to see where it's segfaulting?
> This is my full code (the key string for generating md5 is replaced
> here for privacy reasons):
Can you cut this down to just the Apache::Scoreboard using code? That way we
can be sure that's what is causing the problem.
Try this:
> use strict;
> use warnings;
> use Apache::Constants qw(OK FORBIDDEN DECLINED);
> use Apache::Request ();
> use Apache::Scoreboard ();
> use Apache qw(exit);
>
> sub handler {
>
> my $r = shift;
> my $image = Apache::Scoreboard->image;
>
> for (my $parent = $image->parent; $parent; $parent = $parent->next) {
warn "parent pid: " . $parent->pid;
> my $server = $parent->server;
warn "server: " . $server; # just to prove we're not undef here
warn "- status: " . $server->status;
warn "- client: " . $server->client;
> }
> }
>
> return OK;
> }
>
> 1;
and see what's in the logs.
Did you do any of the following from my previous email?
> I got many warnings in error_log:
>
> Use of uninitialized value in string eq at /opt/apache1.3/run/DLAuth.pm
> line 42. at /opt/apache1.3/run/DLAuth.pm line 42
> DLAuth::handler('Apache=SCALAR(0x91cbe8c)') called at /dev/null
> line 0 eval {...} called at /dev/null line 0
>
> The line 42 is:
> if (($ip eq $server->client) or ($host eq $server->client)) {
What are the values of $ip, $host and $server->client at that point?
The "uninitialised value" could be any of the above.
> And the handler (PerlAccessHandler) seems work not correctly.
Does it work as a perl request handler? (PerlHandler for mp1).
Can you get any values at all out of the ServerScore instance?