summaryrefslogtreecommitdiff
path: root/linuxthreads
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2001-11-29 07:47:56 +0000
committerUlrich Drepper <drepper@redhat.com>2001-11-29 07:47:56 +0000
commita0323a1c8ffc348a4fe26f99dc2d4185a88aeb90 (patch)
tree0326ff96ea7d0e674cbc9b3bf66ff599218d6c6f /linuxthreads
parent3933755f8e8663eeed922401781f52de59bc0680 (diff)
Update.
Diffstat (limited to 'linuxthreads')
-rw-r--r--linuxthreads/ChangeLog18
1 files changed, 18 insertions, 0 deletions
diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog
index 31b954d736..adb8183843 100644
--- a/linuxthreads/ChangeLog
+++ b/linuxthreads/ChangeLog
@@ -1,3 +1,21 @@
+2001-11-28 Kaz Kylheku <kaz@ashi.footprints.net>
+
+ Bugfix to pthread_key_delete. It was iterating over the thread
+ manager's linked list of threads, behind the thread manager's
+ back causing a race. The fix is to have the manager iterate over
+ the threads instead, using a new request type for doing so.
+ * internals.h (struct pthread_request): New manager request type
+ REQ_FOR_EACH_THREAD.
+ * manager.c (pthread_for_each_thread): New function.
+ (__pthread_manager): Handle new REQ_FOR_EACH_THREAD request.
+ * specific.c (struct pthread_key_delete_helper_args): New type.
+ (pthread_key_delete_helper): New static function.
+ (pthread_key_delete): Use the new thread manager
+ REQ_FOR_EACH_THREAD function to iterate over the threads and set
+ the delete key slot to a null value in each thread.
+ * Examples/ex18.c: New test.
+ * Makefile (tests): Add ex18.
+
2001-11-22 Wolfram Gloger <wg@malloc.de>
* pthread.c (pthread_onexit_process): Don't call free