Author: aurel32 Date: 2011-10-30 15:14:02 +0000 (Sun, 30 Oct 2011) New Revision: 5016
Added: glibc-package/branches/glibc-branch-squeeze/debian/patches/any/cvs-nptl-pthread-race.diff Modified: glibc-package/branches/glibc-branch-squeeze/debian/changelog glibc-package/branches/glibc-branch-squeeze/debian/patches/series Log: * patches/any/cvs-nptl-pthread-race.diff: fix a race in NPTL code that sometimes causes a deadlock when calling fork() from a thread. Modified: glibc-package/branches/glibc-branch-squeeze/debian/changelog =================================================================== --- glibc-package/branches/glibc-branch-squeeze/debian/changelog 2011-10-30 15:11:57 UTC (rev 5015) +++ glibc-package/branches/glibc-branch-squeeze/debian/changelog 2011-10-30 15:14:02 UTC (rev 5016) @@ -48,6 +48,8 @@ fix issues with dl_close() when resolving locally-defined symbols. Closes: #625250. * patches/i386/local-cpuid-level2.diff: fix a typo. Closes: #609389. + * patches/any/cvs-nptl-pthread-race.diff: fix a race in NPTL code that + sometimes causes a deadlock when calling fork() from a thread. -- Aurelien Jarno <aure...@debian.org> Sat, 11 Jun 2011 18:12:35 +0200 Added: glibc-package/branches/glibc-branch-squeeze/debian/patches/any/cvs-nptl-pthread-race.diff =================================================================== --- glibc-package/branches/glibc-branch-squeeze/debian/patches/any/cvs-nptl-pthread-race.diff (rev 0) +++ glibc-package/branches/glibc-branch-squeeze/debian/patches/any/cvs-nptl-pthread-race.diff 2011-10-30 15:14:02 UTC (rev 5016) @@ -0,0 +1,167 @@ +2011-09-15 Andreas Schwab <sch...@redhat.com> + + * sysdeps/pthread/list.h: Define only list_t if __need_list_t is + defined. + (list_add): Add atomic_write_barrier. + * descr.h: Define __need_list_t before including <list.h>. + * nptl-init.c: Include <list.h> + * allocatestack.c: Likewise. + +--- + nptl/allocatestack.c | 1 + + nptl/descr.h | 1 + + nptl/nptl-init.c | 1 + + nptl/sysdeps/pthread/list.h | 31 +++++++++++++++++++++++-------- + nptl_db/ChangeLog | 4 ++++ + nptl_db/thread_dbP.h | 3 ++- + 6 files changed, 32 insertions(+), 9 deletions(-) + +--- a/nptl/allocatestack.c ++++ b/nptl/allocatestack.c +@@ -27,6 +27,7 @@ + #include <sys/param.h> + #include <dl-sysdep.h> + #include <tls.h> ++#include <list.h> + #include <lowlevellock.h> + #include <kernel-features.h> + +--- a/nptl/descr.h ++++ b/nptl/descr.h +@@ -26,6 +26,7 @@ + #include <stdbool.h> + #include <sys/types.h> + #include <hp-timing.h> ++#define __need_list_t + #include <list.h> + #include <lowlevellock.h> + #include <pthreaddef.h> +--- a/nptl/nptl-init.c ++++ b/nptl/nptl-init.c +@@ -29,6 +29,7 @@ + #include <atomic.h> + #include <ldsodefs.h> + #include <tls.h> ++#include <list.h> + #include <fork.h> + #include <version.h> + #include <shlib-compat.h> +--- a/nptl/sysdeps/pthread/list.h ++++ b/nptl/sysdeps/pthread/list.h +@@ -1,4 +1,4 @@ +-/* Copyright (C) 2002, 2009 Free Software Foundation, Inc. ++/* Copyright (C) 2002, 2009, 2011 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper <drep...@redhat.com>, 2002. + +@@ -18,27 +18,39 @@ + 02111-1307 USA. */ + + #ifndef _LIST_H +-#define _LIST_H 1 ++ ++#ifndef __need_list_t ++# define _LIST_H 1 ++#endif + + /* The definitions of this file are adopted from those which can be + found in the Linux kernel headers to enable people familiar with + the latter find their way in these sources as well. */ + + ++#if defined __need_list_t || defined _LIST_H ++# ifndef __list_t_defined ++# define __list_t_defined + /* Basic type for the double-link list. */ + typedef struct list_head + { + struct list_head *next; + struct list_head *prev; + } list_t; ++# endif ++# undef __need_list_t ++#endif ++ ++#ifdef _LIST_H + ++# include <atomic.h> + + /* Define a variable with the head and tail of the list. */ +-#define LIST_HEAD(name) \ ++# define LIST_HEAD(name) \ + list_t name = { &(name), &(name) } + + /* Initialize a new list head. */ +-#define INIT_LIST_HEAD(ptr) \ ++# define INIT_LIST_HEAD(ptr) \ + (ptr)->next = (ptr)->prev = (ptr) + + +@@ -49,6 +61,7 @@ + newp->next = head->next; + newp->prev = head; + head->next->prev = newp; ++ atomic_write_barrier (); + head->next = newp; + } + +@@ -78,26 +91,28 @@ + + + /* Get typed element from list at a given position. */ +-#define list_entry(ptr, type, member) \ ++# define list_entry(ptr, type, member) \ + ((type *) ((char *) (ptr) - (unsigned long) (&((type *) 0)->member))) + + + + /* Iterate forward over the elements of the list. */ +-#define list_for_each(pos, head) \ ++# define list_for_each(pos, head) \ + for (pos = (head)->next; pos != (head); pos = pos->next) + + + /* Iterate forward over the elements of the list. */ +-#define list_for_each_prev(pos, head) \ ++# define list_for_each_prev(pos, head) \ + for (pos = (head)->prev; pos != (head); pos = pos->prev) + + + /* Iterate backwards over the elements list. The list elements can be + removed from the list while doing this. */ +-#define list_for_each_prev_safe(pos, p, head) \ ++# define list_for_each_prev_safe(pos, p, head) \ + for (pos = (head)->prev, p = pos->prev; \ + pos != (head); \ + pos = p, p = pos->prev) + ++#endif /* _LIST_H */ ++ + #endif /* list.h */ +--- a/nptl_db/ChangeLog ++++ b/nptl_db/ChangeLog +@@ -1,3 +1,7 @@ ++2011-09-15 Andreas Schwab <sch...@redhat.com> ++ ++ * thread_dbP.h: Include <list.h> ++ + 2009-08-23 Roland McGrath <rol...@redhat.com> + + * td_ta_map_lwp2thr.c (__td_ta_lookup_th_unique): Move ta_ok check +--- a/nptl_db/thread_dbP.h ++++ b/nptl_db/thread_dbP.h +@@ -1,5 +1,5 @@ + /* Private header for thread debug library +- Copyright (C) 2003, 2004, 2007 Free Software Foundation, Inc. ++ Copyright (C) 2003, 2004, 2007, 2011 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or +@@ -29,6 +29,7 @@ + #include "proc_service.h" + #include "thread_db.h" + #include "../nptl/pthreadP.h" /* This is for *_BITMASK only. */ ++#include <list.h> + + /* Indeces for the symbol names. */ + enum Modified: glibc-package/branches/glibc-branch-squeeze/debian/patches/series =================================================================== --- glibc-package/branches/glibc-branch-squeeze/debian/patches/series 2011-10-30 15:11:57 UTC (rev 5015) +++ glibc-package/branches/glibc-branch-squeeze/debian/patches/series 2011-10-30 15:14:02 UTC (rev 5016) @@ -265,3 +265,4 @@ any/cvs-getaddrinfo-single-lookup.diff any/cvs-pthread-setgroups.diff any/cvs-dl_close-scope-handling.diff +any/cvs-nptl-pthread-race.diff -- To UNSUBSCRIBE, email to debian-glibc-requ...@lists.debian.org with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org Archive: http://lists.debian.org/e1rkx5h-0003qe...@vasks.debian.org