Mailing List Archive

Re: svn commit: r1902909 - /httpd/httpd/trunk/server/util.c
On 7/21/22 1:21 PM, ylavic@apache.org wrote:
> Author: ylavic
> Date: Thu Jul 21 11:21:30 2022
> New Revision: 1902909
>
> URL: http://svn.apache.org/viewvc?rev=1902909&view=rev
> Log:
> core: Follow up to r1902728 and r1902906: simplify for APR-1.8+.
>
> apr_threadattr_max_free_set() is now in APR-1.8.x.
>
>
> Modified:
> httpd/httpd/trunk/server/util.c
>
> Modified: httpd/httpd/trunk/server/util.c
> URL: http://svn.apache.org/viewvc/httpd/httpd/trunk/server/util.c?rev=1902909&r1=1902908&r2=1902909&view=diff
> ==============================================================================
> --- httpd/httpd/trunk/server/util.c (original)
> +++ httpd/httpd/trunk/server/util.c Thu Jul 21 11:21:30 2022

> @@ -3355,19 +3355,6 @@ AP_DECLARE(apr_status_t) ap_thread_main_
> return rv;
> }
>
> -#if APR_VERSION_AT_LEAST(1,8,0) && !APR_VERSION_AT_LEAST(2,0,0)
> - /* Don't let the thread's pool allocator with no limits, though there
> - * is possibly no allocator with APR <= 1.7 and APR_POOL_DEBUG.
> - */
> - {
> - apr_pool_t *tp = apr_thread_pool_get(*thread);
> - apr_allocator_t *ta = apr_pool_allocator_get(tp);
> - if (ta) {
> - apr_allocator_max_free_set(ta, ap_max_mem_free);
> - }
> - }
> -#endif
> -

Why don't we do the above for APR <= 1.7? The code is now NULL safe for APR_POOL_DEBUG.

> apr_pool_cleanup_register(pool, *thread, main_thread_cleanup,
> apr_pool_cleanup_null);
> return APR_SUCCESS;
> @@ -3398,12 +3385,12 @@ AP_DECLARE(apr_status_t) ap_thread_curre
> abort_fn(rv);
> return rv;
> }
> + apr_allocator_max_free_set(ta, ap_max_mem_free);
> rv = apr_pool_create_unmanaged_ex(&p, abort_fn, ta);
> if (rv != APR_SUCCESS) {
> return rv;
> }
> /* Don't let the thread's pool allocator with no limits */

The comment should move as well.

> - apr_allocator_max_free_set(ta, ap_max_mem_free);
> apr_allocator_owner_set(ta, p);
>
> osthd = apr_os_thread_current();
>
>
>

Regards

RĂ¼diger
Re: svn commit: r1902909 - /httpd/httpd/trunk/server/util.c [ In reply to ]
On Thu, Jul 28, 2022 at 4:02 PM Ruediger Pluem <rpluem@apache.org> wrote:
>
> On 7/21/22 1:21 PM, ylavic@apache.org wrote:
>
> > --- httpd/httpd/trunk/server/util.c (original)
> > +++ httpd/httpd/trunk/server/util.c Thu Jul 21 11:21:30 2022
>
> > @@ -3355,19 +3355,6 @@ AP_DECLARE(apr_status_t) ap_thread_main_
> > return rv;
> > }
> >
> > -#if APR_VERSION_AT_LEAST(1,8,0) && !APR_VERSION_AT_LEAST(2,0,0)
> > - /* Don't let the thread's pool allocator with no limits, though there
> > - * is possibly no allocator with APR <= 1.7 and APR_POOL_DEBUG.
> > - */
> > - {
> > - apr_pool_t *tp = apr_thread_pool_get(*thread);
> > - apr_allocator_t *ta = apr_pool_allocator_get(tp);
> > - if (ta) {
> > - apr_allocator_max_free_set(ta, ap_max_mem_free);
> > - }
> > - }
> > -#endif
> > -
>
> Why don't we do the above for APR <= 1.7? The code is now NULL safe for APR_POOL_DEBUG.

For APR <= 1.7 the ap_thread_current_create() implementation in httpd
(called above) will do that already, while for >= 1.8 we use/point to
apr_thread_current_create() directly and that does not set max_free by
default (but then we call apr_threadattr_max_free_set() explicitly).

>
> > apr_pool_cleanup_register(pool, *thread, main_thread_cleanup,
> > apr_pool_cleanup_null);
> > return APR_SUCCESS;
> > @@ -3398,12 +3385,12 @@ AP_DECLARE(apr_status_t) ap_thread_curre
> > abort_fn(rv);
> > return rv;
> > }
> > + apr_allocator_max_free_set(ta, ap_max_mem_free);
> > rv = apr_pool_create_unmanaged_ex(&p, abort_fn, ta);
> > if (rv != APR_SUCCESS) {
> > return rv;
> > }
> > /* Don't let the thread's pool allocator with no limits */
>
> The comment should move as well.

Thanks, done in r1903522.

>
> > - apr_allocator_max_free_set(ta, ap_max_mem_free);
> > apr_allocator_owner_set(ta, p);
> >
> > osthd = apr_os_thread_current();
> >

Regards;
Yann.