RFR: 8225035: Thread stack size issue caused by large TLS size

Florian Weimer fweimer at redhat.com
Thu Jun 27 07:12:59 UTC 2019


* Jiangli Zhou:

> Hi Florian and Thomas,
>
> Thank you both for the quick turnaround! I've incorporated the
> suggestions from you and updated the webrev below. Hopefully that I've
> captured all of those without missing any. Please let me know if
> there's anything that I missed.
>
> http://cr.openjdk.java.net/~jiangli/8225035/webrev.02/

I think

  stack_adjust_size += guard_size;

is redundant with the get_minstack-based adjustment because it is either
included in it directly in the get_minstack value, or indirectly in the
updated stack size computation in glibc (where it adds the guard size
internally).  (The guard size adjustment was removed from
__pthread_get_minstack because it happens elsewhere in glibc.)  For this
to work across different glibc versions, you need to set the guard size
first in the attribute (before the stack size).

__pthread_get_minstack also returns quite a bit more than the static TLS
size.  I think you should subtract os::vm_page_size() and
PTHREAD_MIN_STACK from it to get the actual value.

I suspect this new flag is is working well because it effectively adds
20 KiB to all requested stack sizes (page size plus PTHREAD_MIN_STACK).
The static TLS size adjustment may not matter at all.  On older glibcs,
the number is even higher because your code adds the guard size twice
(once in __pthread_get_minstack, once in the Hotspot code).

Thanks,
Florian


More information about the hotspot-runtime-dev mailing list