summary refs log tree commit diff
path: root/linuxthreads
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2001-01-13 16:09:41 +0000
committerUlrich Drepper <drepper@redhat.com>2001-01-13 16:09:41 +0000
commit3f73836632c221bd952d0cee6abdd88b35963965 (patch)
tree31f7ff06e8092382a1319d723c64869ce6ed7d2d /linuxthreads
parent234669e2687f707441040f90a9114133a77babe3 (diff)
downloadglibc-3f73836632c221bd952d0cee6abdd88b35963965.tar.gz
glibc-3f73836632c221bd952d0cee6abdd88b35963965.tar.xz
glibc-3f73836632c221bd952d0cee6abdd88b35963965.zip
Update.
2001-01-13  Jakub Jelinek  <jakub@redhat.com>

	* inet/ether_ntoh.c (lookup_function): Change arguments to match
	_nss_*_getntohost_r prototype.
	(ether_ntohost): Pass errno pointer to NSS function.

2001-01-12  Franz Sirl  <Franz.Sirl-kernel@lauterbach.com>

	* sysdeps/unix/sysv/linux/powerpc/bits/mman.h (MS_SYNC): Fix value.
	(MAP_LOCKED): New definition.
	(MAP_NORESERVE): New definition.
Diffstat (limited to 'linuxthreads')
-rw-r--r--linuxthreads/ChangeLog7
-rw-r--r--linuxthreads/Examples/ex16.c26
-rw-r--r--linuxthreads/Makefile2
-rw-r--r--linuxthreads/pthread.c1
4 files changed, 35 insertions, 1 deletions
diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog
index a56b99ce85..8936eac03a 100644
--- a/linuxthreads/ChangeLog
+++ b/linuxthreads/ChangeLog
@@ -1,3 +1,10 @@
+2001-01-13  Jakub Jelinek  <jakub@redhat.com>
+
+	* pthread.c (pthread_onexit_process): Clear
+	__pthread_manager_thread_bos after freeing it.
+	* Makefile (tests): Add ex16.
+	* Examples/ex16.c: New file.
+
 2001-01-11  Jakub Jelinek  <jakub@redhat.com>
 
 	* Makefile (CFLAGS-pthread.c): Pass -DHAVE_Z_NODELETE if ld supports
diff --git a/linuxthreads/Examples/ex16.c b/linuxthreads/Examples/ex16.c
new file mode 100644
index 0000000000..6509ae4515
--- /dev/null
+++ b/linuxthreads/Examples/ex16.c
@@ -0,0 +1,26 @@
+/* Tst case by Jakub Jelinek <jakub@redhat.com>.  */
+#include <stdlib.h>
+#include <unistd.h>
+#include <pthread.h>
+
+static void *
+task (void *p)
+{
+  sleep (30);
+  return NULL;
+}
+
+int
+main (void)
+{
+  pthread_t t;
+  int status;
+
+  status = pthread_create (&t, NULL, task, NULL);
+  if (status)
+    exit (status);
+
+  status = pthread_detach (t);
+  pthread_kill_other_threads_np ();
+  return status;
+}
diff --git a/linuxthreads/Makefile b/linuxthreads/Makefile
index da3c3d22f7..d3364eaf5b 100644
--- a/linuxthreads/Makefile
+++ b/linuxthreads/Makefile
@@ -46,7 +46,7 @@ include ../Makeconfig
 
 librt-tests = ex10 ex11
 tests = ex1 ex2 ex3 ex4 ex5 ex6 ex7 ex8 ex9 $(librt-tests) ex12 ex13 joinrace \
-	tststack $(tests-nodelete-$(have-z-nodelete)) ecmutex ex14 ex15
+	tststack $(tests-nodelete-$(have-z-nodelete)) ecmutex ex14 ex15 ex16
 
 ifeq (yes,$(build-shared))
 tests-nodelete-yes = unload
diff --git a/linuxthreads/pthread.c b/linuxthreads/pthread.c
index df1d00b05a..b62393fde9 100644
--- a/linuxthreads/pthread.c
+++ b/linuxthreads/pthread.c
@@ -753,6 +753,7 @@ static void pthread_onexit_process(int retcode, void *arg)
       {
 	waitpid(__pthread_manager_thread.p_pid, NULL, __WCLONE);
 	free (__pthread_manager_thread_bos);
+	__pthread_manager_thread_bos = __pthread_manager_thread_tos = NULL;
       }
   }
 }