Comment 8 for bug 1757517

Revision history for this message
In , Carlos-odonell (carlos-odonell) wrote :

I've reviewed the patch sent to the mailing list and provided comments:
http://sourceware.org/ml/libc-alpha/2012-03/msg01002.html

I just noticed that what I recommended shouldn't be required since the code should already take this into account.

Nobody has given any hard numbers about the static TLS size so I'm marking this issue as unconfirmed.

Please provide some real-world figures so we know how bad the problem is compared to the default stack size for x86 e.g. 2MB.
sysdeps/i386/pthreaddef.h:#define ARCH_STACK_DEFAULT_SIZE (2 * 1024 * 1024)

For example code in nptl-init.c tries to take things into account:
~~~ nptl/nptl-inic.c:
414 /* Determine the default allowed stack size. This is the size used
415 in case the user does not specify one. */
416 struct rlimit limit;
417 if (getrlimit (RLIMIT_STACK, &limit) != 0
418 || limit.rlim_cur == RLIM_INFINITY)
419 /* The system limit is not usable. Use an architecture-specific
420 default. */
421 limit.rlim_cur = ARCH_STACK_DEFAULT_SIZE;
422 else if (limit.rlim_cur < PTHREAD_STACK_MIN)
423 /* The system limit is unusably small.
424 Use the minimal size acceptable. */
425 limit.rlim_cur = PTHREAD_STACK_MIN;
426
427 /* Make sure it meets the minimum size that allocate_stack
428 (allocatestack.c) will demand, which depends on the page size. */
429 const uintptr_t pagesz = GLRO(dl_pagesize);
430 const size_t minstack = pagesz + __static_tls_size + MINIMAL_REST_STACK;
431 if (limit.rlim_cur < minstack)
432 limit.rlim_cur = minstack;
433
434 /* Round the resource limit up to page size. */
435 limit.rlim_cur = (limit.rlim_cur + pagesz - 1) & -pagesz;
436 __default_stacksize = limit.rlim_cur;
~~~

Note that we check to see that __default_stacksize takes into account __static_tls_size and a minimal rest size (2K on x86).

Is the problem that the minimal computed is *still* not enough?