[arch-commits] Commit in glibc/trunk (6 files)

Allan McRae allan at archlinux.org
Thu Sep 8 20:57:06 UTC 2011


    Date: Thursday, September 8, 2011 @ 16:57:06
  Author: allan
Revision: 137531

upgpkg: glibc 2.14-6

new upstream snapshot from 2.14 branch, fix dlcose issue (e.g. FS#25459), better fix for DNS assertion issues (FS#24615)

Added:
  glibc/trunk/glibc-2.13-dlclose-search-reset.patch
  glibc/trunk/glibc-2.14-avoid-assertion-on-empty-dns-answer.patch
  glibc/trunk/glibc-2.14-revert-4769ae77.patch
    (from rev 136750, glibc/trunk/glibc-2.14-revert-4462fad3.patch)
Modified:
  glibc/trunk/PKGBUILD
Deleted:
  glibc/trunk/glibc-2.14-fix-resolver-crash-typo.patch
  glibc/trunk/glibc-2.14-revert-4462fad3.patch

------------------------------------------------------+
 PKGBUILD                                             |   25 +-
 glibc-2.13-dlclose-search-reset.patch                |  196 +++++++++++++++++
 glibc-2.14-avoid-assertion-on-empty-dns-answer.patch |   26 ++
 glibc-2.14-fix-resolver-crash-typo.patch             |   22 -
 glibc-2.14-revert-4462fad3.patch                     |   37 ---
 glibc-2.14-revert-4769ae77.patch                     |   37 +++
 6 files changed, 273 insertions(+), 70 deletions(-)

Modified: PKGBUILD
===================================================================
--- PKGBUILD	2011-09-08 19:55:05 UTC (rev 137530)
+++ PKGBUILD	2011-09-08 20:57:06 UTC (rev 137531)
@@ -6,8 +6,8 @@
 
 pkgname=glibc
 pkgver=2.14
-pkgrel=5
-_glibcdate=20110617
+pkgrel=6
+_glibcdate=20110908
 pkgdesc="GNU C Library"
 arch=('i686' 'x86_64')
 url="http://www.gnu.org/software/libc"
@@ -27,23 +27,24 @@
         glibc-2.12.1-static-shared-getpagesize.patch
         glibc-2.12.2-ignore-origin-of-privileged-program.patch
         glibc-2.13-futex.patch
+        glibc-2.13-dlclose-search-reset.patch
         glibc-2.14-libdl-crash.patch
-        #glibc-2.14-fix-resolver-crash-typo.patch
-        glibc-2.14-revert-4462fad3.patch
+        glibc-2.14-avoid-assertion-on-empty-dns-answer.patch
         glibc-2.14-reexport-rpc-interface.patch
         glibc-2.14-reinstall-nis-rpc-headers.patch
         nscd
         locale.gen.txt
         locale-gen)
