mirror of
https://sourceware.org/git/glibc.git
synced 2025-08-05 19:35:52 +03:00
nptl: Destroy the default thread attribute as part of freeres
This avoids a spurious memory leak report by valgrind. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
This commit is contained in:
@@ -25,6 +25,7 @@
|
|||||||
void
|
void
|
||||||
__libpthread_freeres (void)
|
__libpthread_freeres (void)
|
||||||
{
|
{
|
||||||
|
call_function_static_weak (__default_pthread_attr_freeres);
|
||||||
call_function_static_weak (__nptl_stacks_freeres);
|
call_function_static_weak (__nptl_stacks_freeres);
|
||||||
call_function_static_weak (__shm_directory_freeres);
|
call_function_static_weak (__shm_directory_freeres);
|
||||||
call_function_static_weak (__nptl_unwind_freeres);
|
call_function_static_weak (__nptl_unwind_freeres);
|
||||||
|
@@ -201,6 +201,8 @@ enum
|
|||||||
/* Default pthread attributes. */
|
/* Default pthread attributes. */
|
||||||
extern union pthread_attr_transparent __default_pthread_attr attribute_hidden;
|
extern union pthread_attr_transparent __default_pthread_attr attribute_hidden;
|
||||||
extern int __default_pthread_attr_lock attribute_hidden;
|
extern int __default_pthread_attr_lock attribute_hidden;
|
||||||
|
/* Called from __libpthread_freeres to deallocate the default attribute. */
|
||||||
|
extern void __default_pthread_attr_freeres (void) attribute_hidden;
|
||||||
|
|
||||||
/* Size and alignment of static TLS block. */
|
/* Size and alignment of static TLS block. */
|
||||||
extern size_t __static_tls_size attribute_hidden;
|
extern size_t __static_tls_size attribute_hidden;
|
||||||
|
@@ -81,3 +81,13 @@ pthread_setattr_default_np (const pthread_attr_t *in)
|
|||||||
lll_unlock (__default_pthread_attr_lock, LLL_PRIVATE);
|
lll_unlock (__default_pthread_attr_lock, LLL_PRIVATE);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* This is placed in the same file as pthread_setattr_default_np
|
||||||
|
because only this function can trigger allocation of attribute
|
||||||
|
data. This way, the function is automatically defined for all the
|
||||||
|
cases when it is needed in static builds. */
|
||||||
|
void
|
||||||
|
__default_pthread_attr_freeres (void)
|
||||||
|
{
|
||||||
|
__pthread_attr_destroy (&__default_pthread_attr.external);
|
||||||
|
}
|
||||||
|
Reference in New Issue
Block a user