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
When I use TSAN(Thread Sanitizer) to detect thread issue in zeroMQ, the tsan report me a warning as follows, but as a beginner of zeroMQ, I don't know how to resolve this issue, can anyone help me?
When I use TSAN(Thread Sanitizer) to detect thread issue in zeroMQ, the tsan report me a warning as follows, but as a beginner of zeroMQ, I don't know how to resolve this issue, can anyone help me?
==================
WARNING: ThreadSanitizer: lock-order-inversion (potential deadlock) (pid=62766)
Cycle in lock order graph: M337 (0x7b70000016b0) => M234 (0x7b5400000348) => M336 (0x7b7000001588) => M337
Mutex M234 acquired here while holding mutex M337 in main thread:
#0 pthread_mutex_lock ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:4240 (libtsan.so.0+0x53908)
#1 zmq::mutex_t::lock() external/umicom_tcp/src/mutex.hpp:135 (libzmq.so+0x100dd0)
#2 zmq::scoped_lock_t::scoped_lock_t(zmq::mutex_t&) external/umicom_tcp/src/mutex.hpp:172 (libzmq.so+0x1015e6)
#3 zmq::ctx_t::create_socket(int) external/umicom_tcp/src/ctx.cpp:480 (libzmq.so+0xfcf67)
#4 zmq_socket external/umicom_tcp/src/zmq.cpp:259 (libzmq.so+0x26aa65)
#5 zmq::socket_base_t::monitor(char const*, unsigned long, int, int) external/umicom_tcp/src/socket_base.cpp:1846 (libzmq.so+0x1e5dd7)
#6 zmq_socket_monitor_versioned external/umicom_tcp/src/zmq.cpp:297 (libzmq.so+0x26ac79)
#7 zmq_socket_monitor external/umicom_tcp/src/zmq.cpp:302 (libzmq.so+0x26ace7)
#8 umicom::transport::UmicomTransportTcp::createMonitorSocket(void*, void*) external/umicom_tcp/plugin_tcp/v2/transport_plugin_tcp.cpp:239 (libtcptransport.so+0x3f583)
#9 umicom::transport::UmicomTransportTcp::createMulticastSocket(umicom::transport::UmicomTransportUtility*, void**, void**) external/umicom_tcp/plugin_tcp/v2/transport_plugin_tcp.cpp:212 (libtcptransport.so+0x3e774)
#10 operator() external/umicom_tcp/plugin_tcp/v2/transport_plugin_tcp.cpp:113 (libtcptransport.so+0x3cbd0)
#11 __invoke_impl<bool, umicom::transport::UmicomTransportTcp::CreateRecvResource(const umicom::transport::UmicomTransportRecvProperty&, umicom::transport::UmicomTransportUtility*, void**)::<lambda(uint32_t)>&, unsigned int> /usr/include/c++/11/bits/invoke.h:61 (libtcptransport.so+0x44ddf)
#12 __invoke_r<bool, umicom::transport::UmicomTransportTcp::CreateRecvResource(const umicom::transport::UmicomTransportRecvProperty&, umicom::transport::UmicomTransportUtility*, void**)::<lambda(uint32_t)>&, unsigned int> /usr/include/c++/11/bits/invoke.h:142 (libtcptransport.so+0x44a7e)
#13 _M_invoke /usr/include/c++/11/bits/std_function.h:290 (libtcptransport.so+0x445bb)
#14 std::function<bool (unsigned int)>::operator()(unsigned int) const /usr/include/c++/11/bits/std_function.h:590 (libtcptransport.so+0x4762b)
#15 umicom::transport::UseDesignatedPortGeneratePolicy::generateAndVerifyPort(std::function<bool (unsigned int)>) const external/umicom_tcp/plugin_tcp/v2/port_generate_policy.h:74 (libtcptransport.so+0x46b5f)
#16 umicom::transport::UmicomTransportTcp::CreateRecvResource(umicom::transport::UmicomTransportRecvProperty const&, umicom::transport::UmicomTransportUtility*, void**) external/umicom_tcp/plugin_tcp/v2/transport_plugin_tcp.cpp:118 (libtcptransport.so+0x3d056)
#17 umicom::common::ChannelFactory::createInputChannel(umicom::discovery::protocol::Locator const&, std::shared_ptrumicom::common::ChannelListener, umicom::common::TransportProperty const&, std::function<bool (umicom::common::TransportMessage&)>&&) external/umicom/common/src/channel/channel_factory.cpp:98 (libumicom.so+0x2e3404)
#18 umicom::discovery::locator::MulticastLocator::setup() external/umicom/libs/src/discovery_v2/locator/multicast_locator.cpp:42 (libumicom.so+0x2d8063)
#19 umicom::discovery::ndp::NodeDiscoveryManager::enable() external/umicom/libs/src/discovery_v2/ndp/node_discovery_manager.cpp:96 (libumicom.so+0x2cd70d)
#20 umicom::discovery::DiscoveryManager::enable() external/umicom/libs/src/discovery_v2/discovery_manager.cpp:77 (libumicom.so+0x2a5c23)
#21 umicom::interface::NodeImpl::enable(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, umicom::interface::NodeAttribute const&, std::unique_ptr<umicom::interface::AbstractUmicomListener, std::default_deleteumicom::interface::AbstractUmicomListener >) external/umicom/libs/src/node_impl.cpp:35 (libumicom.so+0x290f41)
#22 umicom::interface::init(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, umicom::interface::NodeAttribute const&, std::unique_ptr<umicom::interface::AbstractUmicomListener, std::default_deleteumicom::interface::AbstractUmicomListener >) external/umicom/libs/src/node.cpp:33 (libumicom.so+0x28d411)
#23 main external/umicom/sample/ci_test/functional/umicom_hello_listener_untype/helloworld_subscriber.cpp:131 (umicom_hello_untype_subscriber+0xaddb)
Mutex M337 previously acquired by the same thread here:
#0 pthread_mutex_lock ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:4240 (libtsan.so.0+0x53908)
#1 zmq::mutex_t::lock() external/umicom_tcp/src/mutex.hpp:135 (libzmq.so+0x100dd0)
#2 zmq::scoped_lock_t::scoped_lock_t(zmq::mutex_t&) external/umicom_tcp/src/mutex.hpp:172 (libzmq.so+0x1015e6)
#3 zmq::socket_base_t::monitor(char const*, unsigned long, int, int) external/umicom_tcp/src/socket_base.cpp:1793 (libzmq.so+0x1e5b90)
#4 zmq_socket_monitor_versioned external/umicom_tcp/src/zmq.cpp:297 (libzmq.so+0x26ac79)
#5 zmq_socket_monitor external/umicom_tcp/src/zmq.cpp:302 (libzmq.so+0x26ace7)
#6 umicom::transport::UmicomTransportTcp::createMonitorSocket(void*, void*) external/umicom_tcp/plugin_tcp/v2/transport_plugin_tcp.cpp:239 (libtcptransport.so+0x3f583)
#7 umicom::transport::UmicomTransportTcp::createMulticastSocket(umicom::transport::UmicomTransportUtility*, void**, void**) external/umicom_tcp/plugin_tcp/v2/transport_plugin_tcp.cpp:212 (libtcptransport.so+0x3e774)
#8 operator() external/umicom_tcp/plugin_tcp/v2/transport_plugin_tcp.cpp:113 (libtcptransport.so+0x3cbd0)
#9 __invoke_impl<bool, umicom::transport::UmicomTransportTcp::CreateRecvResource(const umicom::transport::UmicomTransportRecvProperty&, umicom::transport::UmicomTransportUtility*, void**)::<lambda(uint32_t)>&, unsigned int> /usr/include/c++/11/bits/invoke.h:61 (libtcptransport.so+0x44ddf)
#10 __invoke_r<bool, umicom::transport::UmicomTransportTcp::CreateRecvResource(const umicom::transport::UmicomTransportRecvProperty&, umicom::transport::UmicomTransportUtility*, void**)::<lambda(uint32_t)>&, unsigned int> /usr/include/c++/11/bits/invoke.h:142 (libtcptransport.so+0x44a7e)
#11 _M_invoke /usr/include/c++/11/bits/std_function.h:290 (libtcptransport.so+0x445bb)
#12 std::function<bool (unsigned int)>::operator()(unsigned int) const /usr/include/c++/11/bits/std_function.h:590 (libtcptransport.so+0x4762b)
#13 umicom::transport::UseDesignatedPortGeneratePolicy::generateAndVerifyPort(std::function<bool (unsigned int)>) const external/umicom_tcp/plugin_tcp/v2/port_generate_policy.h:74 (libtcptransport.so+0x46b5f)
#14 umicom::transport::UmicomTransportTcp::CreateRecvResource(umicom::transport::UmicomTransportRecvProperty const&, umicom::transport::UmicomTransportUtility*, void**) external/umicom_tcp/plugin_tcp/v2/transport_plugin_tcp.cpp:118 (libtcptransport.so+0x3d056)
#15 umicom::common::ChannelFactory::createInputChannel(umicom::discovery::protocol::Locator const&, std::shared_ptrumicom::common::ChannelListener, umicom::common::TransportProperty const&, std::function<bool (umicom::common::TransportMessage&)>&&) external/umicom/common/src/channel/channel_factory.cpp:98 (libumicom.so+0x2e3404)
#16 umicom::discovery::locator::MulticastLocator::setup() external/umicom/libs/src/discovery_v2/locator/multicast_locator.cpp:42 (libumicom.so+0x2d8063)
#17 umicom::discovery::ndp::NodeDiscoveryManager::enable() external/umicom/libs/src/discovery_v2/ndp/node_discovery_manager.cpp:96 (libumicom.so+0x2cd70d)
#18 umicom::discovery::DiscoveryManager::enable() external/umicom/libs/src/discovery_v2/discovery_manager.cpp:77 (libumicom.so+0x2a5c23)
#19 umicom::interface::NodeImpl::enable(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, umicom::interface::NodeAttribute const&, std::unique_ptr<umicom::interface::AbstractUmicomListener, std::default_deleteumicom::interface::AbstractUmicomListener >) external/umicom/libs/src/node_impl.cpp:35 (libumicom.so+0x290f41)
#20 umicom::interface::init(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, umicom::interface::NodeAttribute const&, std::unique_ptr<umicom::interface::AbstractUmicomListener, std::default_deleteumicom::interface::AbstractUmicomListener >) external/umicom/libs/src/node.cpp:33 (libumicom.so+0x28d411)
#21 main external/umicom/sample/ci_test/functional/umicom_hello_listener_untype/helloworld_subscriber.cpp:131 (umicom_hello_untype_subscriber+0xaddb)
Mutex M336 acquired here while holding mutex M234 in main thread:
#0 pthread_mutex_lock ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:4240 (libtsan.so.0+0x53908)
#1 zmq::mutex_t::lock() external/umicom_tcp/src/mutex.hpp:135 (libzmq.so+0x100dd0)
#2 zmq::mailbox_safe_t::send(zmq::command_t const&) external/umicom_tcp/src/mailbox_safe.cpp:79 (libzmq.so+0x156745)
#3 zmq::ctx_t::send_command(unsigned int, zmq::command_t const&) external/umicom_tcp/src/ctx.cpp:664 (libzmq.so+0xfdcbe)
#4 zmq::object_t::send_stop() external/umicom_tcp/src/object.cpp:226 (libzmq.so+0x174185)
#5 zmq::socket_base_t::stop() external/umicom_tcp/src/socket_base.cpp:319 (libzmq.so+0x1d8460)
#6 zmq::ctx_t::te
rminate() external/umicom_tcp/src/ctx.cpp:200 (libzmq.so+0xfb2d8)
#7 zmq_ctx_term external/umicom_tcp/src/zmq.cpp:157 (libzmq.so+0x26a4c0)
#8 zmq_ctx_destroy external/umicom_tcp/src/zmq.cpp:236 (libzmq.so+0x26a925)
#9 umicom::transport::UmicomTransportTcp::
UmicomTransportTcp() external/umicom_tcp/plugin_tcp/v2/transport_plugin_tcp.cpp:75 (libtcptransport.so+0x3c2c7)__shared_count() /usr/include/c++/11/bits/shared_ptr_base.h:705 (umicom_hello_untype_subscriber+0x11802)#10 void __gnu_cxx::new_allocatorumicom::transport::UmicomTransportTcp::destroyumicom::transport::UmicomTransportTcp(umicom::transport::UmicomTransportTcp*) /usr/include/c++/11/ext/new_allocator.h:168 (libtcptransport.so+0x4ea29)
#11 void std::allocator_traits<std::allocatorumicom::transport::UmicomTransportTcp >::destroyumicom::transport::UmicomTransportTcp(std::allocatorumicom::transport::UmicomTransportTcp&, umicom::transport::UmicomTransportTcp*) /usr/include/c++/11/bits/alloc_traits.h:535 (libtcptransport.so+0x4e865)
#12 std::_Sp_counted_ptr_inplace<umicom::transport::UmicomTransportTcp, std::allocatorumicom::transport::UmicomTransportTcp, (__gnu_cxx::_Lock_policy)2>::_M_dispose() /usr/include/c++/11/bits/shared_ptr_base.h:528 (libtcptransport.so+0x4e062)
#13 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/include/c++/11/bits/shared_ptr_base.h:168 (umicom_hello_untype_subscriber+0x11d99)
#14 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::
#15 std::__shared_ptr<micarstd::plugin::plugin, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr() /usr/include/c++/11/bits/shared_ptr_base.h:1154 (libumicom.so+0x2ea373)
#16 std::shared_ptrmicarstd::plugin::plugin::~shared_ptr() /usr/include/c++/11/bits/shared_ptr.h:122 (libumicom.so+0x2ea3a3)
#17 std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin >::
pair() /usr/include/c++/11/bits/stl_pair.h:211 (libumicom.so+0x2f7177)_Rb_tree() /usr/include/c++/11/bits/stl_tree.h:984 (libumicom.so+0x3031af)#18 void __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > >::destroy<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > >(std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin >) (libumicom.so+0x302ec1)
#19 void std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > >::destroy<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > >(std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > >&, std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin >) /usr/include/c++/11/bits/alloc_traits.h:535 (libumicom.so+0x301c81)
#20 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > >, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > >::_M_destroy_node(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > >) /usr/include/c++/11/bits/stl_tree.h:623 (libumicom.so+0x300a20)
#21 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > >, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > >::_M_drop_node(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > >) (libumicom.so+0x2fe3c0)
#22 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > >, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > >::_M_erase(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > >*) /usr/include/c++/11/bits/stl_tree.h:1891 (libumicom.so+0x303ac5)
#23 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > >, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > >::
#24 std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > >::
map() /usr/include/c++/11/bits/stl_map.h:302 (libumicom.so+0x3020a9)__shared_ptr() /usr/include/c++/11/bits/shared_ptr_base.h:1154 (libumicom.so+0x2f3767)#25 std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > >::
pair() /usr/include/c++/11/bits/stl_pair.h:211 (libumicom.so+0x3020dd)__shared_count() /usr/include/c++/11/bits/shared_ptr_base.h:705 (umicom_hello_untype_subscriber+0x11802)#26 void __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > > >::destroy<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > >(std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > >) /usr/include/c++/11/ext/new_allocator.h:168 (libumicom.so+0x302111)
#27 void std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > > > >::destroy<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > >(std::allocator<std::_Rb_tree_node<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > > >&, std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > >) (libumicom.so+0x300c50)
#28 std::_Rb_tree<micarstd::plugin::plugin_type_e, std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > >, std::_Select1st<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > >, std::lessmicarstd::plugin::plugin_type_e, std::allocator<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > > >::_M_destroy_node(std::_Rb_tree_node<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > >) /usr/include/c++/11/bits/stl_tree.h:623 (libumicom.so+0x2fe5c2)
#29 std::_Rb_tree<micarstd::plugin::plugin_type_e, std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > >, std::_Select1st<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > >, std::lessmicarstd::plugin::plugin_type_e, std::allocator<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > > >::_M_drop_node(std::_Rb_tree_node<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > >) /usr/include/c++/11/bits/stl_tree.h:631 (libumicom.so+0x2faf80)
#30 std::_Rb_tree<micarstd::plugin::plugin_type_e, std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > >, std::_Select1st<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > >, std::lessmicarstd::plugin::plugin_type_e, std::allocator<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > > >::_M_erase(std::_Rb_tree_node<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > >) /usr/include/c++/11/bits/stl_tree.h:1891 (libumicom.so+0x2f8a31)
#31 std::_Rb_tree<micarstd::plugin::plugin_type_e, std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > >, std::_Select1st<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > >, std::lessmicarstd::plugin::plugin_type_e, std::allocator<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > > >::clear() /usr/include/c++/11/bits/stl_tree.h:1254 (libumicom.so+0x2f8c41)
#32 std::map<micarstd::plugin::plugin_type_e, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > >, std::lessmicarstd::plugin::plugin_type_e, std::allocator<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > > >::clear() /usr/include/c++/11/bits/stl_map.h:1134 (libumicom.so+0x2f751b)
#33 micarstd::plugin::plugin_manager_impl::~plugin_manager_impl() external/micarstd/plugin/src/plugin_manager_impl.cpp:51 (libumicom.so+0x2f3a79)
#34 void __gnu_cxx::new_allocatormicarstd::plugin::plugin_manager_impl::destroymicarstd::plugin::plugin_manager_impl(micarstd::plugin::plugin_manager_impl) /usr/include/c++/11/ext/new_allocator.h:168 (libumicom.so+0x304a0f)
#35 void std::allocator_traits<std::allocatormicarstd::plugin::plugin_manager_impl >::destroymicarstd::plugin::plugin_manager_impl(std::allocatormicarstd::plugin::plugin_manager_impl&, micarstd::plugin::plugin_manager_impl*) /usr/include/c++/11/bits/alloc_traits.h:535 (libumicom.so+0x3049ad)
#36 std::_Sp_counted_ptr_inplace<micarstd::plugin::plugin_manager_impl, std::allocatormicarstd::plugin::plugin_manager_impl, (__gnu_cxx::_Lock_policy)2>::_M_dispose() /usr/include/c++/11/bits/shared_ptr_base.h:528 (libumicom.so+0x304832)
#37 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/include/c++/11/bits/shared_ptr_base.h:168 (umicom_hello_untype_subscriber+0x11d99)
#38 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::
#39 std::__shared_ptr<micarstd::plugin::plugin_manager_impl, (__gnu_cxx::_Lock_policy)2>::
#40 std::shared_ptrmicarstd::plugin::plugin_manager_impl::~shared_ptr() /usr/include/c++/11/bits/shared_ptr.h:122 (libumicom.so+0x2f3797)
#41 cxa_at_exit_wrapper ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:397 (libtsan.so.0+0x2cdf4)
Mutex M234 previously acquired by the same thread here:
#0 pthread_mutex_lock ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:4240 (libtsan.so.0+0x53908)
#1 zmq::mutex_t::lock() external/umicom_tcp/src/mutex.hpp:135 (libzmq.so+0x100dd0)
#2 zmq::ctx_t::terminate() external/umicom_tcp/src/ctx.cpp:158 (libzmq.so+0xfae4b)
#3 zmq_ctx_term external/umicom_tcp/src/zmq.cpp:157 (libzmq.so+0x26a4c0)
#4 zmq_ctx_destroy external/umicom_tcp/src/zmq.cpp:236 (libzmq.so+0x26a925)
#5 umicom::transport::UmicomTransportTcp::
UmicomTransportTcp() external/umicom_tcp/plugin_tcp/v2/transport_plugin_tcp.cpp:75 (libtcptransport.so+0x3c2c7)__shared_count() /usr/include/c++/11/bits/shared_ptr_base.h:705 (umicom_hello_untype_subscriber+0x11802)#6 void __gnu_cxx::new_allocatorumicom::transport::UmicomTransportTcp::destroyumicom::transport::UmicomTransportTcp(umicom::transport::UmicomTransportTcp*) /usr/include/c++/11/ext/new_allocator.h:168 (libtcptransport.so+0x4ea29)
#7 void std::allocator_traits<std::allocatorumicom::transport::UmicomTransportTcp >::destroyumicom::transport::UmicomTransportTcp(std::allocatorumicom::transport::UmicomTransportTcp&, umicom::transport::UmicomTransportTcp*) /usr/include/c++/11/bits/alloc_traits.h:535 (libtcptransport.so+0x4e865)
#8 std::_Sp_counted_ptr_inplace<umicom::transport::UmicomTransportTcp, std::allocatorumicom::transport::UmicomTransportTcp, (__gnu_cxx::_Lock_policy)2>::_M_dispose() /usr/include/c++/11/bits/shared_ptr_base.h:528 (libtcptransport.so+0x4e062)
#9 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/include/c++/11/bits/shared_ptr_base.h:168 (umicom_hello_untype_subscriber+0x11d99)
#10 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::
#11 std::__shared_ptr<micarstd::plugin::plugin, (__gnu_cxx::_Lock_policy)2>::~__shared_ptr() /usr/include/c++/11/bits/shared_ptr_base.h:1154 (libumicom.so+0x2ea373)
#12 std::shared_ptrmicarstd::plugin::plugin::~shared_ptr() /usr/include/c++/11/bits/shared_ptr.h:122 (libumicom.so+0x2ea3a3)
#13 std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin >::
pair() /usr/include/c++/11/bits/stl_pair.h:211 (libumicom.so+0x2f7177)_Rb_tree() /usr/include/c++/11/bits/stl_tree.h:984 (libumicom.so+0x3031af)#14 void __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > >::destroy<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > >(std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin >) (libumicom.so+0x302ec1)
#15 void std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > >::destroy<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > >(std::allocator<std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > >&, std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin >) /usr/include/c++/11/bits/alloc_traits.h:535 (libumicom.so+0x301c81)
#16 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > >, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > >::_M_destroy_node(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > >) /usr/include/c++/11/bits/stl_tree.h:623 (libumicom.so+0x300a20)
#17 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > >, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > >::_M_drop_node(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > >) (libumicom.so+0x2fe3c0)
#18 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > >, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > >::_M_erase(std::_Rb_tree_node<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > >*) /usr/include/c++/11/bits/stl_tree.h:1891 (libumicom.so+0x303ac5)
#19 std::_Rb_tree<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin >, std::_Select1st<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > >, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > >::
#20 std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > >::
map() /usr/include/c++/11/bits/stl_map.h:302 (libumicom.so+0x3020a9)__shared_ptr() /usr/include/c++/11/bits/shared_ptr_base.h:1154 (libumicom.so+0x2f3767)#21 std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > >::
pair() /usr/include/c++/11/bits/stl_pair.h:211 (libumicom.so+0x3020dd)__shared_count() /usr/include/c++/11/bits/shared_ptr_base.h:705 (umicom_hello_untype_subscriber+0x11802)#22 void __gnu_cxx::new_allocator<std::_Rb_tree_node<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > > >::destroy<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > >(std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > >) /usr/include/c++/11/ext/new_allocator.h:168 (libumicom.so+0x302111)
#23 void std::allocator_traits<std::allocator<std::_Rb_tree_node<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > > > >::destroy<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > >(std::allocator<std::_Rb_tree_node<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > > >&, std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > >) (libumicom.so+0x300c50)
#24 std::_Rb_tree<micarstd::plugin::plugin_type_e, std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > >, std::_Select1st<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > >, std::lessmicarstd::plugin::plugin_type_e, std::allocator<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > > >::_M_destroy_node(std::_Rb_tree_node<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > >) /usr/include/c++/11/bits/stl_tree.h:623 (libumicom.so+0x2fe5c2)
#25 std::_Rb_tree<micarstd::plugin::plugin_type_e, std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > >, std::_Select1st<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > >, std::lessmicarstd::plugin::plugin_type_e, std::allocator<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > > >::_M_drop_node(std::_Rb_tree_node<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > >) /usr/include/c++/11/bits/stl_tree.h:631 (libumicom.so+0x2faf80)
#26 std::_Rb_tree<micarstd::plugin::plugin_type_e, std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > >, std::_Select1st<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > >, std::lessmicarstd::plugin::plugin_type_e, std::allocator<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > > >::_M_erase(std::_Rb_tree_node<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > >) /usr/include/c++/11/bits/stl_tree.h:1891 (libumicom.so+0x2f8a31)
#27 std::_Rb_tree<micarstd::plugin::plugin_type_e, std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > >, std::_Select1st<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > >, std::lessmicarstd::plugin::plugin_type_e, std::allocator<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > > >::clear() /usr/include/c++/11/bits/stl_tree.h:1254 (libumicom.so+0x2f8c41)
#28 std::map<micarstd::plugin::plugin_type_e, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > >, std::lessmicarstd::plugin::plugin_type_e, std::allocator<std::pair<micarstd::plugin::plugin_type_e const, std::map<std::__cxx11::basic_string<char, std::char_traits, std::allocator >, std::shared_ptrmicarstd::plugin::plugin, std::less<std::__cxx11::basic_string<char, std::char_traits, std::allocator > >, std::allocator<std::pair<std::__cxx11::basic_string<char, std::char_traits, std::allocator > const, std::shared_ptrmicarstd::plugin::plugin > > > > > >::clear() /usr/include/c++/11/bits/stl_map.h:1134 (libumicom.so+0x2f751b)
#29 micarstd::plugin::plugin_manager_impl::~plugin_manager_impl() external/micarstd/plugin/src/plugin_manager_impl.cpp:51 (libumicom.so+0x2f3a79)
#30 void __gnu_cxx::new_allocatormicarstd::plugin::plugin_manager_impl::destroymicarstd::plugin::plugin_manager_impl(micarstd::plugin::plugin_manager_impl) /usr/include/c++/11/ext/new_allocator.h:168 (libumicom.so+0x304a0f)
#31 void std::allocator_traits<std::allocatormicarstd::plugin::plugin_manager_impl >::destroymicarstd::plugin::plugin_manager_impl(std::allocatormicarstd::plugin::plugin_manager_impl&, micarstd::plugin::plugin_manager_impl*) /usr/include/c++/11/bits/alloc_traits.h:535 (libumicom.so+0x3049ad)
#32 std::_Sp_counted_ptr_inplace<micarstd::plugin::plugin_manager_impl, std::allocatormicarstd::plugin::plugin_manager_impl, (__gnu_cxx::_Lock_policy)2>::_M_dispose() /usr/include/c++/11/bits/shared_ptr_base.h:528 (libumicom.so+0x304832)
#33 std::_Sp_counted_base<(__gnu_cxx::_Lock_policy)2>::_M_release() /usr/include/c++/11/bits/shared_ptr_base.h:168 (umicom_hello_untype_subscriber+0x11d99)
#34 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::
#35 std::__shared_ptr<micarstd::plugin::plugin_manager_impl, (__gnu_cxx::_Lock_policy)2>::
#36 std::shared_ptrmicarstd::plugin::plugin_manager_impl::~shared_ptr() /usr/include/c++/11/bits/shared_ptr.h:122 (libumicom.so+0x2f3797)
#37 cxa_at_exit_wrapper ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:397 (libtsan.so.0+0x2cdf4)
Mutex M337 acquired here while holding mutex M336 in thread T2:
#0 pthread_mutex_lock ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:4240 (libtsan.so.0+0x53908)
#1 zmq::mutex_t::lock() external/umicom_tcp/src/mutex.hpp:135 (libzmq.so+0x100dd0)
#2 zmq::scoped_lock_t::scoped_lock_t(zmq::mutex_t&) external/umicom_tcp/src/mutex.hpp:172 (libzmq.so+0x1015e6)
#3 zmq::socket_base_t::process_stop() external/umicom_tcp/src/socket_base.cpp:1537 (libzmq.so+0x1e3710)
#4 zmq::object_t::process_command(zmq::command_t const&) external/umicom_tcp/src/object.cpp:83 (libzmq.so+0x1732b6)
#5 zmq::socket_base_t::process_commands(int, bool) external/umicom_tcp/src/socket_base.cpp:1514 (libzmq.so+0x1e3217)
#6 zmq::socket_base_t::in_event() external/umicom_tcp/src/socket_base.cpp:1696 (libzmq.so+0x1e4a9e)
#7 zmq::epoll_t::loop() external/umicom_tcp/src/epoll.cpp:206 (libzmq.so+0x13c01f)
#8 zmq::worker_poller_base_t::worker_routine(void*) external/umicom_tcp/src/poller_base.cpp:146 (libzmq.so+0x19a81d)
#9 thread_routine external/umicom_tcp/src/thread.cpp:266 (libzmq.so+0x22067e)
Mutex M336 previously acquired by the same thread here:
#0 pthread_mutex_lock ../../../../src/libsanitizer/sanitizer_common/sanitizer_common_interceptors.inc:4240 (libtsan.so.0+0x53908)
#1 zmq::mutex_t::lock() external/umicom_tcp/src/mutex.hpp:135 (libzmq.so+0x100dd0)
#2 zmq::scoped_optional_lock_t::scoped_optional_lock_t(zmq::mutex_t*) external/umicom_tcp/src/mutex.hpp:188 (libzmq.so+0x186d24)
#3 zmq::socket_base_t::in_event() external/umicom_tcp/src/socket_base.cpp:1690 (libzmq.so+0x1e4a42)
#4 zmq::epoll_t::loop() external/umicom_tcp/src/epoll.cpp:206 (libzmq.so+0x13c01f)
#5 zmq::worker_poller_base_t::worker_routine(void*) external/umicom_tcp/src/poller_base.cpp:146 (libzmq.so+0x19a81d)
#6 thread_routine external/umicom_tcp/src/thread.cpp:266 (libzmq.so+0x22067e)
Thread T2 'ZMQbg/Reaper' (tid=62769, running) created by main thread at:
#0 pthread_create ../../../../src/libsanitizer/tsan/tsan_interceptors_posix.cpp:969 (libtsan.so.0+0x605b8)
#1 zmq::thread_t::start(void ()(void), void*, char const*) external/umicom_tcp/src/thread.cpp:277 (libzmq.so+0x2209b0)
#2 zmq::thread_ctx_t::start_thread(zmq::thread_t&, void ()(void), void*, char const*) const external/umicom_tcp/src/ctx.cpp:561 (libzmq.so+0xfd4fd)
#3 zmq::worker_poller_base_t::start(char const*) external/umicom_tcp/src/poller_base.cpp:134 (libzmq.so+0x19a299)
#4 zmq::reaper_t::start() external/umicom_tcp/src/reaper.cpp:74 (libzmq.so+0x1b3156)
#5 zmq::ctx_t::start() external/umicom_tcp/src/ctx.cpp:438 (libzmq.so+0xfcbcf)
#6 zmq::ctx_t::create_socket(int) external/umicom_tcp/src/ctx.cpp:490 (libzmq.so+0xfcfd9)
#7 zmq_socket external/umicom_tcp/src/zmq.cpp:259 (libzmq.so+0x26aa65)
#8 umicom::transport::PollSets::start() external/umicom_tcp/plugin_tcp/v2/poll_sets.cpp:47 (libtcptransport.so+0x3081c)
#9 umicom::transport::UmicomTransportTcp::UmicomTransportTcp() external/umicom_tcp/plugin_tcp/v2/transport_plugin_tcp.cpp:70 (libtcptransport.so+0x3c16b)
#10 void __gnu_cxx::new_allocatorumicom::transport::UmicomTransportTcp::constructumicom::transport::UmicomTransportTcp(umicom::transport::UmicomTransportTcp*) /usr/include/c++/11/ext/new_allocator.h:162 (libtcptransport.so+0x4de00)
#11 void std::allocator_traits<std::allocatorumicom::transport::UmicomTransportTcp >::constructumicom::transport::UmicomTransportTcp(std::allocatorumicom::transport::UmicomTransportTcp&, umicom::transport::UmicomTransportTcp*) /usr/include/c++/11/bits/alloc_traits.h:516 (libtcptransport.so+0x4da2a)
#12 std::_Sp_counted_ptr_inplace<umicom::transport::UmicomTransportTcp, std::allocatorumicom::transport::UmicomTransportTcp, (__gnu_cxx::_Lock_policy)2>::_Sp_counted_ptr_inplace<>(std::allocatorumicom::transport::UmicomTransportTcp) /usr/include/c++/11/bits/shared_ptr_base.h:519 (libtcptransport.so+0x4d1bb)
#13 std::__shared_count<(__gnu_cxx::_Lock_policy)2>::__shared_count<umicom::transport::UmicomTransportTcp, std::allocatorumicom::transport::UmicomTransportTcp>(umicom::transport::UmicomTransportTcp*&, std::_Sp_alloc_shared_tag<std::allocatorumicom::transport::UmicomTransportTcp >) /usr/include/c++/11/bits/shared_ptr_base.h:650 (libtcptransport.so+0x4c3f0)
#14 std::__shared_ptr<umicom::transport::UmicomTransportTcp, (__gnu_cxx::_Lock_policy)2>::__shared_ptr<std::allocatorumicom::transport::UmicomTransportTcp>(std::_Sp_alloc_shared_tag<std::allocatorumicom::transport::UmicomTransportTcp >) /usr/include/c++/11/bits/shared_ptr_base.h:1342 (libtcptransport.so+0x4b75a)
#15 std::shared_ptrumicom::transport::UmicomTransportTcp::shared_ptr<std::allocatorumicom::transport::UmicomTransportTcp>(std::_Sp_alloc_shared_tag<std::allocatorumicom::transport::UmicomTransportTcp >) /usr/include/c++/11/bits/shared_ptr.h:409 (libtcptransport.so+0x4ad55)
#16 std::shared_ptrumicom::transport::UmicomTransportTcp std::allocate_shared<umicom::transport::UmicomTransportTcp, std::allocatorumicom::transport::UmicomTransportTcp>(std::allocatorumicom::transport::UmicomTransportTcp const&) /usr/include/c++/11/bits/shared_ptr.h:863 (libtcptransport.so+0x49f8f)
#17 std::shared_ptrumicom::transport::UmicomTransportTcp std::make_sharedumicom::transport::UmicomTransportTcp() /usr/include/c++/11/bits/shared_ptr.h:879 (libtcptransport.so+0x491de)
#18 micarstd::plugin::plugin_implumicom::transport::UmicomTransportTcp::get_plugin() external/micarstd/plugin/include/micarstd/plugin/plugin.hpp:105 (libtcptransport.so+0x47882)
#19 micarstd::plugin::plugin_manager_impl::load_plugin(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, micarstd::plugin::plugin_type_e, unsigned int) external/micarstd/plugin/src/plugin_manager_impl.cpp:181 (libumicom.so+0x2f55d0)
#20 micarstd::plugin::plugin_manager_impl::get_plugin(micarstd::plugin::plugin_type_e, std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&) external/micarstd/plugin/src/plugin_manager_impl.cpp:124 (libumicom.so+0x2f4a9a)
#21 umicom::common::InitTransportPlugin(std::__cxx11::basic_string<char, std::char_traits, std::allocator >) external/umicom/common/src/channel/plugin_helper.cpp:36 (libumicom.so+0x2e9a52)
#22 umicom::common::ChannelFactory::ChannelFactory() external/umicom/common/src/channel/channel_factory.cpp:51 (libumicom.so+0x2e29ac)
#23 umicom::common::ChannelFactory::getInstance() bazel-out/k8-dbg/bin/external/umicom/common/_virtual_includes/channel_v2/channel/channel_factory.hpp:50 (libumicom.so+0x274996)
#24 umicom::discovery::locator::UnicastLocator::setupReceiver(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, unsigned int) external/umicom/libs/src/discovery_v2/locator/unicast_locator.cpp:106 (libumicom.so+0x2dd353)
#25 umicom::discovery::sdp::ServiceDiscoveryManager::enable(umicom::interface::NodeAttribute const&) external/umicom/libs/src/discovery_v2/sdp/service_discovery_manager.cpp:67 (libumicom.so+0x2a85f7)
#26 umicom::discovery::DiscoveryManager::enable() external/umicom/libs/src/discovery_v2/discovery_manager.cpp:57 (libumicom.so+0x2a5710)
#27 umicom::interface::NodeImpl::enable(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, umicom::interface::NodeAttribute const&, std::unique_ptr<umicom::interface::AbstractUmicomListener, std::default_deleteumicom::interface::AbstractUmicomListener >) external/umicom/libs/src/node_impl.cpp:35 (libumicom.so+0x290f41)
#28 umicom::interface::init(std::__cxx11::basic_string<char, std::char_traits, std::allocator > const&, umicom::interface::NodeAttribute const&, std::unique_ptr<umicom::interface::AbstractUmicomListener, std::default_deleteumicom::interface::AbstractUmicomListener >) external/umicom/libs/src/node.cpp:33 (libumicom.so+0x28d411)
#29 main external/umicom/sample/ci_test/functional/umicom_hello_listener_untype/helloworld_subscriber.cpp:131 (umicom_hello_untype_subscriber+0xaddb)
SUMMARY: ThreadSanitizer: lock-order-inversion (potential deadlock) external/umicom_tcp/src/mutex.hpp:135 in zmq::mutex_t::lock()
ThreadSanitizer: reported 1 warnings
The text was updated successfully, but these errors were encountered: