I should add I'm using prefork (other problems with event and worker) and I didn't access the web server. Simply starting it and waiting a bit results in those cores.

A complete stack:

#0 hc_get_hcworker (ctx=ctx@entry=0xe3818, worker=worker@entry=0xf9328, p=p@entry=0x11ff38)
    at modules/proxy/mod_proxy_hcheck.c:410
        wctx = 0x70706461
        hc = 0xe59f8
        wptr = 0xe6058 "f9328"

#1 0xfeb432f4 in hc_check_http (worker=0xf9328, p=0x11ff38, ctx=0xe3818) at modules/proxy/mod_proxy_hcheck.c:650
        status = <optimized out>
c = {pool = 0xfeeba558, base_server = 0xfe8fbe60, vhost_lookup_data = 0xff08a398, local_addr = 0x0, client_addr = 0x1c00, client_ip = 0x0, remote_host = 0x0, remote_logname = 0x0, local_ip = 0x5f5e100 <Address 0x5f5e100 out of bounds>, local_host = 0xfeb49788 "modules/proxy/mod_proxy_hcheck.c", id = -21649064, conn_config = 0x529dd, notes = 0x6ed21e3c, input_filters = 0x529dd, output_filters = 0xe3818, sbh = 0xcc290, bucket_alloc = 0xfeb5a0fc, cs = 0x0, data_in_input_filters = 100000, data_in_output_filters = 0, clogging_input_filters = 0, double_reverse = -1, aborted = 0, keepalive = 1800008, keepalives = -24133952, log = 0xfecc2b7c, log_id = 0xfe8fbec0 "▒▒▒▒▒▒y`▒▒\223\060▒▒\207\220▒▒\222▒▒\217▒<", current_thread = 0xfecc2aec, slaves = 0x0, master = 0x0, ctx = 0xfecc8b18, suspended_baton = 0xfe8fbf20, requests = 0x0, empty = 0x0, filters = 0x56a136d3, async_filter = 335104}
        wctx = <optimized out>
        cond = 0x4
        backend = 0x0
        hc = <optimized out>
        r = 0x6ed21e3c
        method = <optimized out>

#2 hc_check (worker=0xf9328, now=1453405907335111, p=0x11ff38, ctx=0xe3818) at modules/proxy/mod_proxy_hcheck.c:757
        s = 0xcc290
        rv = <optimized out>

#3 hc_watchdog_callback (state=<optimized out>, data=0xe3818, pool=<optimized out>) at modules/proxy/mod_proxy_hcheck.c:839
        n = 0
        workers = 0xf8bb0
        worker = 0xf9328
        i = <optimized out>
        rv = <optimized out>
        now = <optimized out>
        balancer = <optimized out>
        ctx = 0xe3818
        s = <optimized out>
        conf = <optimized out>
        p = 0x11ff38
#4 0xfecc2d08 in wd_worker (thread=<optimized out>, data=0xd3710) at modules/core/mod_watchdog.c:203
        ctx = 0x11df30
        curr = 1453405907235104
        wl = 0xd37f8
        w = 0xd3710
        rv = <optimized out>
        locked = 1
        probed = <optimized out>
        inited = 0
        mpmq_s = 1
#5 0xff095468 in dummy_worker (opaque=0x107f88) at apr-1.5.2/threadproc/unix/thread.c:142
        thread = 0x107f88

Config in global server:

ProxyHCExpr ok234 {%{REQUEST_STATUS} =~ /^[234]/}

ProxyPass "/" "balancer://mycluster/"
<Proxy balancer://mycluster>
    BalancerMember "http://www.kippdata.de/"; \
        hcexpr=ok234 hcmethod=GET hcinterval=10
</Proxy>

Regards,

Rainer

Am 21.01.2016 um 20:59 schrieb Rainer Jung:
Probably an alignment problem, but I don't immediately see how:

at modules/proxy/mod_proxy_hcheck.c:410
         wctx = 0x70706461
So this is not an address usable for a pointer.

But wctx comes from hc->s->context:

{name = "f9328\000/www.kippdata.de/", '\000' <repeats 232 times>, scheme
= "http", '\000' <repeats 11 times>, hostname = "www.kippdata.de",
'\000' <repeats 80 times>,
   route = '\000' <repeats 95 times>, redirect = '\000' <repeats 95
times>, flusher = '\000' <repeats 15 times>, uds_path = '\000' <repeats
255 times>,
   hcuri = '\000' <repeats 95 times>, hcexpr = '\000' <repeats 15
times>, "\001", lbset = 0, retries = 0, lbstatus = 0, lbfactor = 10000,
min = 0, smax = 1, hmax = 0,
   flush_wait = 1, index = 0, passes = 1815278865, pcount = -1571419579,
fails = 3, fcount = 0, hash = {def = 2239854630, fnv = 2173387474},
status = 10,
   flush_packets = flush_off, method = GET, updated = 0, error_time =
60000000, ttl = 0, retry = 0, timeout = 0, acquire = 0, ping_timeout =
30000000, conn_timeout = 0,
   interval = 0, recv_buffer_size = 5242880, io_buffer_size = 0, elected
= 0, busy = 0, port = 80, transferred = 536870912, read =
3400067598672358249, context = 0x70706461,
   keepalive = 0, disablereuse = 0, is_address_reusable = 0, retry_set =
1, timeout_set = 0, acquire_set = 1, ping_timeout_set = 0,
conn_timeout_set = 0,
   recv_buffer_size_set = 0, io_buffer_size_set = 1, keepalive_set = 1,
disablereuse_set = 0, was_malloced = 0, is_name_matchable = 0}

and the context member gets set in line 403:

hc->context = wctx;

If I add a debug statement there the address looks different and fine. I
don't immediately see where the address changes. Sparc is known to be
picky about alignment. One might not observe this on x86.

Regards,

Rainer

Reply via email to