[PATCH v2 3/5] elf: Replace alloca with dl_scratch_buffer in _dl_load_cache_lookup

Adhemerval Zanella Netto adhemerval.zanella@linaro.org
Mon May 18 22:17:57 GMT 2026



On 18/05/26 17:34, H.J. Lu wrote:
> On Tue, May 19, 2026 at 1:26 AM Adhemerval Zanella Netto
> <adhemerval.zanella@linaro.org> wrote:
>>
>>
>>
>> On 15/05/26 19:00, H.J. Lu wrote:
>>>> +
>>>> +static int
>>>> +do_test (void)
>>>> +{
>>>> +  /* Sanity: from the main thread (no stack pressure needed).  */
>>>> +  dlopen_via_cache (NULL);
>>>> +
>>>> +  /* The motivating scenario: from a PTHREAD_STACK_MIN thread.  Before
>>>> +     _dl_load_cache_lookup was converted to dl_scratch_buffer this would
>>>> +     have alloca'd ~3 KB mid-dlopen and risked overflowing.  */
>>>> +  size_t stacksize =
>>>> +#ifdef PTHREAD_STACK_MIN
>>>> +    PTHREAD_STACK_MIN;
>>>> +#else
>>>> +    support_small_thread_stack_size ();
>>>
>>> Shouldn't we use support_small_thread_stack_size unconditionally?
>> The main issue with support_small_thread_stack_size is it defines a quite large
>> thread stack, which would require to add a 'slack' stack usage on each test
>> to triggers the stack overflow on unpatched libc.
>>
>> Also, from the original commit (36ada9ee2cd3b686df6952446b92816584eacbb8) it
>> is not clear what exactly does not work with PTHREAD_STACK_MIN. I guess that
>> would be some features that add some under the hood allocation like
>> pthread_cancel (through libgcc_s.so dlopen), but I think we should also check
>> whether the support_small_thread_stack_size is really required for some tests.
> 
> How about updating support_small_thread_stack_size to use
> PTHREAD_STACK_MIN if defined?  Like this?
> 

Sounds reasonable, I will prepare a new version with this suggestion.


More information about the Libc-alpha mailing list