diff options
author | Ulrich Drepper <drepper@redhat.com> | 2001-11-28 22:27:20 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2001-11-28 22:27:20 +0000 |
commit | cf6a2367e82ba5b322baf0fc0caa5d57e799c72d (patch) | |
tree | 6231ff95b897d8af2428dbe041a30ad022acd35a /linuxthreads/pthread.c | |
parent | 4e735c9aaf9e05a1d4f587f5b049b2f515ff755a (diff) | |
download | glibc-cf6a2367e82ba5b322baf0fc0caa5d57e799c72d.tar.gz glibc-cf6a2367e82ba5b322baf0fc0caa5d57e799c72d.tar.xz glibc-cf6a2367e82ba5b322baf0fc0caa5d57e799c72d.zip |
Update.
2001-11-22 Wolfram Gloger <wg@malloc.de> * pthread.c (pthread_onexit_process): Don't call free after threads have been asynchronously terminated. * manager.c (pthread_handle_exit): Surround cancellation of threads with __flockfilelist()/__funlockfilelist().
Diffstat (limited to 'linuxthreads/pthread.c')
-rw-r--r-- | linuxthreads/pthread.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/linuxthreads/pthread.c b/linuxthreads/pthread.c index b287dc8d03..81261416e2 100644 --- a/linuxthreads/pthread.c +++ b/linuxthreads/pthread.c @@ -795,7 +795,9 @@ static void pthread_onexit_process(int retcode, void *arg) if (self == __pthread_main_thread) { waitpid(__pthread_manager_thread.p_pid, NULL, __WCLONE); - free (__pthread_manager_thread_bos); + /* Since all threads have been asynchronously terminated + (possibly holding locks), free cannot be used any more. */ + /*free (__pthread_manager_thread_bos);*/ __pthread_manager_thread_bos = __pthread_manager_thread_tos = NULL; } } |