r5015 - in glibc-package/trunk/debian: . patches patches/any
Author: aurel32
Date: 2011-10-30 15:11:57 +0000 (Sun, 30 Oct 2011)
New Revision: 5015
Added:
glibc-package/trunk/debian/patches/any/cvs-nptl-pthread-race.diff
Modified:
glibc-package/trunk/debian/changelog
glibc-package/trunk/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/trunk/debian/changelog
===================================================================
--- glibc-package/trunk/debian/changelog 2011-10-28 23:51:54 UTC (rev 5014)
+++ glibc-package/trunk/debian/changelog 2011-10-30 15:11:57 UTC (rev 5015)
@@ -4,6 +4,8 @@
* patches/i386/local-cpuid-level2.diff: fix a typo. Closes: #609389.
* Don't ship /usr/share/doc/locales/README. Closes: #643885, #643887.
* Ignore tst-cancelx17.out error on amd64. Closes: #643567.
+ * patches/any/cvs-nptl-pthread-race.diff: fix a race in NPTL code that
+ sometimes causes a deadlock when calling fork() from a thread.
[ Samuel Thibault ]
* patches/hurd-i386/submitted-setresid.diff: New patch to fix -1 passed to
Added: glibc-package/trunk/debian/patches/any/cvs-nptl-pthread-race.diff
===================================================================
--- glibc-package/trunk/debian/patches/any/cvs-nptl-pthread-race.diff (rev 0)
+++ glibc-package/trunk/debian/patches/any/cvs-nptl-pthread-race.diff 2011-10-30 15:11:57 UTC (rev 5015)
@@ -0,0 +1,167 @@
+2011-09-15 Andreas Schwab <schwab@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 <drepper@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 <schwab@redhat.com>
++
++ * thread_dbP.h: Include <list.h>
++
+ 2009-08-23 Roland McGrath <roland@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/trunk/debian/patches/series
===================================================================
--- glibc-package/trunk/debian/patches/series 2011-10-28 23:51:54 UTC (rev 5014)
+++ glibc-package/trunk/debian/patches/series 2011-10-30 15:11:57 UTC (rev 5015)
@@ -294,3 +294,4 @@
any/cvs-dlopen-tls.diff
any/submitted-glob_h-ifdef.diff
any/cvs-dl_close-scope-handling.diff
+any/cvs-nptl-pthread-race.diff
Reply to: