Is there a chunk of dead code below this change or am I misreading?
https://svn.apache.org/viewvc/httpd/httpd/trunk/server/mpm/event/event.c?revision=1916241=markup=1916241#l2758
The first thread creation failure results in clean_child_exit(), so
what's all this about starting the listener as long as we have some
workers or AH03271 stuff about not taking over slots quickly?
On Mon, Mar 11, 2024 at 4:36 PM wrote:
>
> Author: covener
> Date: Mon Mar 11 20:35:27 2024
> New Revision: 1916241
>
> URL: http://svn.apache.org/viewvc?rev=1916241=rev
> Log:
> event: avoid possible hang in clean_child_exit
>
> If the pthread_create failure isn't on the first worker thread,
> another one is likely to hold the queue mutex already. The cleanup
> of pchild will try to cleanup the queue and block on destroying
> the condition.
>
> ST_UNGRACEFUL as we have no listener thread yet.
>
>
> Modified:
> httpd/httpd/trunk/server/mpm/event/event.c
>
> Modified: httpd/httpd/trunk/server/mpm/event/event.c
> URL:
> http://svn.apache.org/viewvc/httpd/httpd/trunk/server/mpm/event/event.c?rev=1916241=1916240=1916241=diff
> ==
> --- httpd/httpd/trunk/server/mpm/event/event.c (original)
> +++ httpd/httpd/trunk/server/mpm/event/event.c Mon Mar 11 20:35:27 2024
> @@ -2749,6 +2749,7 @@ static void *APR_THREAD_FUNC start_threa
> APLOGNO(03104)
> "ap_thread_create: unable to create worker
> thread");
> /* let the parent decide how bad this really is */
> +signal_threads(ST_UNGRACEFUL);
> clean_child_exit(APEXIT_CHILDSICK);
> }
> threads_created++;
>
>
--
Eric Covener
cove...@gmail.com