This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH][BZ #11787] Fix stack guard size accounting
- From: Carlos O'Donell <carlos at redhat dot com>
- To: Szabolcs Nagy <szabolcs dot nagy at arm dot com>, GNU C Library <libc-alpha at sourceware dot org>
- Cc: nd at arm dot com
- Date: Mon, 8 Jan 2018 07:20:14 -0800
- Subject: Re: [PATCH][BZ #11787] Fix stack guard size accounting
- Authentication-results: sourceware.org; auth=none
- References: <5A2FE5ED.1080300@arm.com>
On 12/12/2017 06:21 AM, Szabolcs Nagy wrote:
> Previously if user requested S stack and G guard when creating a
> thread, the total mapping was S and the actual available stack was
> S - G - static_tls, which is not what the user requested.
>
> This patch fixes the guard size accounting by pretending the user
> requested S + G stack. This way all later logic works out except
> when reporting the user requested stack size (pthread_getattr_np)
> or when computing the minimal stack size (__pthread_get_minstack).
>
> Normally this will increase thread stack allocations by one page.
> TLS accounting is not affected, that will require a separate fix.
>
> 2017-12-12 Szabolcs Nagy <szabolcs.nagy@arm.com>
>
> [BZ #11787]
> * nptl/allocatestack.c (allocate_stack): Add guardsize to stacksize.
> * nptl/nptl-init.c (__pthread_get_minstack): Remove guardsize from
> stacksize.
> * nptl/pthread_getattr_np.c (pthread_getattr_np): Likewise.
>
Any status on this?
I would like to get this in as soon as possible because the current
Intel fxsave/xsave/xsavec consume more stack than before, and we have
had at least one report of an application failing because of the additional
stack usage (breaks ntpd helper threads running with PTHREAD_STACK_MIN, see
the other discussion about what good is PTHREADS_STACK_MIN).
It looks like a next step would be:
* Split into two patches.
* First patch is as you intended (and can be checked in right away)
* Second patch removed the unused pthread_attr_r and renames __pthread_get_minstack
to avoid usage by other programs.
--
Cheers,
Carlos.