[mp1] segmentation fault in Apache->server->dir_config()
[prev]
[thread]
[next]
[Date index for 2005/04/26]
I wonder if anyone has any light to shed on this peculiar problem?
Last night I rebooted a server that's been running happily for several
months, changing nothing. When it came up, all my HTML::Mason-based
sites no longer worked, with all requests routed through Mason causing
the child server to seggy-fault with no information in the logs.
Through careful detective work, I traced the problem to an invocation
of $s->dir_config(), where $s is the result of Apache->server().
Although I first ran into this in the context of HTML::Mason, much
simpler test programs also show the same problem:
#!/usr/bin/perl -w
use strict;
use CGI;
my $cgi = new CGI();
print $cgi->header(-type => "text/plain");
my $which = $cgi->param("which");
if (!defined $which) {
print "Test what?";
} else {
warn "test.pl: checking\n";
my $request = Apache->request();
warn "test.pl: request='$request'\n";
my $server = Apache->server();
warn "test.pl: server='$server'\n";
my $config = $server->dir_config();
warn "test.pl: config='$config'\n";
my $val = $config->get($which);
warn "test.pl: val='$val'\n";
print $val;
}
This gets as far as writing the following lines to the site error-log:
test.pl: checking
test.pl: request='Apache=SCALAR(0x82203bc)'
test.pl: server='Apache::Server=SCALAR(0x83602cc)'
then quits before writing the "config=" line. At this point, a single
line is written to the master error-log.
[Tue Apr 26 15:32:10 2005] [notice] child pid 8777 exit signal Segmentation fault (11)
The bizarre thing is that, as I said, _nothing_ has changed since
yesterday, when this worked just fine.
I tried to run httpd under both strace and gdb, but I have not managed
to get any useful information out of it that way. I am using Apache
1.3.33 with mod_perl 1.29 (the most recent 1.x versions of both, I
believe) both built from source.
Here is the relevant section of my httpd.conf:
<VirtualHost localhost.localnet>
ServerName sru.miketaylor.org.uk
DocumentRoot /usr/local/src/mike/sru/htdocs
ErrorLog /usr/local/src/mike/sru/logs/error.log
CustomLog /usr/local/src/mike/sru/logs/access.log combined
<FilesMatch "\.pl$">
Options +ExecCGI
SetHandler perl-script
PerlHandler Apache::Registry
</FilesMatch>
</VirtualHost>
Pretty vanilla, I think you'll agree.
All suggestions welcome! Thanks.
_/|_ ___________________________________________________________________
/o ) \/ Mike Taylor <mike@xxxxxxxxxx.xxx.xx> http://www.miketaylor.org.uk
)_v__/\ "Everything free in America, for a small fee in America" --
Steven Sondheim, "West Side Story"
--
Listen to free demos of soundtrack music for film, TV and radio
http://www.pipedreaming.org.uk/soundtrack/
 |
[mp1] segmentation fault in Apache->server->dir_config()
Mike Taylor 14:39 on 26 Apr 2005
|