-md5sums=('e441d745609d93c907b72548ba646dad'
+md5sums=('069069eb9100cc7affd7ad884cb3c3e9'
          '4dadb9203b69a3210d53514bb46f41c3'
          '0c5540efc51c0b93996c51b57a8540ae'
          '40cd342e21f71f5e49e32622b25acc52'
          'a3ac6f318d680347bb6e2805d42b73b2'
          'b042647ea7d6f22ad319e12e796bd13e'
          '7d0154b7e17ea218c9fa953599d24cc4'
+         '22d09c58718fb3d1d31c3a6c14ca6886'
          'cea62cc6b903d222c5f26e05a3c0e0e6'
-         '46e56492cccb1c9172ed3a235cf43c6c'
+         '13728807283f111e5d9d38cf38e0a461'
          'c5de2a946215d647c8af5432ec4b0da0'
          '55febbb72139ac7b65757df085024b83'
          'b587ee3a70c9b3713099295609afde49'
@@ -83,15 +84,17 @@
   # http://sourceware.org/bugzilla/show_bug.cgi?id=12403
   patch -Np1 -i ${srcdir}/glibc-2.13-futex.patch
 
+  # https://bugzilla.redhat.com/show_bug.cgi?id=593675
+  # http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=2f811bf8 (only fedora branch...)
+  patch -Np1 -i ${srcdir}/glibc-2.13-dlclose-search-reset.patch
+
   # http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=675155e9 (only fedora branch...)
   # http://sourceware.org/ml/libc-alpha/2011-06/msg00006.html
   patch -Np1 -i ${srcdir}/glibc-2.14-libdl-crash.patch
 
-  # This fixes the main segfault but not the assert fail (FS#24615)
-  # http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=57912a71 
-  #patch -Np1 -i ${srcdir}/glibc-2.14-fix-resolver-crash-typo.patch
-  # resort to reverting the bad commit completely for the moment
-  patch -Np1 -i ${srcdir}/glibc-2.14-revert-4462fad3.patch
+  # http://sourceware.org/bugzilla/show_bug.cgi?id=13013
+  # http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=032c0ee3 (only fedora branch...)
+  patch -Np1 -i ${srcdir}/glibc-2.14-avoid-assertion-on-empty-dns-answer.patch
 
   # re-export RPC interface until libtirpc is ready as a replacement
   # http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=acee4873 (only fedora branch...)

Added: glibc-2.13-dlclose-search-reset.patch
===================================================================
--- glibc-2.13-dlclose-search-reset.patch	                        (rev 0)
+++ glibc-2.13-dlclose-search-reset.patch	2011-09-08 20:57:06 UTC (rev 137531)
@@ -0,0 +1,196 @@
+From 2f811bf88bed4a6c0dec8778847ba441736d509d Mon Sep 17 00:00:00 2001
+From: Andreas Schwab <schwab at redhat.com>
+Date: Wed, 26 May 2010 18:28:59 +0200
+Subject: [PATCH] Fix scope handling during dl_close
+
+---
+ ChangeLog          |   12 ++++++++++++
+ elf/Makefile       |   10 +++++++++-
+ elf/dl-close.c     |    7 +++++++
+ elf/unload8.c      |   33 +++++++++++++++++++++++++++++++++
+ elf/unload8mod1.c  |    7 +++++++
+ elf/unload8mod1x.c |    1 +
+ elf/unload8mod2.c  |    7 +++++++
+ elf/unload8mod3.c  |   27 +++++++++++++++++++++++++++
+ 8 files changed, 103 insertions(+), 1 deletions(-)
+ create mode 100644 elf/unload8.c
+ create mode 100644 elf/unload8mod1.c
+ create mode 100644 elf/unload8mod1x.c
+ create mode 100644 elf/unload8mod2.c
+ create mode 100644 elf/unload8mod3.c
+
+diff --git a/elf/Makefile b/elf/Makefile
+index 59e835f..65b6deb 100644
+--- a/elf/Makefile
++++ b/elf/Makefile
+@@ -89,6 +89,7 @@ distribute	:= rtld-Rules \
+ 		   unload4mod1.c unload4mod2.c unload4mod3.c unload4mod4.c \
+ 		   unload6mod1.c unload6mod2.c unload6mod3.c \
+ 		   unload7mod1.c unload7mod2.c \
++		   unload8mod1.c unload8mod1x.c unload8mod2.c unload8mod3.c \
+ 		   tst-audit1.c tst-audit2.c tst-audit3.c tst-audit4.c \
+ 		   tst-auditmod1.c tst-auditmod3a.c tst-auditmod3b.c \
+ 		   tst-auditmod4a.c tst-auditmod4b.c \
+@@ -196,7 +197,7 @@ tests += loadtest restest1 preloadtest loadfail multiload origtest resolvfail \
+ 	 tst-align tst-align2 $(tests-execstack-$(have-z-execstack)) \
+ 	 tst-dlmodcount tst-dlopenrpath tst-deep1 \
+ 	 tst-dlmopen1 tst-dlmopen2 tst-dlmopen3 \
+-	 unload3 unload4 unload5 unload6 unload7 tst-global1 order2 \
++	 unload3 unload4 unload5 unload6 unload7 unload8 tst-global1 order2 \
+ 	 tst-audit1 tst-audit2 \
+ 	 tst-stackguard1 tst-addr1 tst-thrlock \
+ 	 tst-unique1 tst-unique2
+@@ -247,6 +248,7 @@ modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \
+ 		unload4mod1 unload4mod2 unload4mod3 unload4mod4 \
+ 		unload6mod1 unload6mod2 unload6mod3 \
+ 		unload7mod1 unload7mod2 \
++		unload8mod1 unload8mod1x unload8mod2 unload8mod3 \
+ 		order2mod1 order2mod2 order2mod3 order2mod4 \
+ 		tst-unique1mod1 tst-unique1mod2 \
+ 		tst-unique2mod1 tst-unique2mod2
+@@ -522,6 +524,9 @@ $(objpfx)unload6mod2.so: $(libdl)
+ $(objpfx)unload6mod3.so: $(libdl)
+ $(objpfx)unload7mod1.so: $(libdl)
+ $(objpfx)unload7mod2.so: $(objpfx)unload7mod1.so
++$(objpfx)unload8mod1.so: $(objpfx)unload8mod2.so
++$(objpfx)unload8mod2.so: $(objpfx)unload8mod3.so
++$(objpfx)unload8mod3.so: $(libdl)
+ $(objpfx)tst-initordera2.so: $(objpfx)tst-initordera1.so
+ $(objpfx)tst-initorderb2.so: $(objpfx)tst-initorderb1.so $(objpfx)tst-initordera2.so
+ $(objpfx)tst-initordera3.so: $(objpfx)tst-initorderb2.so $(objpfx)tst-initorderb1.so
+@@ -823,6 +828,9 @@ $(objpfx)unload7: $(libdl)
+ $(objpfx)unload7.out: $(objpfx)unload7mod1.so $(objpfx)unload7mod2.so
+ unload7-ENV = MALLOC_PERTURB_=85
+ 
++$(objpfx)unload8: $(libdl)
++$(objpfx)unload8.out: $(objpfx)unload8mod1.so $(objpfx)unload8mod1x.so
++
+ ifdef libdl
+ $(objpfx)tst-tls9-static: $(common-objpfx)dlfcn/libdl.a
+ $(objpfx)tst-tls9-static.out: $(objpfx)tst-tlsmod5.so $(objpfx)tst-tlsmod6.so
+diff --git a/elf/dl-close.c b/elf/dl-close.c
+index 700e765..f47d5f8 100644
+--- a/elf/dl-close.c
++++ b/elf/dl-close.c
+@@ -421,6 +421,13 @@ _dl_close_worker (struct link_map *map)
+ 
+ 	      imap->l_scope_max = new_size;
+ 	    }
++	  else if (new_list != NULL)
++	    {
++	      /* We didn't change the scope array, so reset the search
++		 list.  */
++	      imap->l_searchlist.r_list = NULL;
++	      imap->l_searchlist.r_nlist = 0;
++	    }
+ 
+ 	  /* The loader is gone, so mark the object as not having one.
+ 	     Note: l_idx != IDX_STILL_USED -> object will be removed.  */
+diff --git a/elf/unload8.c b/elf/unload8.c
+new file mode 100644
+index 0000000..f984a38
+--- /dev/null
++++ b/elf/unload8.c
+@@ -0,0 +1,33 @@
++#include <dlfcn.h>
++#include <stdio.h>
++
++int
++main (void)
++{
++  void *h = dlopen ("$ORIGIN/unload8mod1.so", RTLD_LAZY);
++  if (h == NULL)
++    {
++      puts ("dlopen unload8mod1.so failed");
++      return 1;
++    }
++
++  void *h2 = dlopen ("$ORIGIN/unload8mod1x.so", RTLD_LAZY);
++  if (h2 == NULL)
++    {
++      puts ("dlopen unload8mod1x.so failed");
++      return 1;
++    }
++  dlclose (h2);
++
++  int (*mod1) (void) = dlsym (h, "mod1");
++  if (mod1 == NULL)
++    {
++      puts ("dlsym failed");
++      return 1;
++    }
++
++  mod1 ();
++  dlclose (h);
++
++  return 0;
++}
+diff --git a/elf/unload8mod1.c b/elf/unload8mod1.c
+new file mode 100644
+index 0000000..fe7e81c
+--- /dev/null
++++ b/elf/unload8mod1.c
+@@ -0,0 +1,7 @@
++extern void mod2 (void);
++
++void
++mod1 (void)
++{
++  mod2 ();
++}
+diff --git a/elf/unload8mod1x.c b/elf/unload8mod1x.c
+new file mode 100644
+index 0000000..835b634
+--- /dev/null
++++ b/elf/unload8mod1x.c
+@@ -0,0 +1 @@
++int mod1x;
+diff --git a/elf/unload8mod2.c b/elf/unload8mod2.c
+new file mode 100644
+index 0000000..2fd8b67
+--- /dev/null
++++ b/elf/unload8mod2.c
+@@ -0,0 +1,7 @@
++extern void mod3 (void);
++
++void
++mod2 (void)
++{
++  mod3 ();
++}
+diff --git a/elf/unload8mod3.c b/elf/unload8mod3.c
+new file mode 100644
+index 0000000..d49e22b
+--- /dev/null
++++ b/elf/unload8mod3.c
+@@ -0,0 +1,27 @@
++#include <dlfcn.h>
++#include <stdio.h>
++#include <stdlib.h>
++
++void
++mod3_fini2 (void)
++{
++}
++
++void
++mod3_fini (void)
++{
++  mod3_fini2 ();
++}
++
++void
++mod3 (void)
++{
++  void *h = dlopen ("$ORIGIN/unload8mod2.so", RTLD_LAZY);
++  if (h == NULL)
++    {
++      puts ("dlopen unload8mod2.so failed");
++      exit (1);
++    }
++
++  atexit (mod3_fini);
++}
+-- 
+1.7.3.4
+

Added: glibc-2.14-avoid-assertion-on-empty-dns-answer.patch
===================================================================
--- glibc-2.14-avoid-assertion-on-empty-dns-answer.patch	                        (rev 0)
+++ glibc-2.14-avoid-assertion-on-empty-dns-answer.patch	2011-09-08 20:57:06 UTC (rev 137531)
@@ -0,0 +1,26 @@
+From 032c0ee3ee28841d684950e33a77210118697566 Mon Sep 17 00:00:00 2001
+From: Andreas Schwab <schwab at redhat.com>
+Date: Thu, 1 Sep 2011 10:46:14 +0200
+Subject: [PATCH] Avoid assertion failure when first DNS answer was empty
+
+---
+ ChangeLog          |    4 ++++
+ resolv/res_query.c |    2 +-
+ 2 files changed, 5 insertions(+), 1 deletions(-)
+
+diff --git a/resolv/res_query.c b/resolv/res_query.c
+index 2f7cfaa..2ded9fb 100644
+--- a/resolv/res_query.c
++++ b/resolv/res_query.c
+@@ -248,7 +248,7 @@ __libc_res_nquery(res_state statp,
+ 	    && *resplen2 > (int) sizeof (HEADER))
+ 	  {
+ 	    /* Special case of partial answer.  */
+-	    assert (hp != hp2);
++	    assert (n == 0 || hp != hp2);
+ 	    hp = hp2;
+ 	  }
+ 	else if (answerp2 != NULL && *resplen2 < (int) sizeof (HEADER)
+-- 
+1.7.3.4
+

Deleted: glibc-2.14-fix-resolver-crash-typo.patch
===================================================================
--- glibc-2.14-fix-resolver-crash-typo.patch	2011-09-08 19:55:05 UTC (rev 137530)
+++ glibc-2.14-fix-resolver-crash-typo.patch	2011-09-08 20:57:06 UTC (rev 137531)
@@ -1,22 +0,0 @@
-diff --git a/resolv/res_send.c b/resolv/res_send.c
-index 97142b7..a001c1e 100644
---- a/resolv/res_send.c
-+++ b/resolv/res_send.c
-@@ -549,7 +549,7 @@ __libc_res_nsend(res_state statp, const u_char *buf, int buflen,
- 				    ns, ansp, ansp2, nansp2, resplen2);
- 			if (n < 0)
- 				return (-1);
--			if (n == 0 && (buf2 == NULL || resplen2 == 0))
-+			if (n == 0 && (buf2 == NULL || *resplen2 == 0))
- 				goto next_ns;
- 		} else {
- 			/* Use datagrams. */
-@@ -559,7 +559,7 @@ __libc_res_nsend(res_state statp, const u_char *buf, int buflen,
- 				    ansp2, nansp2, resplen2);
- 			if (n < 0)
- 				return (-1);
--			if (n == 0 && (buf2 == NULL || resplen2 == 0))
-+			if (n == 0 && (buf2 == NULL || *resplen2 == 0))
- 				goto next_ns;
- 			if (v_circuit)
- 			  // XXX Check whether both requests failed or

Deleted: glibc-2.14-revert-4462fad3.patch
===================================================================
--- glibc-2.14-revert-4462fad3.patch	2011-09-08 19:55:05 UTC (rev 137530)
+++ glibc-2.14-revert-4462fad3.patch	2011-09-08 20:57:06 UTC (rev 137531)
@@ -1,37 +0,0 @@
-diff -Naur glibc-orig//resolv/res_send.c glibc/resolv/res_send.c
---- glibc-orig//resolv/res_send.c	2011-06-10 18:59:03.041436996 +1000
-+++ glibc/resolv/res_send.c	2011-06-10 19:08:09.379309323 +1000
-@@ -549,7 +549,7 @@
- 				    ns, ansp, ansp2, nansp2, resplen2);
- 			if (n < 0)
- 				return (-1);
--			if (n == 0 && (buf2 == NULL || resplen2 == 0))
-+			if (n == 0)
- 				goto next_ns;
- 		} else {
- 			/* Use datagrams. */
-@@ -559,7 +559,7 @@
- 				    ansp2, nansp2, resplen2);
- 			if (n < 0)
- 				return (-1);
--			if (n == 0 && (buf2 == NULL || resplen2 == 0))
-+			if (n == 0)
- 				goto next_ns;
- 			if (v_circuit)
- 			  // XXX Check whether both requests failed or
-@@ -1275,14 +1275,10 @@
- 				(*thisresplenp > *thisanssizp)
- 				? *thisanssizp : *thisresplenp);
- 
--			if (recvresp1 || (buf2 != NULL && recvresp2)) {
--			  *resplen2 = 0;
-+			if (recvresp1 || (buf2 != NULL && recvresp2))
- 			  return resplen;
--			}
- 			if (buf2 != NULL)
- 			  {
--			    /* No data from the first reply.  */
--			    resplen = 0;
- 			    /* We are waiting for a possible second reply.  */
- 			    if (hp->id == anhp->id)
- 			      recvresp1 = 1;

Copied: glibc/trunk/glibc-2.14-revert-4769ae77.patch (from rev 136750, glibc/trunk/glibc-2.14-revert-4462fad3.patch)
===================================================================
--- glibc-2.14-revert-4769ae77.patch	                        (rev 0)
+++ glibc-2.14-revert-4769ae77.patch	2011-09-08 20:57:06 UTC (rev 137531)
@@ -0,0 +1,37 @@
+diff -Naur glibc-orig//resolv/res_send.c glibc/resolv/res_send.c
+--- glibc-orig//resolv/res_send.c	2011-06-10 18:59:03.041436996 +1000
++++ glibc/resolv/res_send.c	2011-06-10 19:08:09.379309323 +1000
+@@ -549,7 +549,7 @@
+ 				    ns, ansp, ansp2, nansp2, resplen2);
+ 			if (n < 0)
+ 				return (-1);
+-			if (n == 0 && (buf2 == NULL || *resplen2 == 0))
++			if (n == 0)
+ 				goto next_ns;
+ 		} else {
+ 			/* Use datagrams. */
+@@ -559,7 +559,7 @@
+ 				    ansp2, nansp2, resplen2);
+ 			if (n < 0)
+ 				return (-1);
+-			if (n == 0 && (buf2 == NULL || *resplen2 == 0))
++			if (n == 0)
+ 				goto next_ns;
+ 			if (v_circuit)
+ 			  // XXX Check whether both requests failed or
+@@ -1275,14 +1275,10 @@
+ 				(*thisresplenp > *thisanssizp)
+ 				? *thisanssizp : *thisresplenp);
+ 
+-			if (recvresp1 || (buf2 != NULL && recvresp2)) {
+-			  *resplen2 = 0;
++			if (recvresp1 || (buf2 != NULL && recvresp2))
+ 			  return resplen;
+-			}
+ 			if (buf2 != NULL)
+ 			  {
+-			    /* No data from the first reply.  */
+-			    resplen = 0;
+ 			    /* We are waiting for a possible second reply.  */
+ 			    if (hp->id == anhp->id)
+ 			      recvresp1 = 1;




More information about the arch-commits mailing list