Some more info: I've rebuilt everything with debug, and the SEGV is
happening in mod_perl.c in the following code:
#ifdef PERL_HEADER_PARSER
int PERL_HEADER_PARSER_HOOK(request_rec *r)
{
dSTATUS;
dPPDIR;
#ifdef PERL_INIT
PERL_CALLBACK("PerlInitHandler",
cld->PerlInitHandler);
#endif
PERL_CALLBACK("PerlHeaderParserHandler",
cld->PerlHeaderParserHandler);
return status;
}
#endif
specifically the macro dPPDIR. I notice that the request_rec pointer
passed in has one field that points to an invalid address, I don't know
if it is relevant:
parsed_uri = {
scheme = (nil)
hostinfo = (nil)
user = 0x174fa0 "/"
password = (nil)
hostname = (nil)
port_str = (nil)
path = 0x8000 "<bad address 0x8000>"
query = 0x175418 ""
fragment = 0x174e20 ""
hostent = 0x1755a0
port = 23U
is_initialized = 0
dns_looked_up = 1U
dns_resolved = 0
expanding out dPPDIR it refers to r->per_dir_config and &perl_module.
r->per_dir_config is a void*, and has the value 8, which sure doesn't
look like a valid address to me. perl_module on the other hand all
looks sane. I'm not sure where to look next - any suggestions?
--
Alan Burlison