This is the mail archive of the
gcc-bugs@gcc.gnu.org
mailing list for the GCC project.
[Bug libstdc++/22309] mt allocator doesn't pthread_key_delete its keys
- From: "cvs-commit at gcc dot gnu dot org" <gcc-bugzilla at gcc dot gnu dot org>
- To: gcc-bugs at gcc dot gnu dot org
- Date: 20 Sep 2005 05:25:04 -0000
- Subject: [Bug libstdc++/22309] mt allocator doesn't pthread_key_delete its keys
- References: <20050705135434.22309.jakub@redhat.com>
- Reply-to: gcc-bugzilla at gcc dot gnu dot org
------- Additional Comments From cvs-commit at gcc dot gnu dot org 2005-09-20 05:25 -------
Subject: Bug 22309
CVSROOT: /cvs/gcc
Module name: gcc
Branch: gcc-4_0-branch
Changes by: bkoz@gcc.gnu.org 2005-09-20 05:24:50
Modified files:
libstdc++-v3 : ChangeLog
libstdc++-v3/config: linker-map.gnu
libstdc++-v3/include/ext: mt_allocator.h
libstdc++-v3/src: debug.cc locale_init.cc mt_allocator.cc
pool_allocator.cc
Log message:
2005-09-19 Benjamin Kosnik <bkoz@redhat.com>
PR libstdc++/19265
PR libstdc++/22309
* include/ext/mt_allocator.h
(__gnu_cxx::__create_handler): Remove.
(__pool<true>::_M_destroy_thread_key): Compatibility only.
(__pool<true>::_M_initialize(__destroy): Same.
(__pool<true>::_M_initialize): New.
(__pool<true>::_M_initialize_once): Nothing fancy.
(__pool<true>::_M_once): Remove.
(__common_pool): New.
(__common_pool_base): New.
(__per_type_pool): New.
(__per_type_pool_base): New.
* src/mt_allocator.cc: Same.
* config/linker-map.gnu (__pool<true>::_M_initialize()): Add.
2005-09-19 Jakub Jelinek <jakub@redhat.com>
PR libstdc++/19265
PR libstdc++/22309
* src/mt_allocator.cc (__gnu_internal::freelist_mutex): Make static.
(__gnu_internal::__freelist): New type.
(__gnu_internal::freelist): New variable.
(__gnu_internal::_M_destroy_thread_key): New function.
(__gnu_cxx::__pool<true>::_M_destroy): Don't delete
_M_thread_freelist_initial.
(__gnu_cxx::__pool<true>::_M_initialize): Make argument nameless.
Don't use _M_thread_freelist and _M_thread_freelist_initial
__pool<true> fields, instead use __gnu_internal::freelist fields, call
gthread_key_create just once. Use
__gnu_internal::_M_destroy_thread_key as key destructor.
(__gnu_cxx::__pool<true>::_M_get_thread_id): Store size_t id
rather than _Thread_record* in the thread specific value. Don't
use _M_thread_freelist __pool<true> field, instead use
__gnu_internal::freelist fields.
(__gnu_cxx::__pool<true>::_M_destroy_thread_key): Do nothing.
2005-09-19 Benjamin Kosnik <bkoz@redhat.com>
Jakub Jelinek <jakub@redhat.com>
* src/debug.cc (iterator_base_mutex): Make static for internal
linkage.
* src/locale_init.cc (locale_mutex): Same.
* src/mt_allocator.cc (freelist_mutex): Same.
* src/pool_allocator.cc (palloc_init_mutex): Same.
Patches:
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/ChangeLog.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.2917.2.83&r2=1.2917.2.84
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/config/linker-map.gnu.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.78.2.3&r2=1.78.2.4
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/include/ext/mt_allocator.h.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.45.8.1&r2=1.45.8.2
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/src/debug.cc.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.10&r2=1.10.18.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/src/locale_init.cc.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.15&r2=1.15.36.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/src/mt_allocator.cc.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.8&r2=1.8.22.1
http://gcc.gnu.org/cgi-bin/cvsweb.cgi/gcc/libstdc++-v3/src/pool_allocator.cc.diff?cvsroot=gcc&only_with_tag=gcc-4_0-branch&r1=1.2&r2=1.2.24.1
--
http://gcc.gnu.org/bugzilla/show_bug.cgi?id=22309