Code review is a fine thing... Hmm, I think the best way to tackle this is to transfer the worker into a zombie set from worker_done(). Then in h2_workers_register(), which is called regularly and often, join the threads and destroy the zombie workers.
Allocating the worker from parent_pool is not good as workers appear/disappear during load changes and the parent pool will just continue to grow. //Stefan > Am 23.10.2015 um 12:13 schrieb Yann Ylavic <ylavic....@gmail.com>: > > On Fri, Oct 23, 2015 at 10:42 AM, Stefan Eissing > <stefan.eiss...@greenbytes.de> wrote: >> >> In regard to https://bz.apache.org/bugzilla/show_bug.cgi?id=58524 > > We possibly need this too: > > Index: modules/http2/h2_worker.c > =================================================================== > --- modules/http2/h2_worker.c (revision 1710105) > +++ modules/http2/h2_worker.c (working copy) > @@ -110,7 +110,7 @@ h2_worker *h2_worker_create(int id, > return NULL; > } > > - apr_thread_create(&w->thread, attr, execute, w, pool); > + apr_thread_create(&w->thread, attr, execute, w, parent_pool); > } > return w; > } > -- > > since the worker destroys itself in its own thread (pool == w->pool). > > Also, where are the worker threads joined?