[packages/glibc] - rel 4; prevent TLS slots exhaution (patch from FC)

arekm arekm at pld-linux.org
Mon Nov 24 18:02:27 CET 2014


commit e35398607b43d978141c3a3b73f121633109b3f9
Author: Arkadiusz Miśkiewicz <arekm at maven.pl>
Date:   Mon Nov 24 18:02:21 2014 +0100

    - rel 4; prevent TLS slots exhaution (patch from FC)

 glibc-rh1124987.patch | 32 ++++++++++++++++++++++++++++++++
 glibc.spec            |  6 +++---
 2 files changed, 35 insertions(+), 3 deletions(-)
---
diff --git a/glibc.spec b/glibc.spec
index 24ffa58..0f79977 100644
--- a/glibc.spec
+++ b/glibc.spec
@@ -35,7 +35,7 @@ Summary(tr.UTF-8):	GNU libc
 Summary(uk.UTF-8):	GNU libc версії
 Name:		glibc
 Version:	%{core_version}
-Release:	3
+Release:	4
 Epoch:		6
 License:	LGPL v2.1+
 Group:		Libraries
@@ -84,7 +84,7 @@ Patch27:	%{name}-locale-C.patch.xz
 # Patch27-md5:	34ebe52a2afb923e33af0fb7c541f540
 Patch28:	%{name}-locale-C-pld.patch
 Patch29:	%{name}-arm-alignment-fix.patch
-
+Patch30:	glibc-rh1124987.patch
 Patch31:	%{name}-origin.patch
 Patch32:	%{name}-Os-fail-workaround.patch
 
@@ -973,7 +973,7 @@ exit 1
 %patch27 -p1
 %patch28 -p1
 %patch29 -p1
-
+%patch30 -p1
 %patch31 -p1
 %patch32 -p1
 
diff --git a/glibc-rh1124987.patch b/glibc-rh1124987.patch
new file mode 100644
index 0000000..0b0c3ab
--- /dev/null
+++ b/glibc-rh1124987.patch
@@ -0,0 +1,32 @@
+#
+# This is an experimental patch that should go into rawhide and
+# Fedora 21 to fix failures where python applications fail to 
+# load graphics applications because of the slot usages for TLS.
+# This should eventually go upstream.
+#
+# - Carlos O'Donell
+#
+diff -urN glibc-2.19-886-gdd763fd/sysdeps/generic/ldsodefs.h glibc-2.19-886-gdd763fd.mod/sysdeps/generic/ldsodefs.h
+--- glibc-2.19-886-gdd763fd/sysdeps/generic/ldsodefs.h	2014-08-21 01:00:55.000000000 -0400
++++ glibc-2.19-886-gdd763fd.mod/sysdeps/generic/ldsodefs.h	2014-09-04 19:29:42.929692810 -0400
+@@ -388,8 +388,18 @@
+    have to iterate beyond the first element in the slotinfo list.  */
+ #define TLS_SLOTINFO_SURPLUS (62)
+ 
+-/* Number of additional slots in the dtv allocated.  */
+-#define DTV_SURPLUS	(14)
++/* Number of additional allocated dtv slots.  This was initially
++   14, but problems with python, MESA, and X11's uses of static TLS meant
++   that most distributions were very close to this limit when they loaded
++   dynamically interpreted languages that used graphics. The simplest
++   solution was to roughly double the number of slots. The actual static
++   image space usage was relatively small, for example in MESA you
++   had only two dispatch pointers for a total of 16 bytes.  If we hit up
++   against this limit again we should start a campaign with the
++   distributions to coordinate the usage of static TLS.  Any user of this
++   resource is effectively coordinating a global resource since this
++   surplus is allocated for each thread at startup.  */
++#define DTV_SURPLUS	(32)
+ 
+   /* Initial dtv of the main thread, not allocated with normal malloc.  */
+   EXTERN void *_dl_initial_dtv;
================================================================

---- gitweb:

http://git.pld-linux.org/gitweb.cgi/packages/glibc.git/commitdiff/e35398607b43d978141c3a3b73f121633109b3f9



More information about the pld-cvs-commit mailing list