You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
I am using boost::thread statically linkes in a shared library and found a pthread key leak. When I repeat loading and unloading the library, pthread keys are leaking and after some time, I get
The leaking pthread key is allocated in libs/thread/src/pthread/thread.cpp. The code for de-allocating the pthread key is #ifdef'ed with BOOST_THREAD_PATCH. Without BOOST_THREAD_PATCH, the binary only calls to pthread_key_create, but no call to pthread_key_delete:
Unfortunately, I do not really understand the problem in ticket #12049. To me, it looks like a race condition and the leaking pthread key just prevents any harm caused by the race condition. That doesn't really look like a fix to me, just solves one problem by creating a new one. :-(
I am using boost::thread statically linkes in a shared library and found a pthread key leak. When I repeat loading and unloading the library, pthread keys are leaking and after some time, I get
main: boost_1_77_0/libs/thread/src/pthread/thread.cpp:148: void boost::detail::{anonymous}::create_current_thread_tls_key(): Assertion `!pthread_key_create(¤t_thread_tls_key,&tls_destructor)' failed.
The leaking pthread key is allocated in libs/thread/src/pthread/thread.cpp. The code for de-allocating the pthread key is #ifdef'ed with BOOST_THREAD_PATCH. Without BOOST_THREAD_PATCH, the binary only calls to pthread_key_create, but no call to pthread_key_delete:
The problem seems to be solved, if I #define BOOST_THREAD_PATCH. But this #ifdef was added in 47357de to solve bug #12049. (https://www.boost.org/doc/libs/1_64_0/doc/html/thread/changes.html) (https://svn.boost.org/trac10/ticket/12049)
Unfortunately, I do not really understand the problem in ticket #12049. To me, it looks like a race condition and the leaking pthread key just prevents any harm caused by the race condition. That doesn't really look like a fix to me, just solves one problem by creating a new one. :-(
Here is my source code: boost_pthread_key_leak.zip
I am using linux on x86_64, c++ (Gentoo 10.3.0-r2 p3) 10.3.0
The text was updated successfully, but these errors were encountered: