I've been getting intermittent segfaults for a couple of days now on
our dev server, and i'm not really sure why. I can more or less
reproduce them, but it's a hit or miss process. It only seems to
affect 2 handlers for some reason, and based on what i'm seeing it
seems like one is some how managing to corrupt the childs
configuration, then the other is making it segfault.
Here are some examples of the weird messages i'm seeing in the error
log. ZZZ::AuthSmb is a simple auth handler we've been using for years
without any issues. The random corruption of the name is what makes
me thing that the config is getting corrupted, but i don't really know
what i'm talking about.
[Tue Aug 12 09:39:06 2008] [error] lookup of 'ZZZ::AuthzSmb::8<C\n\x0c' failed
[Tue Aug 12 10:01:53 2008] [error] lookup of 'ZZZ::AuthzSmb::`' failed
[Tue Aug 12 10:05:11 2008] [error] lookup of '@\xa5J\bP\xa5J\bRESU' failed
[Tue Aug 12 10:05:52 2008] [error] lookup of '@\xa5J\bP\xa5J\bRESU' failed
[Tue Aug 12 16:13:57 2008] [error] lookup of 'ZZZ::AuthzSmb' failed
[Tue Aug 12 16:15:10 2008] [error] lookup of 'ZZZ::AuthzSmb' failed
[Tue Aug 12 16:15:17 2008] [error] lookup of 'ZZZ::AuthzSmb' failed
[Tue Aug 12 16:15:19 2008] [error] lookup of 'ZZZ::\xf8w\v\n\x0c' failed
[Tue Aug 12 16:31:36 2008] [error] lookup of 'ZZZ::AuthzSmb`\x89' failed
[Tue Aug 12 16:55:34 2008] [error] lookup of 'ZZZ::AuthzSmb\xf8\xde' failed
[Tue Aug 12 16:55:47 2008] [error] lookup of 'ZZZ::AuthzSmbX@' failed
[Tue Aug 12 17:24:32 2008] [error] lookup of 'h\xfd\xfa\t' failed
here's the backtrace or a core file with MP_DEBUG=1. Any help would
be appreciated, i'm at a loss.
(gdb) bt full
#0 0xb7d618cb in modperl_mgv_as_string (symbol=0x9fadc28,
p=0x9fae240, package=0)
at modperl_mgv.c:393
string = 0x9fadc28 "\002"
ptr = 0x0
mgv = (modperl_mgv_t *) 0x2
len = 2
#1 0xb7d56b21 in modperl_callback (handler=0x85146c0, p=0x9fae240,
r=0x9fae280, s=0x8504330,
args=0xa104b04) at modperl_callback.c:85
name = 0x11 <Address 0x11 out of bounds>
symbol = (modperl_mgv_t *) 0x9fadc28
gv = (GV *) 0x0
cv = (CV *) 0x0
flags = 4
sp = (SV **) 0xa24319c
count = 169833880
status = 0
__func__ = "modperl_callback"
#2 0xb7d573ae in modperl_callback_run_handlers (idx=3, type=4,
r=0x9fae280, c=0x0, s=0x8504330,
pconf=0x0, plog=0x0, ptemp=0x0, run_mode=MP_HOOK_RUN_FIRST) at
modperl_callback.c:262
scfg = (modperl_config_srv_t *) 0x855d0d8
dcfg = (modperl_config_dir_t *) 0x9fad130
rcfg = (modperl_config_req_t *) 0x9faeff0
handlers = (modperl_handler_t **) 0x9fadd00
p = (apr_pool_t *) 0x9fae240
av = (MpAV *) 0x9fadc88
avp = (MpAV **) 0x9faf010
i = 0
status = 0
desc = 0xb7d7c372 "PerlAuthzHandler"
av_args = (AV *) 0xa104b04
__func__ = "modperl_callback_run_handlers"
#3 0xb7d57848 in modperl_callback_per_dir (idx=3, r=0x9fae280,
run_mode=MP_HOOK_RUN_FIRST)
at modperl_callback.c:369
No locals.
#4 0xb7d731ed in modperl_authz_handler (r=0x9fae280) at modperl_hooks.c:47
No locals.
#5 0x08076867 in ap_run_auth_checker (r=0x9fae280) at request.c:78
n = 0
rv = 159247752
#6 0x080785d5 in ap_process_request_internal (r=0x9fae280) at request.c:198
file_req = 0
access_status = <value optimized out>
#7 0x08094b98 in ap_process_request (r=0x9fae280) at http_request.c:256
access_status = 2
#8 0x08091e0e in ap_process_http_connection (c=0xa0545f0) at http_core.c:190
r = (request_rec *) 0x9fae280
csd = (apr_socket_t *) 0x0
#9 0x08081e27 in ap_run_process_connection (c=0xa0545f0) at connection.c:43
n = 1
rv = 159247752
#10 0x080a821d in child_main (child_num_arg=<value optimized out>) at
prefork.c:650
numdesc = 0
pdesc = (const apr_pollfd_t *) 0x0
current_conn = (conn_rec *) 0xa0545f0
csd = (void *) 0xa054458
ptrans = (apr_pool_t *) 0xa054418
allocator = (apr_allocator_t *) 0x9f43550
status = <value optimized out>
i = <value optimized out>
lr = <value optimized out>
pollset = (apr_pollset_t *) 0xa052468
sbh = (ap_sb_handle_t *) 0xa052460
bucket_alloc = (apr_bucket_alloc_t *) 0x9faa230
last_poll_idx = 0
#11 0x080a84f6 in make_child (s=0x80d4ce0, slot=4) at prefork.c:746
pid = 0
#12 0x080a85aa in startup_children (number_to_start=1) at prefork.c:764
i = 4
#13 0x080a91d7 in ap_mpm_run (_pconf=0x80d00a8, plog=0x810e1a0,
s=0x80d4ce0) at prefork.c:985
active_children = <value optimized out>
cutoff = <value optimized out>
index = <value optimized out>
remaining_children_to_start = 5
rv = <value optimized out>
#14 0x08068948 in main (argc=135061664, argv=0xa052410) at main.c:730
c = 68 'D'
configtestonly = 0
confname = 0xbfbb07c0 "/www/conf/httpd.conf"
def_server_root = 0x80b2523 "/www/apache/heavy"
temp_error_log = 0x0
error = <value optimized out>
process = (process_rec *) 0x80ce130
server_conf = <value optimized out>
pglobal = (apr_pool_t *) 0x80ce0a0
pconf = (apr_pool_t *) 0x80d00a8
plog = (apr_pool_t *) 0x810e1a0
ptemp = (apr_pool_t *) 0x80d60c0
pcommands = (apr_pool_t *) 0x80d20b0
opt = (apr_getopt_t *) 0x80d2150
rv = <value optimized out>
optarg = 0xbfbb07d7 "BackEnd"