> Am 12.07.2021 um 11:07 schrieb Yann Ylavic <[email protected]>:
>
> On Mon, Jul 12, 2021 at 10:13 AM Stefan Eissing
> <[email protected]> wrote:
>>
>> Is this the "worker->cp" being NULL?
>
> Is there a discussion about this already Stefan?
I have not analyzed all possible paths to this. I just saw that there are
several places where worker->cp seems to be lazy initialized.
>
> It's indeed worker->cp == NULL, I can reproduce on 2.4.x + apr-trunk with:
> $ while t/TEST t/modules/proxy_balancer.t; do :; done
> ...
> (gdb) bt
> #0 0x00007f4eaa06716c in ap_proxy_acquire_connection
> (proxy_function=0x7f4eaa03e015 "http", conn=0x7f4e31ffaa90,
> worker=0x55ee904554a0, s=0x55ee90649260) at proxy_util.c:2417
> #1 0x00007f4eaa03d28d in proxy_http_handler (r=0x7f4e14002c10,
> worker=0x55ee904554a0, conf=0x55ee90421aa0, url=0x7f4e14007538
> "http://localhost:8529/", proxyname=0x0, proxyport=0) at
> mod_proxy_http.c:1878
> #2 0x00007f4eaa0606fc in proxy_run_scheme_handler (r=0x7f4e14002c10,
> worker=0x55ee904554a0, conf=0x55ee90421aa0, url=0x7f4e14007538
> "http://localhost:8529/", proxyhost=0x0, proxyport=0) at
> mod_proxy.c:3183
> #3 0x00007f4eaa05a65b in proxy_handler (r=0x7f4e14002c10) at mod_proxy.c:1262
> #4 0x000055ee8f18a2e5 in ap_run_handler (r=0x7f4e14002c10) at config.c:169
> #5 0x000055ee8f18ae1f in ap_invoke_handler (r=0x7f4e14002c10) at config.c:443
> #6 0x000055ee8f1a8bea in ap_process_async_request (r=0x7f4e14002c10)
> at http_request.c:452
> #7 0x000055ee8f1a4bf8 in ap_process_http_async_connection
> (c=0x7f4e10000f98) at http_core.c:155
> #8 0x000055ee8f1a4df5 in ap_process_http_connection
> (c=0x7f4e10000f98) at http_core.c:246
> #9 0x000055ee8f19865a in ap_run_process_connection (c=0x7f4e10000f98)
> at connection.c:42
> #10 0x00007f4eaa6f5dde in process_socket (thd=0x7f4e84020eb8,
> p=0x7f4e10000c68, sock=0x7f4e10000cf0, cs=0x7f4e10000ef0,
> my_child_num=0, my_thread_num=22) at event.c:1038
> #11 0x00007f4eaa6f7f93 in worker_thread (thd=0x7f4e84020eb8,
> dummy=0x7f4e84031cf0) at event.c:2070
> #12 0x00007f4eaa770662 in dummy_worker (opaque=0x7f4e84020eb8) at
> threadproc/unix/thread.c:148
> #13 0x00007f4eaa6cdea7 in start_thread (arg=<optimized out>) at
> pthread_create.c:477
> #14 0x00007f4eaa5fddef in clone () at
> ../sysdeps/unix/sysv/linux/x86_64/clone.S:95
> (gdb) l
> 2412 proxy_function, worker->s->hostname_ex);
> 2413 return HTTP_SERVICE_UNAVAILABLE;
> 2414 }
> 2415 }
> 2416
> 2417 if (worker->s->hmax && worker->cp->res) {
> 2418 rv = apr_reslist_acquire(worker->cp->res, (void **)conn);
> 2419 }
> 2420 else {
> 2421 /* create the new connection if the previous was destroyed */
> (gdb) p *worker
> $5 = {hash = {def = 917659709, fnv = 2489242135}, local_status =
> 1970041715, cp = 0x0, s = 0x7f4ea99dd020, balancer = 0x55ee90422128,
> tmutex = 0x0, context = 0x0, section_config = 0x55ee90455490}