]> sourceware.org Git - glibc.git/commitdiff
manual, NEWS: Document malloc side effect of dynamic TLS changes
authorFlorian Weimer <fweimer@redhat.com>
Wed, 24 Jan 2024 08:34:15 +0000 (09:34 +0100)
committerFlorian Weimer <fweimer@redhat.com>
Wed, 24 Jan 2024 08:34:15 +0000 (09:34 +0100)
The increased malloc subsystem usage is a side effect of
commit d2123d68275acc0f061e73d5f86ca504e0d5a344 ("elf: Fix slow tls
access after dlopen [BZ #19924]").

Reviewed-by: Szabolcs Nagy <szabolcs.nagy@arm.com>
NEWS
manual/memory.texi

diff --git a/NEWS b/NEWS
index 4a11e9df0fc0ce51cdb87b6205be6e23582e2821..199f079f2764ccd2a1973fdd927bc291fdd1d0a9 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -91,6 +91,12 @@ Deprecated and removed features, and other changes affecting compatibility:
   of GNU libc are advised to check whether their build processes can be
   simplified.
 
+* The dynamic linker calls the malloc and free functions in more cases
+  during TLS access if a shared object with dynamic TLS is loaded and
+  unloaded.  This can result in an infinite recursion if a malloc
+  replacement library or its dependencies use dynamic TLS instead of
+  initial-exec TLS.
+
 * The ia64*-*-linux-gnu configurations are no longer supported.
 
 Changes to build and runtime requirements:
index 258fdbd3a01d518f4be2a6e3f058c4ab436a27ac..fb875f4c3cfcc62580417170bc3b98768484661f 100644 (file)
@@ -1815,6 +1815,14 @@ using shared object dependencies or @code{LD_PRELOAD}.  For static
 linking, the @code{malloc} replacement library must be linked in before
 linking against @code{libc.a} (explicitly or implicitly).
 
+Care must be taken not to use functionality from @theglibc{} that uses
+@code{malloc} internally.  For example, the @code{fopen},
+@code{opendir}, @code{dlopen}, and @code{pthread_setspecific} functions
+currently use the @code{malloc} subsystem internally.  If the
+replacement @code{malloc} or its dependencies use thread-local storage
+(TLS), it must use the initial-exec TLS model, and not one of the
+dynamic TLS variants.
+
 @strong{Note:} Failure to provide a complete set of replacement
 functions (that is, all the functions used by the application,
 @theglibc{}, and other linked-in libraries) can lead to static linking
This page took 0.055706 seconds and 5 git commands to generate.