Bug 56314

Summary: exiting from MPM-worker child caused assert in apr_reslist.c:161
Product: Apache httpd-2 Reporter: ywu
Component: mpm_workerAssignee: Apache HTTPD Bugs Mailing List <bugs>
Status: NEW ---    
Severity: normal    
Priority: P2    
Version: 2.4.7   
Target Milestone: ---   
Hardware: PC   
OS: Linux   

Description ywu 2014-03-25 20:45:18 UTC
This issue is similar to Bug 43857 - exiting prefork child doesn't clear request pool. The bug 43857 is related to prefork child, this is related to mpm-worker child.

stack trace:

Thread 1 (Thread 0x7fafad5e0740 (LWP 14219)):
#0  0x00007fafac77b425 in raise () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#1  0x00007fafac77eb8b in abort () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#2  0x00007fafac7740ee in ?? () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#3  0x00007fafac774192 in __assert_fail () from /lib/x86_64-linux-gnu/libc.so.6
No symbol table info available.
#4  0x00007fafacf7ce3f in reslist_cleanup (data_=0x7fafae9e8bd0) at misc/apr_reslist.c:161
        rv = 0
        rl = 0x7fafae9e8bd0
        res = 0x7fffb9044920
        __PRETTY_FUNCTION__ = "reslist_cleanup"
#5  0x00007fafacd40c30 in run_cleanups (cref=0x7fafae9e8b78) at memory/unix/apr_pools.c:2352
        c = 0x7fafae9e8d10
#6  0x00007fafacd3fabf in apr_pool_destroy (pool=0x7fafae9e8b58) at memory/unix/apr_pools.c:814
        active = 0x7fafaeaed640
        allocator = 0x7fafae8be010
#7  0x00007fafacd3faa2 in apr_pool_destroy (pool=0x7fafae95a268) at memory/unix/apr_pools.c:811
        active = 0x7fafae95a268
        allocator = 0x7fafaeb8aa08
#8  0x00007fafad67895e in clean_child_exit (code=0) at worker.c:430
No locals.
#9  0x00007fafad67ad59 in child_main (child_num_arg=11) at worker.c:1367
        threads = 0x7fafaecd9cf0
        rv = 1
        ts = 0x7fafae95be10
        thread_attr = 0x7fafae95be30
        start_thread_id = 0x7fafae95be90
#10 0x00007fafad67ae58 in make_child (s=0x7fafae8ed4c0, slot=11) at worker.c:1418
        pid = 0
#11 0x00007fafad67b59f in perform_idle_server_maintenance () at worker.c:1626
        i = 0
        j = 25
        idle_thread_count = 73
        ws = 0x7fafad485f60
        ps = 0x7fafad44e1e0
        free_length = 1
        totally_free_length = 1
        free_slots = {11, 2, 3, 4, 5, 6, 1, 2, 3, 4, -1388432843, 32687, 134, 0, 6, 0, 5952, 0, -1386065568, 32687, -1190900960, 32767, -1395325068, 32687, 1395745853, 0, -1400690833, 32687, 0, 0, -1395323367, 32687}
        last_non_dead = 14
        total_non_dead = 15
        active_thread_count = 155
#12 0x00007fafad67b916 in server_main_loop (remaining_children_to_start=0) at worker.c:1752
        old_gen = -1365807208
        child_slot = 0
        exitwhy = 6
        status = 6
        processed_status = 0
        pid = {pid = -1, in = 0x7fafae976f98, out = 0x0, err = 0xffffffffffffffff}
        i = 25
#13 0x00007fafad67bd69 in worker_run (_pconf=0x7fafae8c4138, plog=0x7fafae8f1378, s=0x7fafae8ed4c0) at worker.c:1823
        remaining_children_to_start = 0
        rv = 0
#14 0x00007fafad62eebb in ap_run_mpm (pconf=0x7fafae8c4138, plog=0x7fafae8f1378, s=0x7fafae8ed4c0) at mpm_common.c:98
        pHook = 0x7fafae963600
        n = 0
        rv = -1
#15 0x00007fafad62717c in main (argc=11, argv=0x7fffb9044f28) at main.c:777
        c = 68 'D'
        showcompile = 0
        showdirectives = 0
        confname = 0x7fafad67fe73 "conf/httpd.conf"
        def_server_root = 0x7fafad67fe83 "/opt/bg/deploy/apache24"
        temp_error_log = 0x0
        error = 0x0
        process = 0x7fafae8c2218
        pconf = 0x7fafae8c4138
        plog = 0x7fafae8f1378
        ptemp = 0x7fafae8ef348
        pcommands = 0x7fafae8e6248
        opt = 0x7fafae8e6338
        rv = 0
        mod = 0x7fafad89d800
        opt_arg = 0x7fffb9046c54 "env_prod"
        signal_server = 0x7fafad6625aa


At apr_reslist.c:161
#4  0x00007fafacf7ce3f in reslist_cleanup (data_=0x7fafae9e8bd0)
    at misc/apr_reslist.c:161=

assert(rl->ntotal == 0);

(gdb) print rl->ntotal
$1 = 9
(gdb) print rl->nidle
$2 = 0