]> git.pld-linux.org Git - packages/glibc.git/commitdiff
- rel 4; prevent TLS slots exhaution (patch from FC) auto/th/glibc-2.20-4
authorArkadiusz Miśkiewicz <arekm@maven.pl>
Mon, 24 Nov 2014 17:02:21 +0000 (18:02 +0100)
committerArkadiusz Miśkiewicz <arekm@maven.pl>
Mon, 24 Nov 2014 17:02:21 +0000 (18:02 +0100)
glibc-rh1124987.patch [new file with mode: 0644]
glibc.spec

diff --git a/glibc-rh1124987.patch b/glibc-rh1124987.patch
new file mode 100644 (file)
index 0000000..0b0c3ab
--- /dev/null
@@ -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;
index 24ffa58da48557b05f823a8d892c97a43b3d11b2..0f79977afdd939926a399b4b98dcc5d49858cd11 100644 (file)
@@ -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
 
This page took 0.322514 seconds and 4 git commands to generate.