diff --git a/glibc-2.10-mcheck-free-race.diff b/glibc-2.10-mcheck-free-race.diff index 3da1397..f5087ea 100644 --- a/glibc-2.10-mcheck-free-race.diff +++ b/glibc-2.10-mcheck-free-race.diff @@ -1,6 +1,13 @@ ---- malloc/hooks.c~ 2009-06-08 17:55:07.982329000 +0200 -+++ malloc/hooks.c 2009-06-08 17:56:41.178045000 +0200 -@@ -276,15 +276,18 @@ +2009-06-15 Petr Baudis + + * malloc/hooks.c (free_check): Do not invoke mem2chunk_check() + without main_arena mutex held. + +diff --git a/malloc/hooks.c b/malloc/hooks.c +index 622a815..47d3c85 100644 +--- malloc/hooks.c ++++ malloc/hooks.c +@@ -276,25 +276,33 @@ free_check(mem, caller) Void_t* mem; const Void_t *caller; mchunkptr p; if(!mem) return; @@ -9,29 +16,34 @@ +#endif p = mem2chunk_check(mem, NULL); if(!p) { ++#ifndef ATOMIC_FASTBINS ++ (void)mutex_unlock(&main_arena.mutex); ++#endif malloc_printerr(check_action, "free(): invalid pointer", mem); -- return; -+ goto out; + return; } #if HAVE_MMAP if (chunk_is_mmapped(p)) { munmap_chunk(p); - return; -+ goto out; - } +- } ++ } else #endif ++ { #if 0 /* Erase freed memory. */ -@@ -293,8 +296,12 @@ +- memset(mem, 0, chunksize(p) - (SIZE_SZ+1)); ++ memset(mem, 0, chunksize(p) - (SIZE_SZ+1)); + #endif #ifdef ATOMIC_FASTBINS - _int_free(&main_arena, p, 0); +- _int_free(&main_arena, p, 0); ++ _int_free(&main_arena, p, 0); #else - (void)mutex_lock(&main_arena.mutex); - _int_free(&main_arena, p); +- _int_free(&main_arena, p); ++ _int_free(&main_arena, p); +#endif -+out: -+#ifdef ATOMIC_FASTBINS -+ ; -+#else ++ } ++#ifndef ATOMIC_FASTBINS (void)mutex_unlock(&main_arena.mutex); #endif } diff --git a/glibc-2.10.1-9cf557216c.tar.bz2 b/glibc-2.10.1-9cf557216c.tar.bz2 deleted file mode 100644 index 76621dc..0000000 --- a/glibc-2.10.1-9cf557216c.tar.bz2 +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:1f5498c9c2ccb5438487af0541cfe1978c77fa47e2078b793be35149cc8320e7 -size 15590281 diff --git a/glibc-2.10.1-d0f6ed789f.tar.bz2 b/glibc-2.10.1-d0f6ed789f.tar.bz2 new file mode 100644 index 0000000..d0d594c --- /dev/null +++ b/glibc-2.10.1-d0f6ed789f.tar.bz2 @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:f81ecd9bd7b19d230a01b53b34945f5ffd53f8a31af7b68cf056acd396652646 +size 15589254 diff --git a/glibc.changes b/glibc.changes index 8603162..cd756b5 100644 --- a/glibc.changes +++ b/glibc.changes @@ -1,3 +1,10 @@ +------------------------------------------------------------------- +Thu Jun 18 00:58:47 CEST 2009 - pbaudis@suse.cz + +- Fix a dead-lock introduced by the bnc#509398 fix +- Update to glibc-2.10.1-d0f6ed789f of glibc/pb-stable.git glibc-2.10-branch + (Still the same source is used for glibc-ports.) - random minor fixes + ------------------------------------------------------------------- Fri Jun 12 12:19:34 CEST 2009 - pbaudis@suse.cz diff --git a/glibc.spec b/glibc.spec index d40f300..3f6d244 100644 --- a/glibc.spec +++ b/glibc.spec @@ -54,7 +54,7 @@ BuildRequires: libselinux-devel %define powerpc_optimize_cpu_cell 0 # optimize_power %endif -License: BSD 3-Clause; GPL v2 or later; LGPL v2.1 or later +License: BSD 3-clause (or similar) ; GPL v2 or later ; LGPL v2.1 or later Summary: Standard Shared Libraries (from the GNU C Library) Group: System/Libraries Obsoletes: ngpt <= 2.2.2 ngpt-devel <= 2.2.2 @@ -69,13 +69,13 @@ Obsoletes: glibc-32bit Provides: rtld(GNU_HASH) AutoReqProv: on Version: 2.10.1 -Release: 3 +Release: 4 Url: http://www.gnu.org/software/libc/libc.html PreReq: filesystem BuildRoot: %{_tmppath}/%{name}-%{version}-build # The glibc source comes from http://repo.or.cz/w/glibc/pb-stable.git # glibc-2.10-branch. -Source: glibc-%{version}-9cf557216c.tar.bz2 +Source: glibc-%{version}-d0f6ed789f.tar.bz2 Source2: glibc-ports-%{version}-2b2b217196.tar.bz2 Source3: noversion.tar.bz2 Source4: manpages.tar.bz2 @@ -165,7 +165,7 @@ complete and is partially out of date. %package html -License: GPL v2 or later; LGPL v2.1 or later +License: GPL v2 or later ; LGPL v2.1 or later Summary: HTML Documentation for the GNU C Library Group: Documentation/HTML AutoReqProv: on @@ -192,7 +192,7 @@ created. %package locale -License: GPL v2 or later; LGPL v2.1 or later +License: GPL v2 or later ; LGPL v2.1 or later Summary: Locale Data for Localized Programs Group: System/Libraries Requires: glibc = %{version} @@ -244,7 +244,7 @@ necessary for profiling and debugging. %package devel -License: BSD 3-Clause; GPL v2 or later; LGPL v2.1 or later +License: BSD 3-clause (or similar) ; GPL v2 or later ; LGPL v2.1 or later Summary: Include Files and Libraries Mandatory for Development Group: Development/Libraries/C and C++ Obsoletes: epoll = 1.0 @@ -267,7 +267,7 @@ library. %package obsolete -License: BSD 3-Clause; GPL v2 or later; LGPL v2.1 or later +License: BSD 3-clause (or similar) ; GPL v2 or later ; LGPL v2.1 or later Summary: Obsolete Shared Libraries from the GNU C Library Group: System/Libraries Requires: glibc = %{version} @@ -1058,6 +1058,10 @@ exit 0 %{_libdir}/libdl_p.a %changelog +* Thu Jun 18 2009 pbaudis@suse.cz +- Fix a dead-lock introduced by the bnc#509398 fix +- Update to glibc-2.10.1-d0f6ed789f of glibc/pb-stable.git glibc-2.10-branch + (Still the same source is used for glibc-ports.) - random minor fixes * Fri Jun 12 2009 pbaudis@suse.cz - Update to glibc-2.10.1-9cf557216c of glibc/pb-stable.git glibc-2.10-branch (Still the same source is used for glibc-ports.)