I'm running HEAD as of earlier this afternoon on Solaris 8+sendfile, with
the worker mpm.
I'm seeing two problems:
one, is that the httpd process (one, sometimes both of the children I have
started) will spin up, eating CPU. A truss of these busy processes shows
that there are some threads stuck in some sort of read() loop on one or
more sockets, and all the read()s are returning 0 bytes. This persists
until I kill the processes.
The second issue, is that httpd seems to hang in ap_lingering_close()
while shutting down (after an 'apachectl stop' is issued. It'll eventually
die when I send a few SIGTERMs to it, and leaves a core file behind with
the following stack trace:
#0 0xff348ee0 in apr_pool_clear (a=0x3d6620) at apr_pools.c:957
957 free_blocks(a->first->h.next);
(gdb) where
#0 0xff348ee0 in apr_pool_clear (a=0x3d6620) at apr_pools.c:957
#1 0x97160 in core_output_filter (f=0x3c8910, b=0x0) at core.c:3217
#2 0x90108 in ap_pass_brigade (next=0x3c8910, bb=0x499a58)
at util_filter.c:276
#3 0x8ea64 in ap_lingering_close (dummy=0x3c8698) at connection.c:175
#4 0xff348d44 in run_cleanups (c=0x3c88d8) at apr_pools.c:833
#5 0xff348ec8 in apr_pool_clear (a=0x3c8598) at apr_pools.c:949
#6 0xff348f24 in apr_pool_destroy (a=0x3c8598) at apr_pools.c:995
#7 0x8294c in worker_thread (thd=0x18dd10, dummy=0x3c8598) at
worker.c:723
#8 0xff343048 in dummy_worker (opaque=0x18dd10) at thread.c:122
(gdb) where full
#0 0xff348ee0 in apr_pool_clear (a=0x3d6620) at apr_pools.c:957
No locals.
#1 0x97160 in core_output_filter (f=0x3c8910, b=0x0) at core.c:3217
rv = 0
c = (conn_rec *) 0x3c8698
ctx = (core_output_filter_ctx_t *) 0x3c8950
#2 0x90108 in ap_pass_brigade (next=0x3c8910, bb=0x499a58)
at util_filter.c:276
e = (apr_bucket *) 0x499a58
#3 0x8ea64 in ap_lingering_close (dummy=0x3c8698) at connection.c:175
dummybuf =
"\000\000\000;\000\000\000\024\000\000\000\n\000\000\000\n\000\000\000e\000\000\000\006\000\000\0019\000\000\000\000����\000<��\000<��\000=:h\000\000\000\013�5�\234\000=%�\000<��\000\000\000\000\000I�
\000\000\000�\000\000\000\000\000<\206\230�5�\234\000%J\030\000==`�pY�\000\000\000\004\000\000\000\n\000=>7�pYx\000\004T�\000=8�\000\000\000+\000\000�\000\000\000\000\000�3�\000<\206�\000<�h\000<\206�\000\000\000\000\000\000\000\000\000<\205\230\000<\211\b\000\000\000H\000%G\020\000==`\000=<�\000=<\200\000=:P\000\000\000\000�7�$"...
nbytes = 512
rc = 3967248
total_linger_time = 0
#4 0xff348d44 in run_cleanups (c=0x3c88d8) at apr_pools.c:833
No locals.
#5 0xff348ec8 in apr_pool_clear (a=0x3c8598) at apr_pools.c:949
No locals.
#6 0xff348f24 in apr_pool_destroy (a=0x3c8598) at apr_pools.c:995
blok = (union block_hdr *) 0x3c8598
#7 0x8294c in worker_thread (thd=0x18dd10, dummy=0x3c8598) at
worker.c:723
process_slot = 0
thread_slot = 17
csd = (apr_socket_t *) 0x3c85c8
ptrans = (apr_pool_t *) 0x3c8598
rv = 3966360
#8 0xff343048 in dummy_worker (opaque=0x18dd10) at thread.c:122
No locals.
(gdb)
/dale