summaryrefslogtreecommitdiff
path: root/libpthread
diff options
context:
space:
mode:
authorFilippo ARCIDIACONO <filippo.arcidiacono@st.com>2013-07-01 15:55:26 +0200
committerBernhard Reutner-Fischer <rep.dot.nop@gmail.com>2013-07-04 11:25:17 +0200
commit23691332c8458adb469ad78051493ef0db434222 (patch)
tree37de70ad0b0545dbd906599d42c2e620a3324232 /libpthread
parentc2c684f88157f8bd0c236c7546f922fbf66b64a1 (diff)
libpthread: pthread_exit in static app. segfaults
Static applications that call pthread_exit on the main thread segfault. This is because after a thread terminates __uClibc_main decrements __nptl_nthreads which is only defined in pthread_create. Therefore the right solution is to add a requirement to pthread_create from pthread_exit. This patch has been backported from glibc tree: http://sourceware.org/git/?p=glibc.git;a=commitdiff;h=e1f0b2cfa14b058ab033431b70428ccda8ec6ed0 For further detail see also glibc bug at: http://sourceware.org/bugzilla/show_bug.cgi?id=12310 Signed-off-by: Filippo Arcidiacono <filippo.arcidiacono@st.com> Cc: Vladimir Nikulichev <v.nikulichev@gmail.com> Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop@gmail.com>
Diffstat (limited to 'libpthread')
-rw-r--r--libpthread/nptl/pthread_exit.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/libpthread/nptl/pthread_exit.c b/libpthread/nptl/pthread_exit.c
index b37be7a13..141ca750d 100644
--- a/libpthread/nptl/pthread_exit.c
+++ b/libpthread/nptl/pthread_exit.c
@@ -29,3 +29,9 @@ __pthread_exit (void* value)
__do_cancel ();
}
strong_alias (__pthread_exit, pthread_exit)
+
+/*
+ * After a thread terminates, __uClibc_main decrements __nptl_nthreads
+ * defined in pthread_create.c.
+ */
+PTHREAD_STATIC_FN_REQUIRE (pthread_create)