[mp1] segmentation fault in Apache->server->dir_config()

[prev] [thread] [next] [Date index for 2005/04/26]

From: Mike Taylor
Subject: [mp1] segmentation fault in Apache->server->dir_config()
Date: 14:39 on 26 Apr 2005
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

Generated at 09:30 on 27 Apr 2005 by mariachi v0.52