[PATCH 15/19] nptl: Destroy the default thread attribute as part of freeres
Florian Weimer
fweimer@redhat.com
Tue May 19 10:44:51 GMT 2020
This avoids a spurious memory leak report by valgrind.
---
nptl/nptlfreeres.c | 1 +
nptl/pthreadP.h | 2 ++
nptl/pthread_setattr_default_np.c | 10 ++++++++++
3 files changed, 13 insertions(+)
diff --git a/nptl/nptlfreeres.c b/nptl/nptlfreeres.c
index dda11e5922..07aa34adfa 100644
--- a/nptl/nptlfreeres.c
+++ b/nptl/nptlfreeres.c
@@ -25,6 +25,7 @@
void
__libpthread_freeres (void)
{
+ call_function_static_weak (__default_pthread_attr_freeres);
call_function_static_weak (__nptl_stacks_freeres);
call_function_static_weak (__shm_directory_freeres);
call_function_static_weak (__nptl_unwind_freeres);
diff --git a/nptl/pthreadP.h b/nptl/pthreadP.h
index acc8e88e4a..ed30b72923 100644
--- a/nptl/pthreadP.h
+++ b/nptl/pthreadP.h
@@ -201,6 +201,8 @@ enum
/* Default pthread attributes. */
extern union pthread_attr_transparent __default_pthread_attr 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. */
extern size_t __static_tls_size attribute_hidden;
diff --git a/nptl/pthread_setattr_default_np.c b/nptl/pthread_setattr_default_np.c
index c4cfb4e8ef..7a1c644334 100644
--- a/nptl/pthread_setattr_default_np.c
+++ b/nptl/pthread_setattr_default_np.c
@@ -81,3 +81,13 @@ pthread_setattr_default_np (const pthread_attr_t *in)
lll_unlock (__default_pthread_attr_lock, LLL_PRIVATE);
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);
+}
--
2.25.4
More information about the Libc-alpha
mailing list