mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-08 18:30:18 +00:00
Create internal threads with sufficient stack size
This commit is contained in:
parent
3b8dfc621b
commit
2c1094bd70
10
NEWS
10
NEWS
@ -10,11 +10,11 @@ Version 2.15
|
|||||||
* The following bugs are resolved with this release:
|
* The following bugs are resolved with this release:
|
||||||
|
|
||||||
6779, 6783, 9696, 10103, 10709, 11589, 12403, 12847, 12868, 12852, 12874,
|
6779, 6783, 9696, 10103, 10709, 11589, 12403, 12847, 12868, 12852, 12874,
|
||||||
12885, 12892, 12907, 12922, 12935, 13007, 13021, 13067, 13068, 13090,
|
12885, 12892, 12907, 12922, 12935, 13007, 13021, 13067, 13068, 13088,
|
||||||
13092, 13096, 13114, 13118, 13123, 13134, 13138, 13147, 13150, 13166,
|
13090, 13092, 13096, 13114, 13118, 13123, 13134, 13138, 13147, 13150,
|
||||||
13179, 13185, 13189, 13192, 13268, 13276, 13282, 13291, 13305, 13328,
|
13166, 13179, 13185, 13189, 13192, 13268, 13276, 13282, 13291, 13305,
|
||||||
13335, 13337, 13344, 13358, 13367, 13413, 13416, 13423, 13439, 13446,
|
13328, 13335, 13337, 13344, 13358, 13367, 13413, 13416, 13423, 13439,
|
||||||
13472, 13484, 13506, 13515, 13523, 13524, 13538, 13540
|
13446, 13472, 13484, 13506, 13515, 13523, 13524, 13538, 13540
|
||||||
|
|
||||||
* New program pldd to list loaded object of a process
|
* New program pldd to list loaded object of a process
|
||||||
Implemented by Ulrich Drepper.
|
Implemented by Ulrich Drepper.
|
||||||
|
@ -1,3 +1,14 @@
|
|||||||
|
2011-12-22 Ulrich Drepper <drepper@gmail.com>
|
||||||
|
|
||||||
|
[BZ #13088]
|
||||||
|
* sysdeps/unix/sysv/linux/timer_routines.c: Get minimum stack size
|
||||||
|
through __pthread_get_minstack.
|
||||||
|
* nptl-init.c (__pthread_initialize_minimal_internal): Get page size
|
||||||
|
directly from _rtld_global_ro.
|
||||||
|
(__pthread_get_minstack): New function.
|
||||||
|
* pthreadP.h: Declare __pthread_get_minstack.
|
||||||
|
* Versions (libpthread) [GLIBC_PRIVATE]: Add __pthread_get_minstack.
|
||||||
|
|
||||||
2011-12-21 Ulrich Drepper <drepper@gmail.com>
|
2011-12-21 Ulrich Drepper <drepper@gmail.com>
|
||||||
|
|
||||||
[BZ #13515]
|
[BZ #13515]
|
||||||
|
@ -255,6 +255,6 @@ libpthread {
|
|||||||
GLIBC_PRIVATE {
|
GLIBC_PRIVATE {
|
||||||
__pthread_initialize_minimal;
|
__pthread_initialize_minimal;
|
||||||
__pthread_clock_gettime; __pthread_clock_settime;
|
__pthread_clock_gettime; __pthread_clock_settime;
|
||||||
__pthread_unwind;
|
__pthread_unwind; __pthread_get_minstack;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -427,7 +427,7 @@ __pthread_initialize_minimal_internal (void)
|
|||||||
|
|
||||||
/* Make sure it meets the minimum size that allocate_stack
|
/* Make sure it meets the minimum size that allocate_stack
|
||||||
(allocatestack.c) will demand, which depends on the page size. */
|
(allocatestack.c) will demand, which depends on the page size. */
|
||||||
const uintptr_t pagesz = __sysconf (_SC_PAGESIZE);
|
const uintptr_t pagesz = GLRO(dl_pagesize);
|
||||||
const size_t minstack = pagesz + __static_tls_size + MINIMAL_REST_STACK;
|
const size_t minstack = pagesz + __static_tls_size + MINIMAL_REST_STACK;
|
||||||
if (limit.rlim_cur < minstack)
|
if (limit.rlim_cur < minstack)
|
||||||
limit.rlim_cur = minstack;
|
limit.rlim_cur = minstack;
|
||||||
@ -469,3 +469,13 @@ __pthread_initialize_minimal_internal (void)
|
|||||||
}
|
}
|
||||||
strong_alias (__pthread_initialize_minimal_internal,
|
strong_alias (__pthread_initialize_minimal_internal,
|
||||||
__pthread_initialize_minimal)
|
__pthread_initialize_minimal)
|
||||||
|
|
||||||
|
|
||||||
|
size_t
|
||||||
|
__pthread_get_minstack (const pthread_attr_t *attr)
|
||||||
|
{
|
||||||
|
struct pthread_attr *iattr = (struct pthread_attr *) attr;
|
||||||
|
|
||||||
|
return (GLRO(dl_pagesize) + __static_tls_size + PTHREAD_STACK_MIN
|
||||||
|
+ iattr->guardsize);
|
||||||
|
}
|
||||||
|
@ -397,6 +397,7 @@ weak_function;
|
|||||||
|
|
||||||
extern void __pthread_init_static_tls (struct link_map *) attribute_hidden;
|
extern void __pthread_init_static_tls (struct link_map *) attribute_hidden;
|
||||||
|
|
||||||
|
extern size_t __pthread_get_minstack (const pthread_attr_t *attr);
|
||||||
|
|
||||||
/* Namespace save aliases. */
|
/* Namespace save aliases. */
|
||||||
extern int __pthread_getschedparam (pthread_t thread_id, int *policy,
|
extern int __pthread_getschedparam (pthread_t thread_id, int *policy,
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
/* Copyright (C) 2003, 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
|
/* Copyright (C) 2003-2007, 2011 Free Software Foundation, Inc.
|
||||||
This file is part of the GNU C Library.
|
This file is part of the GNU C Library.
|
||||||
Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
|
Contributed by Ulrich Drepper <drepper@redhat.com>, 2003.
|
||||||
|
|
||||||
@ -165,7 +165,7 @@ __start_helper_thread (void)
|
|||||||
and should go away automatically when canceled. */
|
and should go away automatically when canceled. */
|
||||||
pthread_attr_t attr;
|
pthread_attr_t attr;
|
||||||
(void) pthread_attr_init (&attr);
|
(void) pthread_attr_init (&attr);
|
||||||
(void) pthread_attr_setstacksize (&attr, PTHREAD_STACK_MIN);
|
(void) pthread_attr_setstacksize (&attr, __pthread_get_minstack (&attr));
|
||||||
|
|
||||||
/* Block all signals in the helper thread but SIGSETXID. To do this
|
/* Block all signals in the helper thread but SIGSETXID. To do this
|
||||||
thoroughly we temporarily have to block all signals here. The
|
thoroughly we temporarily have to block all signals here. The
|
||||||
|
Loading…
Reference in New Issue
Block a user