Uploaded image for project: 'MariaDB Server'
  1. MariaDB Server
  2. MDEV-20315

MyRocks tests produce valgrind failures

Details

    Description

      MyRocks tests produce several valgrind failures. We need to fix them.

      Remaining failures for the test:

      ./mtr --valgrind rocksdb_sys_vars.rocksdb_lock_wait_timeout_basic
      

      ==30698== 24 bytes in 1 blocks are still reachable in loss record 2 of 19
      ==30698==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
      ==30698==    by 0xD0C3865: __gnu_cxx::new_allocator<std::__detail::_Hash_node_base*>::allocate(unsigned long, void const*) (new_allocator.h:111)
      ==30698==    by 0xD0BD988: std::allocator_traits<std::allocator<std::__detail::_Hash_node_base*> >::allocate(std::allocator<std::__detail::_Hash_node_base*>&, unsigned long) (alloc_traits.h:436)
      ==30698==    by 0xD54057B: std::__detail::_Hashtable_alloc<std::allocator<std::__detail::_Hash_node<rocksdb::ThreadStatusData*, false> > >::_M_allocate_buckets(unsigned long) (hashtable_policy.h:2107)
      ==30698==    by 0xD53FEE8: std::_Hashtable<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_allocate_buckets(unsigned long) (hashtable.h:354)
      ==30698==    by 0xD53F1DC: std::_Hashtable<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_rehash_aux(unsigned long, std::integral_constant<bool, true>) (hashtable.h:2092)
      ==30698==    by 0xD53E04E: std::_Hashtable<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_rehash(unsigned long, unsigned long const&) (hashtable.h:2071)
      ==30698==    by 0xD53C8DA: std::_Hashtable<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node<rocksdb::ThreadStatusData*, false>*) (hashtable.h:1718)
      ==30698==    by 0xD53B85C: std::pair<std::__detail::_Node_iterator<rocksdb::ThreadStatusData*, true, false>, bool> std::_Hashtable<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_insert<rocksdb::ThreadStatusData* const&, std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<rocksdb::ThreadStatusData*, false> > > >(rocksdb::ThreadStatusData* const&, std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<rocksdb::ThreadStatusData*, false> > > const&, std::integral_constant<bool, true>) (hashtable.h:1822)
      ==30698==    by 0xD53AAAF: std::__detail::_Insert_base<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::insert(rocksdb::ThreadStatusData* const&) (hashtable_policy.h:843)
      ==30698==    by 0xD539FBA: std::unordered_set<rocksdb::ThreadStatusData*, std::hash<rocksdb::ThreadStatusData*>, std::equal_to<rocksdb::ThreadStatusData*>, std::allocator<rocksdb::ThreadStatusData*> >::insert(rocksdb::ThreadStatusData* const&) (unordered_set.h:420)
      ==30698==    by 0xD537E44: rocksdb::ThreadStatusUpdater::RegisterThread(rocksdb::ThreadStatus::ThreadType, unsigned long) (thread_status_updater.cc:25)
      ==30698==    by 0xD2FD533: rocksdb::ThreadStatusUtil::RegisterThread(rocksdb::Env const*, rocksdb::ThreadStatus::ThreadType) (thread_status_util.cc:24)
      ==30698==    by 0xD56227A: rocksdb::ThreadPoolImpl::Impl::BGThreadWrapper(void*) (threadpool_imp.cc:300)
      ==30698==    by 0xD567D72: void* std::__invoke_impl<void*, void* (*)(void*), rocksdb::BGThreadMetadata*>(std::__invoke_other, void* (*&&)(void*), rocksdb::BGThreadMetadata*&&) (invoke.h:60)
      ==30698==    by 0xD567303: std::__invoke_result<void* (*)(void*), rocksdb::BGThreadMetadata*>::type std::__invoke<void* (*)(void*), rocksdb::BGThreadMetadata*>(void* (*&&)(void*), rocksdb::BGThreadMetadata*&&) (invoke.h:96)
      ==30698== 
      

      ==30698== 24 bytes in 1 blocks are still reachable in loss record 4 of 19
      ==30698==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
      ==30698==    by 0xD0C3865: __gnu_cxx::new_allocator<std::__detail::_Hash_node_base*>::allocate(unsigned long, void const*) (new_allocator.h:111)
      ==30698==    by 0xD0BD988: std::allocator_traits<std::allocator<std::__detail::_Hash_node_base*> >::allocate(std::allocator<std::__detail::_Hash_node_base*>&, unsigned long) (alloc_traits.h:436)
      ==30698==    by 0xD5407B5: std::__detail::_Hashtable_alloc<std::allocator<std::__detail::_Hash_node<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, false> > >::_M_allocate_buckets(unsigned long) (hashtable_policy.h:2107)
      ==30698==    by 0xD540192: std::_Hashtable<void const*, std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, std::allocator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo> >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_allocate_buckets(unsigned long) (hashtable.h:354)
      ==30698==    by 0xD53F756: std::_Hashtable<void const*, std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, std::allocator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo> >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_rehash_aux(unsigned long, std::integral_constant<bool, true>) (hashtable.h:2092)
      ==30698==    by 0xD53E5FE: std::_Hashtable<void const*, std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, std::allocator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo> >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_rehash(unsigned long, unsigned long const&) (hashtable.h:2071)
      ==30698==    by 0xD53D1CE: std::_Hashtable<void const*, std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, std::allocator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo> >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, false>*) (hashtable.h:1718)
      ==30698==    by 0xD53BF6F: std::pair<std::__detail::_Node_iterator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, false, false>, bool> std::_Hashtable<void const*, std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, std::allocator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo> >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_emplace<std::piecewise_construct_t const&, std::tuple<void const*>, std::tuple<void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(std::integral_constant<bool, true>, std::piecewise_construct_t const&, std::tuple<void const*>&&, std::tuple<void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >&&) (hashtable.h:1666)
      ==30698==    by 0xD53B3A3: std::pair<std::__detail::_Node_iterator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, false, false>, bool> std::_Hashtable<void const*, std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, std::allocator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo> >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::emplace<std::piecewise_construct_t const&, std::tuple<void const*>, std::tuple<void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(std::piecewise_construct_t const&, std::tuple<void const*>&&, std::tuple<void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >&&) (hashtable.h:736)
      ==30698==    by 0xD53A861: std::pair<std::__detail::_Node_iterator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, false, false>, bool> std::unordered_map<void const*, rocksdb::ConstantColumnFamilyInfo, std::hash<void const*>, std::equal_to<void const*>, std::allocator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo> > >::emplace<std::piecewise_construct_t const&, std::tuple<void const*>, std::tuple<void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(std::piecewise_construct_t const&, std::tuple<void const*>&&, std::tuple<void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >&&) (unordered_map.h:387)
      ==30698==    by 0xD538B4F: rocksdb::ThreadStatusUpdater::NewColumnFamilyInfo(void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (thread_status_updater.cc:226)
      ==30698==    by 0xD2FD94B: rocksdb::ThreadStatusUtil::NewColumnFamilyInfo(rocksdb::DB const*, rocksdb::ColumnFamilyData const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rocksdb::Env const*) (thread_status_util.cc:128)
      ==30698==    by 0xD1679BA: rocksdb::DBImpl::NewThreadStatusCfInfo(rocksdb::ColumnFamilyData*) const (db_impl.cc:2750)
      ==30698==    by 0xD1C9745: rocksdb::DBImpl::Open(rocksdb::DBOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<rocksdb::ColumnFamilyDescriptor, std::allocator<rocksdb::ColumnFamilyDescriptor> > const&, std::vector<rocksdb::ColumnFamilyHandle*, std::allocator<rocksdb::ColumnFamilyHandle*> >*, rocksdb::DB**, bool, bool) (db_impl_open.cc:1106)
      ==30698==    by 0xD44F516: rocksdb::TransactionDB::Open(rocksdb::DBOptions const&, rocksdb::TransactionDBOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<rocksdb::ColumnFamilyDescriptor, std::allocator<rocksdb::ColumnFamilyDescriptor> > const&, std::vector<rocksdb::ColumnFamilyHandle*, std::allocator<rocksdb::ColumnFamilyHandle*> >*, rocksdb::TransactionDB**) (pessimistic_transaction_db.cc:228)
      ==30698== 
      

      ==30698== 24 bytes in 1 blocks are still reachable in loss record 5 of 19
      ==30698==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
      ==30698==    by 0xD0C3865: __gnu_cxx::new_allocator<std::__detail::_Hash_node_base*>::allocate(unsigned long, void const*) (new_allocator.h:111)
      ==30698==    by 0xD0BD988: std::allocator_traits<std::allocator<std::__detail::_Hash_node_base*> >::allocate(std::allocator<std::__detail::_Hash_node_base*>&, unsigned long) (alloc_traits.h:436)
      ==30698==    by 0xD540397: std::__detail::_Hashtable_alloc<std::allocator<std::__detail::_Hash_node<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, false> > >::_M_allocate_buckets(unsigned long) (hashtable_policy.h:2107)
      ==30698==    by 0xD53FAC0: std::_Hashtable<void const*, std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_allocate_buckets(unsigned long) (hashtable.h:354)
      ==30698==    by 0xD53E932: std::_Hashtable<void const*, std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_rehash_aux(unsigned long, std::integral_constant<bool, true>) (hashtable.h:2092)
      ==30698==    by 0xD53D48E: std::_Hashtable<void const*, std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_rehash(unsigned long, unsigned long const&) (hashtable.h:2071)
      ==30698==    by 0xD53C29E: std::_Hashtable<void const*, std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, false>*) (hashtable.h:1718)
      ==30698==    by 0xD53B4D0: std::__detail::_Map_base<void const*, std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true>, true>::operator[](void const* const&) (hashtable_policy.h:728)
      ==30698==    by 0xD53A890: std::unordered_map<void const*, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> >, std::hash<void const*>, std::equal_to<void const*>, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > > >::operator[](void const* const&) (unordered_map.h:973)
      ==30698==    by 0xD538B75: rocksdb::ThreadStatusUpdater::NewColumnFamilyInfo(void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (thread_status_updater.cc:228)
      ==30698==    by 0xD2FD94B: rocksdb::ThreadStatusUtil::NewColumnFamilyInfo(rocksdb::DB const*, rocksdb::ColumnFamilyData const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rocksdb::Env const*) (thread_status_util.cc:128)
      ==30698==    by 0xD1679BA: rocksdb::DBImpl::NewThreadStatusCfInfo(rocksdb::ColumnFamilyData*) const (db_impl.cc:2750)
      ==30698==    by 0xD1C9745: rocksdb::DBImpl::Open(rocksdb::DBOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<rocksdb::ColumnFamilyDescriptor, std::allocator<rocksdb::ColumnFamilyDescriptor> > const&, std::vector<rocksdb::ColumnFamilyHandle*, std::allocator<rocksdb::ColumnFamilyHandle*> >*, rocksdb::DB**, bool, bool) (db_impl_open.cc:1106)
      ==30698==    by 0xD44F516: rocksdb::TransactionDB::Open(rocksdb::DBOptions const&, rocksdb::TransactionDBOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<rocksdb::ColumnFamilyDescriptor, std::allocator<rocksdb::ColumnFamilyDescriptor> > const&, std::vector<rocksdb::ColumnFamilyHandle*, std::allocator<rocksdb::ColumnFamilyHandle*> >*, rocksdb::TransactionDB**) (pessimistic_transaction_db.cc:228)
      ==30698==    by 0xD064E94: myrocks::rocksdb_init_func(void*) (ha_rocksdb.cc:5141)
      

      Attachments

        Issue Links

          Activity

            psergei Sergei Petrunia created issue -
            psergei Sergei Petrunia made changes -
            Field Original Value New Value
            Summary MyRocks tests produce valgrind failure MyRocks tests produce valgrind failures
            psergei Sergei Petrunia made changes -
            Description MyRocks tests produce several valgrind failures. We need to fix them MyRocks tests produce several valgrind failures. We need to fix them.


            Remaining failures:
            {code}
            ==30698== 24 bytes in 1 blocks are still reachable in loss record 2 of 19
            ==30698== at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
            ==30698== by 0xD0C3865: __gnu_cxx::new_allocator<std::__detail::_Hash_node_base*>::allocate(unsigned long, void const*) (new_allocator.h:111)
            ==30698== by 0xD0BD988: std::allocator_traits<std::allocator<std::__detail::_Hash_node_base*> >::allocate(std::allocator<std::__detail::_Hash_node_base*>&, unsigned long) (alloc_traits.h:436)
            ==30698== by 0xD54057B: std::__detail::_Hashtable_alloc<std::allocator<std::__detail::_Hash_node<rocksdb::ThreadStatusData*, false> > >::_M_allocate_buckets(unsigned long) (hashtable_policy.h:2107)
            ==30698== by 0xD53FEE8: std::_Hashtable<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_allocate_buckets(unsigned long) (hashtable.h:354)
            ==30698== by 0xD53F1DC: std::_Hashtable<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_rehash_aux(unsigned long, std::integral_constant<bool, true>) (hashtable.h:2092)
            ==30698== by 0xD53E04E: std::_Hashtable<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_rehash(unsigned long, unsigned long const&) (hashtable.h:2071)
            ==30698== by 0xD53C8DA: std::_Hashtable<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node<rocksdb::ThreadStatusData*, false>*) (hashtable.h:1718)
            ==30698== by 0xD53B85C: std::pair<std::__detail::_Node_iterator<rocksdb::ThreadStatusData*, true, false>, bool> std::_Hashtable<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_insert<rocksdb::ThreadStatusData* const&, std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<rocksdb::ThreadStatusData*, false> > > >(rocksdb::ThreadStatusData* const&, std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<rocksdb::ThreadStatusData*, false> > > const&, std::integral_constant<bool, true>) (hashtable.h:1822)
            ==30698== by 0xD53AAAF: std::__detail::_Insert_base<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::insert(rocksdb::ThreadStatusData* const&) (hashtable_policy.h:843)
            ==30698== by 0xD539FBA: std::unordered_set<rocksdb::ThreadStatusData*, std::hash<rocksdb::ThreadStatusData*>, std::equal_to<rocksdb::ThreadStatusData*>, std::allocator<rocksdb::ThreadStatusData*> >::insert(rocksdb::ThreadStatusData* const&) (unordered_set.h:420)
            ==30698== by 0xD537E44: rocksdb::ThreadStatusUpdater::RegisterThread(rocksdb::ThreadStatus::ThreadType, unsigned long) (thread_status_updater.cc:25)
            ==30698== by 0xD2FD533: rocksdb::ThreadStatusUtil::RegisterThread(rocksdb::Env const*, rocksdb::ThreadStatus::ThreadType) (thread_status_util.cc:24)
            ==30698== by 0xD56227A: rocksdb::ThreadPoolImpl::Impl::BGThreadWrapper(void*) (threadpool_imp.cc:300)
            ==30698== by 0xD567D72: void* std::__invoke_impl<void*, void* (*)(void*), rocksdb::BGThreadMetadata*>(std::__invoke_other, void* (*&&)(void*), rocksdb::BGThreadMetadata*&&) (invoke.h:60)
            ==30698== by 0xD567303: std::__invoke_result<void* (*)(void*), rocksdb::BGThreadMetadata*>::type std::__invoke<void* (*)(void*), rocksdb::BGThreadMetadata*>(void* (*&&)(void*), rocksdb::BGThreadMetadata*&&) (invoke.h:96)
            ==30698==
            {code}

            {code}
            ==30698== 24 bytes in 1 blocks are still reachable in loss record 4 of 19
            ==30698== at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
            ==30698== by 0xD0C3865: __gnu_cxx::new_allocator<std::__detail::_Hash_node_base*>::allocate(unsigned long, void const*) (new_allocator.h:111)
            ==30698== by 0xD0BD988: std::allocator_traits<std::allocator<std::__detail::_Hash_node_base*> >::allocate(std::allocator<std::__detail::_Hash_node_base*>&, unsigned long) (alloc_traits.h:436)
            ==30698== by 0xD5407B5: std::__detail::_Hashtable_alloc<std::allocator<std::__detail::_Hash_node<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, false> > >::_M_allocate_buckets(unsigned long) (hashtable_policy.h:2107)
            ==30698== by 0xD540192: std::_Hashtable<void const*, std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, std::allocator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo> >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_allocate_buckets(unsigned long) (hashtable.h:354)
            ==30698== by 0xD53F756: std::_Hashtable<void const*, std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, std::allocator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo> >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_rehash_aux(unsigned long, std::integral_constant<bool, true>) (hashtable.h:2092)
            ==30698== by 0xD53E5FE: std::_Hashtable<void const*, std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, std::allocator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo> >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_rehash(unsigned long, unsigned long const&) (hashtable.h:2071)
            ==30698== by 0xD53D1CE: std::_Hashtable<void const*, std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, std::allocator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo> >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, false>*) (hashtable.h:1718)
            ==30698== by 0xD53BF6F: std::pair<std::__detail::_Node_iterator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, false, false>, bool> std::_Hashtable<void const*, std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, std::allocator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo> >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_emplace<std::piecewise_construct_t const&, std::tuple<void const*>, std::tuple<void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(std::integral_constant<bool, true>, std::piecewise_construct_t const&, std::tuple<void const*>&&, std::tuple<void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >&&) (hashtable.h:1666)
            ==30698== by 0xD53B3A3: std::pair<std::__detail::_Node_iterator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, false, false>, bool> std::_Hashtable<void const*, std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, std::allocator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo> >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::emplace<std::piecewise_construct_t const&, std::tuple<void const*>, std::tuple<void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(std::piecewise_construct_t const&, std::tuple<void const*>&&, std::tuple<void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >&&) (hashtable.h:736)
            ==30698== by 0xD53A861: std::pair<std::__detail::_Node_iterator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, false, false>, bool> std::unordered_map<void const*, rocksdb::ConstantColumnFamilyInfo, std::hash<void const*>, std::equal_to<void const*>, std::allocator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo> > >::emplace<std::piecewise_construct_t const&, std::tuple<void const*>, std::tuple<void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(std::piecewise_construct_t const&, std::tuple<void const*>&&, std::tuple<void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >&&) (unordered_map.h:387)
            ==30698== by 0xD538B4F: rocksdb::ThreadStatusUpdater::NewColumnFamilyInfo(void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (thread_status_updater.cc:226)
            ==30698== by 0xD2FD94B: rocksdb::ThreadStatusUtil::NewColumnFamilyInfo(rocksdb::DB const*, rocksdb::ColumnFamilyData const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rocksdb::Env const*) (thread_status_util.cc:128)
            ==30698== by 0xD1679BA: rocksdb::DBImpl::NewThreadStatusCfInfo(rocksdb::ColumnFamilyData*) const (db_impl.cc:2750)
            ==30698== by 0xD1C9745: rocksdb::DBImpl::Open(rocksdb::DBOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<rocksdb::ColumnFamilyDescriptor, std::allocator<rocksdb::ColumnFamilyDescriptor> > const&, std::vector<rocksdb::ColumnFamilyHandle*, std::allocator<rocksdb::ColumnFamilyHandle*> >*, rocksdb::DB**, bool, bool) (db_impl_open.cc:1106)
            ==30698== by 0xD44F516: rocksdb::TransactionDB::Open(rocksdb::DBOptions const&, rocksdb::TransactionDBOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<rocksdb::ColumnFamilyDescriptor, std::allocator<rocksdb::ColumnFamilyDescriptor> > const&, std::vector<rocksdb::ColumnFamilyHandle*, std::allocator<rocksdb::ColumnFamilyHandle*> >*, rocksdb::TransactionDB**) (pessimistic_transaction_db.cc:228)
            ==30698==
            {code}

            {code}
            ==30698== 24 bytes in 1 blocks are still reachable in loss record 5 of 19
            ==30698== at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
            ==30698== by 0xD0C3865: __gnu_cxx::new_allocator<std::__detail::_Hash_node_base*>::allocate(unsigned long, void const*) (new_allocator.h:111)
            ==30698== by 0xD0BD988: std::allocator_traits<std::allocator<std::__detail::_Hash_node_base*> >::allocate(std::allocator<std::__detail::_Hash_node_base*>&, unsigned long) (alloc_traits.h:436)
            ==30698== by 0xD540397: std::__detail::_Hashtable_alloc<std::allocator<std::__detail::_Hash_node<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, false> > >::_M_allocate_buckets(unsigned long) (hashtable_policy.h:2107)
            ==30698== by 0xD53FAC0: std::_Hashtable<void const*, std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_allocate_buckets(unsigned long) (hashtable.h:354)
            ==30698== by 0xD53E932: std::_Hashtable<void const*, std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_rehash_aux(unsigned long, std::integral_constant<bool, true>) (hashtable.h:2092)
            ==30698== by 0xD53D48E: std::_Hashtable<void const*, std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_rehash(unsigned long, unsigned long const&) (hashtable.h:2071)
            ==30698== by 0xD53C29E: std::_Hashtable<void const*, std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, false>*) (hashtable.h:1718)
            ==30698== by 0xD53B4D0: std::__detail::_Map_base<void const*, std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true>, true>::operator[](void const* const&) (hashtable_policy.h:728)
            ==30698== by 0xD53A890: std::unordered_map<void const*, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> >, std::hash<void const*>, std::equal_to<void const*>, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > > >::operator[](void const* const&) (unordered_map.h:973)
            ==30698== by 0xD538B75: rocksdb::ThreadStatusUpdater::NewColumnFamilyInfo(void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (thread_status_updater.cc:228)
            ==30698== by 0xD2FD94B: rocksdb::ThreadStatusUtil::NewColumnFamilyInfo(rocksdb::DB const*, rocksdb::ColumnFamilyData const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rocksdb::Env const*) (thread_status_util.cc:128)
            ==30698== by 0xD1679BA: rocksdb::DBImpl::NewThreadStatusCfInfo(rocksdb::ColumnFamilyData*) const (db_impl.cc:2750)
            ==30698== by 0xD1C9745: rocksdb::DBImpl::Open(rocksdb::DBOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<rocksdb::ColumnFamilyDescriptor, std::allocator<rocksdb::ColumnFamilyDescriptor> > const&, std::vector<rocksdb::ColumnFamilyHandle*, std::allocator<rocksdb::ColumnFamilyHandle*> >*, rocksdb::DB**, bool, bool) (db_impl_open.cc:1106)
            ==30698== by 0xD44F516: rocksdb::TransactionDB::Open(rocksdb::DBOptions const&, rocksdb::TransactionDBOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<rocksdb::ColumnFamilyDescriptor, std::allocator<rocksdb::ColumnFamilyDescriptor> > const&, std::vector<rocksdb::ColumnFamilyHandle*, std::allocator<rocksdb::ColumnFamilyHandle*> >*, rocksdb::TransactionDB**) (pessimistic_transaction_db.cc:228)
            ==30698== by 0xD064E94: myrocks::rocksdb_init_func(void*) (ha_rocksdb.cc:5141)
            {code}
            psergei Sergei Petrunia added a comment - - edited

            Imported valgrind.supp from the upstream.
            Which valgrind.supp to use?

            • 10.2 has the new MyRocks, merged in June, 2019
            • 10.5 still has an older MyRocks, merged in Aug, 2018.

            Differences in valgrind.supp in the upstream:

            diff -u  ~/valgrind.supp-aug23-2018  ~/valgrind.supp-jun14-2019
            --- /home/psergey/valgrind.supp-aug23-2018      2019-08-11 16:48:39.992730979 +0300
            +++ /home/psergey/valgrind.supp-jun14-2019      2019-08-11 16:53:46.776180725 +0300
            @@ -1276,6 +1276,20 @@
             }
             
             {
            +   TLS data on main thread is not cleaned up properly
            +   Memcheck:Leak
            +   match-leak-kinds: reachable
            +   ...
            +   fun:vasprintf
            +   fun:asprintf
            +   fun:dlerror
            +   fun:dlfcn_load
            +   fun:DSO_load
            +   fun:DSO_dsobyaddr
            +   ...
            +}
            +
            +{
                Valgrind complains about std::unordered_map ctor in ha_rocksdb
                Memcheck:Leak
                match-leak-kinds: definite
            

            So, using older/newer valgrind.supp doesn't make a difference for the failures we are getting.

            psergei Sergei Petrunia added a comment - - edited Imported valgrind.supp from the upstream. Which valgrind.supp to use? 10.2 has the new MyRocks, merged in June, 2019 10.5 still has an older MyRocks, merged in Aug, 2018. Differences in valgrind.supp in the upstream: diff -u ~/valgrind.supp-aug23-2018 ~/valgrind.supp-jun14-2019 --- /home/psergey/valgrind.supp-aug23-2018 2019-08-11 16:48:39.992730979 +0300 +++ /home/psergey/valgrind.supp-jun14-2019 2019-08-11 16:53:46.776180725 +0300 @@ -1276,6 +1276,20 @@ } { + TLS data on main thread is not cleaned up properly + Memcheck:Leak + match-leak-kinds: reachable + ... + fun:vasprintf + fun:asprintf + fun:dlerror + fun:dlfcn_load + fun:DSO_load + fun:DSO_dsobyaddr + ... +} + +{ Valgrind complains about std::unordered_map ctor in ha_rocksdb Memcheck:Leak match-leak-kinds: definite So, using older/newer valgrind.supp doesn't make a difference for the failures we are getting.
            psergei Sergei Petrunia made changes -
            Description MyRocks tests produce several valgrind failures. We need to fix them.


            Remaining failures:
            {code}
            ==30698== 24 bytes in 1 blocks are still reachable in loss record 2 of 19
            ==30698== at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
            ==30698== by 0xD0C3865: __gnu_cxx::new_allocator<std::__detail::_Hash_node_base*>::allocate(unsigned long, void const*) (new_allocator.h:111)
            ==30698== by 0xD0BD988: std::allocator_traits<std::allocator<std::__detail::_Hash_node_base*> >::allocate(std::allocator<std::__detail::_Hash_node_base*>&, unsigned long) (alloc_traits.h:436)
            ==30698== by 0xD54057B: std::__detail::_Hashtable_alloc<std::allocator<std::__detail::_Hash_node<rocksdb::ThreadStatusData*, false> > >::_M_allocate_buckets(unsigned long) (hashtable_policy.h:2107)
            ==30698== by 0xD53FEE8: std::_Hashtable<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_allocate_buckets(unsigned long) (hashtable.h:354)
            ==30698== by 0xD53F1DC: std::_Hashtable<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_rehash_aux(unsigned long, std::integral_constant<bool, true>) (hashtable.h:2092)
            ==30698== by 0xD53E04E: std::_Hashtable<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_rehash(unsigned long, unsigned long const&) (hashtable.h:2071)
            ==30698== by 0xD53C8DA: std::_Hashtable<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node<rocksdb::ThreadStatusData*, false>*) (hashtable.h:1718)
            ==30698== by 0xD53B85C: std::pair<std::__detail::_Node_iterator<rocksdb::ThreadStatusData*, true, false>, bool> std::_Hashtable<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_insert<rocksdb::ThreadStatusData* const&, std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<rocksdb::ThreadStatusData*, false> > > >(rocksdb::ThreadStatusData* const&, std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<rocksdb::ThreadStatusData*, false> > > const&, std::integral_constant<bool, true>) (hashtable.h:1822)
            ==30698== by 0xD53AAAF: std::__detail::_Insert_base<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::insert(rocksdb::ThreadStatusData* const&) (hashtable_policy.h:843)
            ==30698== by 0xD539FBA: std::unordered_set<rocksdb::ThreadStatusData*, std::hash<rocksdb::ThreadStatusData*>, std::equal_to<rocksdb::ThreadStatusData*>, std::allocator<rocksdb::ThreadStatusData*> >::insert(rocksdb::ThreadStatusData* const&) (unordered_set.h:420)
            ==30698== by 0xD537E44: rocksdb::ThreadStatusUpdater::RegisterThread(rocksdb::ThreadStatus::ThreadType, unsigned long) (thread_status_updater.cc:25)
            ==30698== by 0xD2FD533: rocksdb::ThreadStatusUtil::RegisterThread(rocksdb::Env const*, rocksdb::ThreadStatus::ThreadType) (thread_status_util.cc:24)
            ==30698== by 0xD56227A: rocksdb::ThreadPoolImpl::Impl::BGThreadWrapper(void*) (threadpool_imp.cc:300)
            ==30698== by 0xD567D72: void* std::__invoke_impl<void*, void* (*)(void*), rocksdb::BGThreadMetadata*>(std::__invoke_other, void* (*&&)(void*), rocksdb::BGThreadMetadata*&&) (invoke.h:60)
            ==30698== by 0xD567303: std::__invoke_result<void* (*)(void*), rocksdb::BGThreadMetadata*>::type std::__invoke<void* (*)(void*), rocksdb::BGThreadMetadata*>(void* (*&&)(void*), rocksdb::BGThreadMetadata*&&) (invoke.h:96)
            ==30698==
            {code}

            {code}
            ==30698== 24 bytes in 1 blocks are still reachable in loss record 4 of 19
            ==30698== at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
            ==30698== by 0xD0C3865: __gnu_cxx::new_allocator<std::__detail::_Hash_node_base*>::allocate(unsigned long, void const*) (new_allocator.h:111)
            ==30698== by 0xD0BD988: std::allocator_traits<std::allocator<std::__detail::_Hash_node_base*> >::allocate(std::allocator<std::__detail::_Hash_node_base*>&, unsigned long) (alloc_traits.h:436)
            ==30698== by 0xD5407B5: std::__detail::_Hashtable_alloc<std::allocator<std::__detail::_Hash_node<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, false> > >::_M_allocate_buckets(unsigned long) (hashtable_policy.h:2107)
            ==30698== by 0xD540192: std::_Hashtable<void const*, std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, std::allocator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo> >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_allocate_buckets(unsigned long) (hashtable.h:354)
            ==30698== by 0xD53F756: std::_Hashtable<void const*, std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, std::allocator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo> >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_rehash_aux(unsigned long, std::integral_constant<bool, true>) (hashtable.h:2092)
            ==30698== by 0xD53E5FE: std::_Hashtable<void const*, std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, std::allocator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo> >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_rehash(unsigned long, unsigned long const&) (hashtable.h:2071)
            ==30698== by 0xD53D1CE: std::_Hashtable<void const*, std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, std::allocator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo> >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, false>*) (hashtable.h:1718)
            ==30698== by 0xD53BF6F: std::pair<std::__detail::_Node_iterator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, false, false>, bool> std::_Hashtable<void const*, std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, std::allocator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo> >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_emplace<std::piecewise_construct_t const&, std::tuple<void const*>, std::tuple<void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(std::integral_constant<bool, true>, std::piecewise_construct_t const&, std::tuple<void const*>&&, std::tuple<void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >&&) (hashtable.h:1666)
            ==30698== by 0xD53B3A3: std::pair<std::__detail::_Node_iterator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, false, false>, bool> std::_Hashtable<void const*, std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, std::allocator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo> >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::emplace<std::piecewise_construct_t const&, std::tuple<void const*>, std::tuple<void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(std::piecewise_construct_t const&, std::tuple<void const*>&&, std::tuple<void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >&&) (hashtable.h:736)
            ==30698== by 0xD53A861: std::pair<std::__detail::_Node_iterator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, false, false>, bool> std::unordered_map<void const*, rocksdb::ConstantColumnFamilyInfo, std::hash<void const*>, std::equal_to<void const*>, std::allocator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo> > >::emplace<std::piecewise_construct_t const&, std::tuple<void const*>, std::tuple<void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(std::piecewise_construct_t const&, std::tuple<void const*>&&, std::tuple<void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >&&) (unordered_map.h:387)
            ==30698== by 0xD538B4F: rocksdb::ThreadStatusUpdater::NewColumnFamilyInfo(void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (thread_status_updater.cc:226)
            ==30698== by 0xD2FD94B: rocksdb::ThreadStatusUtil::NewColumnFamilyInfo(rocksdb::DB const*, rocksdb::ColumnFamilyData const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rocksdb::Env const*) (thread_status_util.cc:128)
            ==30698== by 0xD1679BA: rocksdb::DBImpl::NewThreadStatusCfInfo(rocksdb::ColumnFamilyData*) const (db_impl.cc:2750)
            ==30698== by 0xD1C9745: rocksdb::DBImpl::Open(rocksdb::DBOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<rocksdb::ColumnFamilyDescriptor, std::allocator<rocksdb::ColumnFamilyDescriptor> > const&, std::vector<rocksdb::ColumnFamilyHandle*, std::allocator<rocksdb::ColumnFamilyHandle*> >*, rocksdb::DB**, bool, bool) (db_impl_open.cc:1106)
            ==30698== by 0xD44F516: rocksdb::TransactionDB::Open(rocksdb::DBOptions const&, rocksdb::TransactionDBOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<rocksdb::ColumnFamilyDescriptor, std::allocator<rocksdb::ColumnFamilyDescriptor> > const&, std::vector<rocksdb::ColumnFamilyHandle*, std::allocator<rocksdb::ColumnFamilyHandle*> >*, rocksdb::TransactionDB**) (pessimistic_transaction_db.cc:228)
            ==30698==
            {code}

            {code}
            ==30698== 24 bytes in 1 blocks are still reachable in loss record 5 of 19
            ==30698== at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
            ==30698== by 0xD0C3865: __gnu_cxx::new_allocator<std::__detail::_Hash_node_base*>::allocate(unsigned long, void const*) (new_allocator.h:111)
            ==30698== by 0xD0BD988: std::allocator_traits<std::allocator<std::__detail::_Hash_node_base*> >::allocate(std::allocator<std::__detail::_Hash_node_base*>&, unsigned long) (alloc_traits.h:436)
            ==30698== by 0xD540397: std::__detail::_Hashtable_alloc<std::allocator<std::__detail::_Hash_node<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, false> > >::_M_allocate_buckets(unsigned long) (hashtable_policy.h:2107)
            ==30698== by 0xD53FAC0: std::_Hashtable<void const*, std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_allocate_buckets(unsigned long) (hashtable.h:354)
            ==30698== by 0xD53E932: std::_Hashtable<void const*, std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_rehash_aux(unsigned long, std::integral_constant<bool, true>) (hashtable.h:2092)
            ==30698== by 0xD53D48E: std::_Hashtable<void const*, std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_rehash(unsigned long, unsigned long const&) (hashtable.h:2071)
            ==30698== by 0xD53C29E: std::_Hashtable<void const*, std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, false>*) (hashtable.h:1718)
            ==30698== by 0xD53B4D0: std::__detail::_Map_base<void const*, std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true>, true>::operator[](void const* const&) (hashtable_policy.h:728)
            ==30698== by 0xD53A890: std::unordered_map<void const*, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> >, std::hash<void const*>, std::equal_to<void const*>, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > > >::operator[](void const* const&) (unordered_map.h:973)
            ==30698== by 0xD538B75: rocksdb::ThreadStatusUpdater::NewColumnFamilyInfo(void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (thread_status_updater.cc:228)
            ==30698== by 0xD2FD94B: rocksdb::ThreadStatusUtil::NewColumnFamilyInfo(rocksdb::DB const*, rocksdb::ColumnFamilyData const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rocksdb::Env const*) (thread_status_util.cc:128)
            ==30698== by 0xD1679BA: rocksdb::DBImpl::NewThreadStatusCfInfo(rocksdb::ColumnFamilyData*) const (db_impl.cc:2750)
            ==30698== by 0xD1C9745: rocksdb::DBImpl::Open(rocksdb::DBOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<rocksdb::ColumnFamilyDescriptor, std::allocator<rocksdb::ColumnFamilyDescriptor> > const&, std::vector<rocksdb::ColumnFamilyHandle*, std::allocator<rocksdb::ColumnFamilyHandle*> >*, rocksdb::DB**, bool, bool) (db_impl_open.cc:1106)
            ==30698== by 0xD44F516: rocksdb::TransactionDB::Open(rocksdb::DBOptions const&, rocksdb::TransactionDBOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<rocksdb::ColumnFamilyDescriptor, std::allocator<rocksdb::ColumnFamilyDescriptor> > const&, std::vector<rocksdb::ColumnFamilyHandle*, std::allocator<rocksdb::ColumnFamilyHandle*> >*, rocksdb::TransactionDB**) (pessimistic_transaction_db.cc:228)
            ==30698== by 0xD064E94: myrocks::rocksdb_init_func(void*) (ha_rocksdb.cc:5141)
            {code}
            MyRocks tests produce several valgrind failures. We need to fix them.


            Remaining failures for the test:
            {code}
            ./mtr --valgrind rocksdb_sys_vars.rocksdb_lock_wait_timeout_basic
            {code}

            {code}
            ==30698== 24 bytes in 1 blocks are still reachable in loss record 2 of 19
            ==30698== at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
            ==30698== by 0xD0C3865: __gnu_cxx::new_allocator<std::__detail::_Hash_node_base*>::allocate(unsigned long, void const*) (new_allocator.h:111)
            ==30698== by 0xD0BD988: std::allocator_traits<std::allocator<std::__detail::_Hash_node_base*> >::allocate(std::allocator<std::__detail::_Hash_node_base*>&, unsigned long) (alloc_traits.h:436)
            ==30698== by 0xD54057B: std::__detail::_Hashtable_alloc<std::allocator<std::__detail::_Hash_node<rocksdb::ThreadStatusData*, false> > >::_M_allocate_buckets(unsigned long) (hashtable_policy.h:2107)
            ==30698== by 0xD53FEE8: std::_Hashtable<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_allocate_buckets(unsigned long) (hashtable.h:354)
            ==30698== by 0xD53F1DC: std::_Hashtable<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_rehash_aux(unsigned long, std::integral_constant<bool, true>) (hashtable.h:2092)
            ==30698== by 0xD53E04E: std::_Hashtable<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_rehash(unsigned long, unsigned long const&) (hashtable.h:2071)
            ==30698== by 0xD53C8DA: std::_Hashtable<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node<rocksdb::ThreadStatusData*, false>*) (hashtable.h:1718)
            ==30698== by 0xD53B85C: std::pair<std::__detail::_Node_iterator<rocksdb::ThreadStatusData*, true, false>, bool> std::_Hashtable<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_insert<rocksdb::ThreadStatusData* const&, std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<rocksdb::ThreadStatusData*, false> > > >(rocksdb::ThreadStatusData* const&, std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<rocksdb::ThreadStatusData*, false> > > const&, std::integral_constant<bool, true>) (hashtable.h:1822)
            ==30698== by 0xD53AAAF: std::__detail::_Insert_base<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::insert(rocksdb::ThreadStatusData* const&) (hashtable_policy.h:843)
            ==30698== by 0xD539FBA: std::unordered_set<rocksdb::ThreadStatusData*, std::hash<rocksdb::ThreadStatusData*>, std::equal_to<rocksdb::ThreadStatusData*>, std::allocator<rocksdb::ThreadStatusData*> >::insert(rocksdb::ThreadStatusData* const&) (unordered_set.h:420)
            ==30698== by 0xD537E44: rocksdb::ThreadStatusUpdater::RegisterThread(rocksdb::ThreadStatus::ThreadType, unsigned long) (thread_status_updater.cc:25)
            ==30698== by 0xD2FD533: rocksdb::ThreadStatusUtil::RegisterThread(rocksdb::Env const*, rocksdb::ThreadStatus::ThreadType) (thread_status_util.cc:24)
            ==30698== by 0xD56227A: rocksdb::ThreadPoolImpl::Impl::BGThreadWrapper(void*) (threadpool_imp.cc:300)
            ==30698== by 0xD567D72: void* std::__invoke_impl<void*, void* (*)(void*), rocksdb::BGThreadMetadata*>(std::__invoke_other, void* (*&&)(void*), rocksdb::BGThreadMetadata*&&) (invoke.h:60)
            ==30698== by 0xD567303: std::__invoke_result<void* (*)(void*), rocksdb::BGThreadMetadata*>::type std::__invoke<void* (*)(void*), rocksdb::BGThreadMetadata*>(void* (*&&)(void*), rocksdb::BGThreadMetadata*&&) (invoke.h:96)
            ==30698==
            {code}

            {code}
            ==30698== 24 bytes in 1 blocks are still reachable in loss record 4 of 19
            ==30698== at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
            ==30698== by 0xD0C3865: __gnu_cxx::new_allocator<std::__detail::_Hash_node_base*>::allocate(unsigned long, void const*) (new_allocator.h:111)
            ==30698== by 0xD0BD988: std::allocator_traits<std::allocator<std::__detail::_Hash_node_base*> >::allocate(std::allocator<std::__detail::_Hash_node_base*>&, unsigned long) (alloc_traits.h:436)
            ==30698== by 0xD5407B5: std::__detail::_Hashtable_alloc<std::allocator<std::__detail::_Hash_node<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, false> > >::_M_allocate_buckets(unsigned long) (hashtable_policy.h:2107)
            ==30698== by 0xD540192: std::_Hashtable<void const*, std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, std::allocator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo> >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_allocate_buckets(unsigned long) (hashtable.h:354)
            ==30698== by 0xD53F756: std::_Hashtable<void const*, std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, std::allocator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo> >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_rehash_aux(unsigned long, std::integral_constant<bool, true>) (hashtable.h:2092)
            ==30698== by 0xD53E5FE: std::_Hashtable<void const*, std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, std::allocator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo> >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_rehash(unsigned long, unsigned long const&) (hashtable.h:2071)
            ==30698== by 0xD53D1CE: std::_Hashtable<void const*, std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, std::allocator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo> >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, false>*) (hashtable.h:1718)
            ==30698== by 0xD53BF6F: std::pair<std::__detail::_Node_iterator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, false, false>, bool> std::_Hashtable<void const*, std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, std::allocator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo> >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_emplace<std::piecewise_construct_t const&, std::tuple<void const*>, std::tuple<void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(std::integral_constant<bool, true>, std::piecewise_construct_t const&, std::tuple<void const*>&&, std::tuple<void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >&&) (hashtable.h:1666)
            ==30698== by 0xD53B3A3: std::pair<std::__detail::_Node_iterator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, false, false>, bool> std::_Hashtable<void const*, std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, std::allocator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo> >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::emplace<std::piecewise_construct_t const&, std::tuple<void const*>, std::tuple<void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(std::piecewise_construct_t const&, std::tuple<void const*>&&, std::tuple<void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >&&) (hashtable.h:736)
            ==30698== by 0xD53A861: std::pair<std::__detail::_Node_iterator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo>, false, false>, bool> std::unordered_map<void const*, rocksdb::ConstantColumnFamilyInfo, std::hash<void const*>, std::equal_to<void const*>, std::allocator<std::pair<void const* const, rocksdb::ConstantColumnFamilyInfo> > >::emplace<std::piecewise_construct_t const&, std::tuple<void const*>, std::tuple<void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > > >(std::piecewise_construct_t const&, std::tuple<void const*>&&, std::tuple<void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >&&) (unordered_map.h:387)
            ==30698== by 0xD538B4F: rocksdb::ThreadStatusUpdater::NewColumnFamilyInfo(void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (thread_status_updater.cc:226)
            ==30698== by 0xD2FD94B: rocksdb::ThreadStatusUtil::NewColumnFamilyInfo(rocksdb::DB const*, rocksdb::ColumnFamilyData const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rocksdb::Env const*) (thread_status_util.cc:128)
            ==30698== by 0xD1679BA: rocksdb::DBImpl::NewThreadStatusCfInfo(rocksdb::ColumnFamilyData*) const (db_impl.cc:2750)
            ==30698== by 0xD1C9745: rocksdb::DBImpl::Open(rocksdb::DBOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<rocksdb::ColumnFamilyDescriptor, std::allocator<rocksdb::ColumnFamilyDescriptor> > const&, std::vector<rocksdb::ColumnFamilyHandle*, std::allocator<rocksdb::ColumnFamilyHandle*> >*, rocksdb::DB**, bool, bool) (db_impl_open.cc:1106)
            ==30698== by 0xD44F516: rocksdb::TransactionDB::Open(rocksdb::DBOptions const&, rocksdb::TransactionDBOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<rocksdb::ColumnFamilyDescriptor, std::allocator<rocksdb::ColumnFamilyDescriptor> > const&, std::vector<rocksdb::ColumnFamilyHandle*, std::allocator<rocksdb::ColumnFamilyHandle*> >*, rocksdb::TransactionDB**) (pessimistic_transaction_db.cc:228)
            ==30698==
            {code}

            {code}
            ==30698== 24 bytes in 1 blocks are still reachable in loss record 5 of 19
            ==30698== at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
            ==30698== by 0xD0C3865: __gnu_cxx::new_allocator<std::__detail::_Hash_node_base*>::allocate(unsigned long, void const*) (new_allocator.h:111)
            ==30698== by 0xD0BD988: std::allocator_traits<std::allocator<std::__detail::_Hash_node_base*> >::allocate(std::allocator<std::__detail::_Hash_node_base*>&, unsigned long) (alloc_traits.h:436)
            ==30698== by 0xD540397: std::__detail::_Hashtable_alloc<std::allocator<std::__detail::_Hash_node<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, false> > >::_M_allocate_buckets(unsigned long) (hashtable_policy.h:2107)
            ==30698== by 0xD53FAC0: std::_Hashtable<void const*, std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_allocate_buckets(unsigned long) (hashtable.h:354)
            ==30698== by 0xD53E932: std::_Hashtable<void const*, std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_rehash_aux(unsigned long, std::integral_constant<bool, true>) (hashtable.h:2092)
            ==30698== by 0xD53D48E: std::_Hashtable<void const*, std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_rehash(unsigned long, unsigned long const&) (hashtable.h:2071)
            ==30698== by 0xD53C29E: std::_Hashtable<void const*, std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, false>*) (hashtable.h:1718)
            ==30698== by 0xD53B4D0: std::__detail::_Map_base<void const*, std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true>, true>::operator[](void const* const&) (hashtable_policy.h:728)
            ==30698== by 0xD53A890: std::unordered_map<void const*, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> >, std::hash<void const*>, std::equal_to<void const*>, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > > >::operator[](void const* const&) (unordered_map.h:973)
            ==30698== by 0xD538B75: rocksdb::ThreadStatusUpdater::NewColumnFamilyInfo(void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (thread_status_updater.cc:228)
            ==30698== by 0xD2FD94B: rocksdb::ThreadStatusUtil::NewColumnFamilyInfo(rocksdb::DB const*, rocksdb::ColumnFamilyData const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rocksdb::Env const*) (thread_status_util.cc:128)
            ==30698== by 0xD1679BA: rocksdb::DBImpl::NewThreadStatusCfInfo(rocksdb::ColumnFamilyData*) const (db_impl.cc:2750)
            ==30698== by 0xD1C9745: rocksdb::DBImpl::Open(rocksdb::DBOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<rocksdb::ColumnFamilyDescriptor, std::allocator<rocksdb::ColumnFamilyDescriptor> > const&, std::vector<rocksdb::ColumnFamilyHandle*, std::allocator<rocksdb::ColumnFamilyHandle*> >*, rocksdb::DB**, bool, bool) (db_impl_open.cc:1106)
            ==30698== by 0xD44F516: rocksdb::TransactionDB::Open(rocksdb::DBOptions const&, rocksdb::TransactionDBOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<rocksdb::ColumnFamilyDescriptor, std::allocator<rocksdb::ColumnFamilyDescriptor> > const&, std::vector<rocksdb::ColumnFamilyHandle*, std::allocator<rocksdb::ColumnFamilyHandle*> >*, rocksdb::TransactionDB**) (pessimistic_transaction_db.cc:228)
            ==30698== by 0xD064E94: myrocks::rocksdb_init_func(void*) (ha_rocksdb.cc:5141)
            {code}
            psergei Sergei Petrunia added a comment - - edited

            Looking at the last failure,

            ==30698== 24 bytes in 1 blocks are still reachable in loss record 5 of 19
            ==30698==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
            ==30698==    by 0xD0C3865: __gnu_cxx::new_allocator<std::__detail::_Hash_node_base*>::allocate(unsigned long, void const*) (new_allocator.h:111)
            ==30698==    by 0xD0BD988: std::allocator_traits<std::allocator<std::__detail::_Hash_node_base*> >::allocate(std::allocator<std::__detail::_Hash_node_base*>&, unsigned long) (alloc_traits.h:436)
            ==30698==    by 0xD540397: std::__detail::_Hashtable_alloc<std::allocator<std::__detail::_Hash_node<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, false> > >::_M_allocate_buckets(unsigned long) (hashtable_policy.h:2107)
            ==30698==    by 0xD53FAC0: std::_Hashtable<void const*, std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_allocate_buckets(unsigned long) (hashtable.h:354)
            ==30698==    by 0xD53E932: std::_Hashtable<void const*, std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_rehash_aux(unsigned long, std::integral_constant<bool, true>) (hashtable.h:2092)
            ==30698==    by 0xD53D48E: std::_Hashtable<void const*, std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_rehash(unsigned long, unsigned long const&) (hashtable.h:2071)
            ==30698==    by 0xD53C29E: std::_Hashtable<void const*, std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, false>*) (hashtable.h:1718)
            ==30698==    by 0xD53B4D0: std::__detail::_Map_base<void const*, std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true>, true>::operator[](void const* const&) (hashtable_policy.h:728)
            ==30698==    by 0xD53A890: std::unordered_map<void const*, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> >, std::hash<void const*>, std::equal_to<void const*>, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > > >::operator[](void const* const&) (unordered_map.h:973)
            ==30698==    by 0xD538B75: rocksdb::ThreadStatusUpdater::NewColumnFamilyInfo(void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (thread_status_updater.cc:228)
            ==30698==    by 0xD2FD94B: rocksdb::ThreadStatusUtil::NewColumnFamilyInfo(rocksdb::DB const*, rocksdb::ColumnFamilyData const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rocksdb::Env const*) (thread_status_util.cc:128)
            ==30698==    by 0xD1679BA: rocksdb::DBImpl::NewThreadStatusCfInfo(rocksdb::ColumnFamilyData*) const (db_impl.cc:2750)
            ==30698==    by 0xD1C9745: rocksdb::DBImpl::Open(rocksdb::DBOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<rocksdb::ColumnFamilyDescriptor, std::allocator<rocksdb::ColumnFamilyDescriptor> > const&, std::vector<rocksdb::ColumnFamilyHandle*, std::allocator<rocksdb::ColumnFamilyHandle*> >*, rocksdb::DB**, bool, bool) (db_impl_open.cc:1106)
            ==30698==    by 0xD44F516: rocksdb::TransactionDB::Open(rocksdb::DBOptions const&, rocksdb::TransactionDBOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<rocksdb::ColumnFamilyDescriptor, std::allocator<rocksdb::ColumnFamilyDescriptor> > const&, std::vector<rocksdb::ColumnFamilyHandle*, std::allocator<rocksdb::ColumnFamilyHandle*> >*, rocksdb::TransactionDB**) (pessimistic_transaction_db.cc:228)
            ==30698==    by 0xD064E94: myrocks::rocksdb_init_func(void*) (ha_rocksdb.cc:5141)
            

            and the first valgrind suppression:

            {
               Still reachable for once-per-process initializations
               Memcheck:Leak
               match-leak-kinds: reachable
               ...
               fun:_ZN7rocksdb16ThreadStatusUtil19NewColumnFamilyInfoEPKNS_2DBEPKNS_16ColumnFamilyDataERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKNS_3EnvE
               fun:_ZNK7rocksdb6DBImpl21NewThreadStatusCfInfoEPNS_16ColumnFamilyDataE
               fun:_ZN7rocksdb2DB4OpenERKNS_9DBOptionsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorINS_22ColumnFamilyDescriptorESaISD_EEPSC_IPNS_18ColumnFamilyHandleESaISJ_EEPPS0_
               fun:_ZN7rocksdb13TransactionDB4OpenERKNS_9DBOptionsERKNS_20TransactionDBOptionsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorINS_22ColumnFamilyDescriptorESaISG_EEPSF_IPNS_18ColumnFamilyHandleESaISM_EEPPS0_
               fun:_ZN7myrocksL17rocksdb_init_funcEPv
            }
            

            Passing suppression code through c++filt :

               fun:rocksdb::DBImpl::NewThreadStatusCfInfo(rocksdb::ColumnFamilyData*) const
               fun:rocksdb::DB::Open(rocksdb::DBOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<rocksdb::ColumnFamilyDescriptor, std::allocator<rocksdb::ColumnFamilyDescriptor> > const&, std::vector<rocksdb::ColumnFamilyHandle*, std::allocator<rocksdb::ColumnFamilyHandle*> >*, rocksdb::DB**)
               fun:rocksdb::TransactionDB::Open(rocksdb::DBOptions const&, rocksdb::TransactionDBOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<rocksdb::ColumnFamilyDescriptor, std::allocator<rocksdb::ColumnFamilyDescriptor> > const&, std::vector<rocksdb::ColumnFamilyHandle*, std::allocator<rocksdb::ColumnFamilyHandle*> >*, rocksdb::TransactionDB**)
               fun:myrocks::rocksdb_init_func(void*)
            

            The difference is this line:

            rocksdb::DBImpl::Open(rocksdb::DBOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<rocksdb::ColumnFamilyDescriptor, std::allocator<rocksdb::ColumnFamilyDescriptor> > const&, std::vector<rocksdb::ColumnFamilyHandle*, std::allocator<rocksdb::ColumnFamilyHandle*> >*, rocksdb::DB**, bool, bool) (db_impl_open.cc:1106)
            fun:rocksdb::DB::Open(rocksdb::DBOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<rocksdb::ColumnFamilyDescriptor, std::allocator<rocksdb::ColumnFamilyDescriptor> > const&, std::vector<rocksdb::ColumnFamilyHandle*, std::allocator<rocksdb::ColumnFamilyHandle*> >*, rocksdb::DB**)
            

            DBImpl::Open vs DB::Open (also the list of arguments is slightly different).

            psergei Sergei Petrunia added a comment - - edited Looking at the last failure, ==30698== 24 bytes in 1 blocks are still reachable in loss record 5 of 19 ==30698== at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==30698== by 0xD0C3865: __gnu_cxx::new_allocator<std::__detail::_Hash_node_base*>::allocate(unsigned long, void const*) (new_allocator.h:111) ==30698== by 0xD0BD988: std::allocator_traits<std::allocator<std::__detail::_Hash_node_base*> >::allocate(std::allocator<std::__detail::_Hash_node_base*>&, unsigned long) (alloc_traits.h:436) ==30698== by 0xD540397: std::__detail::_Hashtable_alloc<std::allocator<std::__detail::_Hash_node<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, false> > >::_M_allocate_buckets(unsigned long) (hashtable_policy.h:2107) ==30698== by 0xD53FAC0: std::_Hashtable<void const*, std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_allocate_buckets(unsigned long) (hashtable.h:354) ==30698== by 0xD53E932: std::_Hashtable<void const*, std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_rehash_aux(unsigned long, std::integral_constant<bool, true>) (hashtable.h:2092) ==30698== by 0xD53D48E: std::_Hashtable<void const*, std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_rehash(unsigned long, unsigned long const&) (hashtable.h:2071) ==30698== by 0xD53C29E: std::_Hashtable<void const*, std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true> >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, false>*) (hashtable.h:1718) ==30698== by 0xD53B4D0: std::__detail::_Map_base<void const*, std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > >, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > >, std::__detail::_Select1st, std::equal_to<void const*>, std::hash<void const*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, false, true>, true>::operator[](void const* const&) (hashtable_policy.h:728) ==30698== by 0xD53A890: std::unordered_map<void const*, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> >, std::hash<void const*>, std::equal_to<void const*>, std::allocator<std::pair<void const* const, std::unordered_set<void const*, std::hash<void const*>, std::equal_to<void const*>, std::allocator<void const*> > > > >::operator[](void const* const&) (unordered_map.h:973) ==30698== by 0xD538B75: rocksdb::ThreadStatusUpdater::NewColumnFamilyInfo(void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, void const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&) (thread_status_updater.cc:228) ==30698== by 0xD2FD94B: rocksdb::ThreadStatusUtil::NewColumnFamilyInfo(rocksdb::DB const*, rocksdb::ColumnFamilyData const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, rocksdb::Env const*) (thread_status_util.cc:128) ==30698== by 0xD1679BA: rocksdb::DBImpl::NewThreadStatusCfInfo(rocksdb::ColumnFamilyData*) const (db_impl.cc:2750) ==30698== by 0xD1C9745: rocksdb::DBImpl::Open(rocksdb::DBOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<rocksdb::ColumnFamilyDescriptor, std::allocator<rocksdb::ColumnFamilyDescriptor> > const&, std::vector<rocksdb::ColumnFamilyHandle*, std::allocator<rocksdb::ColumnFamilyHandle*> >*, rocksdb::DB**, bool, bool) (db_impl_open.cc:1106) ==30698== by 0xD44F516: rocksdb::TransactionDB::Open(rocksdb::DBOptions const&, rocksdb::TransactionDBOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<rocksdb::ColumnFamilyDescriptor, std::allocator<rocksdb::ColumnFamilyDescriptor> > const&, std::vector<rocksdb::ColumnFamilyHandle*, std::allocator<rocksdb::ColumnFamilyHandle*> >*, rocksdb::TransactionDB**) (pessimistic_transaction_db.cc:228) ==30698== by 0xD064E94: myrocks::rocksdb_init_func(void*) (ha_rocksdb.cc:5141) and the first valgrind suppression: { Still reachable for once-per-process initializations Memcheck:Leak match-leak-kinds: reachable ... fun:_ZN7rocksdb16ThreadStatusUtil19NewColumnFamilyInfoEPKNS_2DBEPKNS_16ColumnFamilyDataERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEEPKNS_3EnvE fun:_ZNK7rocksdb6DBImpl21NewThreadStatusCfInfoEPNS_16ColumnFamilyDataE fun:_ZN7rocksdb2DB4OpenERKNS_9DBOptionsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorINS_22ColumnFamilyDescriptorESaISD_EEPSC_IPNS_18ColumnFamilyHandleESaISJ_EEPPS0_ fun:_ZN7rocksdb13TransactionDB4OpenERKNS_9DBOptionsERKNS_20TransactionDBOptionsERKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEERKSt6vectorINS_22ColumnFamilyDescriptorESaISG_EEPSF_IPNS_18ColumnFamilyHandleESaISM_EEPPS0_ fun:_ZN7myrocksL17rocksdb_init_funcEPv } Passing suppression code through c++filt : fun:rocksdb::DBImpl::NewThreadStatusCfInfo(rocksdb::ColumnFamilyData*) const fun:rocksdb::DB::Open(rocksdb::DBOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<rocksdb::ColumnFamilyDescriptor, std::allocator<rocksdb::ColumnFamilyDescriptor> > const&, std::vector<rocksdb::ColumnFamilyHandle*, std::allocator<rocksdb::ColumnFamilyHandle*> >*, rocksdb::DB**) fun:rocksdb::TransactionDB::Open(rocksdb::DBOptions const&, rocksdb::TransactionDBOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<rocksdb::ColumnFamilyDescriptor, std::allocator<rocksdb::ColumnFamilyDescriptor> > const&, std::vector<rocksdb::ColumnFamilyHandle*, std::allocator<rocksdb::ColumnFamilyHandle*> >*, rocksdb::TransactionDB**) fun:myrocks::rocksdb_init_func(void*) The difference is this line: rocksdb::DBImpl::Open(rocksdb::DBOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<rocksdb::ColumnFamilyDescriptor, std::allocator<rocksdb::ColumnFamilyDescriptor> > const&, std::vector<rocksdb::ColumnFamilyHandle*, std::allocator<rocksdb::ColumnFamilyHandle*> >*, rocksdb::DB**, bool, bool) (db_impl_open.cc:1106) fun:rocksdb::DB::Open(rocksdb::DBOptions const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&, std::vector<rocksdb::ColumnFamilyDescriptor, std::allocator<rocksdb::ColumnFamilyDescriptor> > const&, std::vector<rocksdb::ColumnFamilyHandle*, std::allocator<rocksdb::ColumnFamilyHandle*> >*, rocksdb::DB**) DBImpl::Open vs DB::Open (also the list of arguments is slightly different).

            .. and the second reason that suppression doesn't work is that we are hitting the --num-callers=16 limit that MTR sets for valgrind. If I change DB::Open to DBImpl::Open and comment out the

               fun:_ZN7myrocksL17rocksdb_init_funcEPv
            

            it works .

            psergei Sergei Petrunia added a comment - .. and the second reason that suppression doesn't work is that we are hitting the --num-callers=16 limit that MTR sets for valgrind. If I change DB::Open to DBImpl::Open and comment out the fun:_ZN7myrocksL17rocksdb_init_funcEPv it works .

            The other failure

            ==32648== 24 bytes in 1 blocks are still reachable in loss record 2 of 19
            ==32648==    at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
            ==32648==    by 0xD0C3865: __gnu_cxx::new_allocator<std::__detail::_Hash_node_base*>::allocate(unsigned long, void const*) (new_allocator.h:111)
            ==32648==    by 0xD0BD988: std::allocator_traits<std::allocator<std::__detail::_Hash_node_base*> >::allocate(std::allocator<std::__detail::_Hash_node_base*>&, unsigned long) (alloc_traits.h:436)
            ==32648==    by 0xD54057B: std::__detail::_Hashtable_alloc<std::allocator<std::__detail::_Hash_node<rocksdb::ThreadStatusData*, false> > >::_M_allocate_buckets(unsigned long) (hashtable_policy.h:2107)
            ==32648==    by 0xD53FEE8: std::_Hashtable<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_allocate_buckets(unsigned long) (hashtable.h:354)
            ==32648==    by 0xD53F1DC: std::_Hashtable<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_rehash_aux(unsigned long, std::integral_constant<bool, true>) (hashtable.h:2092)
            ==32648==    by 0xD53E04E: std::_Hashtable<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_rehash(unsigned long, unsigned long const&) (hashtable.h:2071)
            ==32648==    by 0xD53C8DA: std::_Hashtable<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node<rocksdb::ThreadStatusData*, false>*) (hashtable.h:1718)
            ==32648==    by 0xD53B85C: std::pair<std::__detail::_Node_iterator<rocksdb::ThreadStatusData*, true, false>, bool> std::_Hashtable<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_insert<rocksdb::ThreadStatusData* const&, std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<rocksdb::ThreadStatusData*, false> > > >(rocksdb::ThreadStatusData* const&, std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<rocksdb::ThreadStatusData*, false> > > const&, std::integral_constant<bool, true>) (hashtable.h:1822)
            ==32648==    by 0xD53AAAF: std::__detail::_Insert_base<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::insert(rocksdb::ThreadStatusData* const&) (hashtable_policy.h:843)
            ==32648==    by 0xD539FBA: std::unordered_set<rocksdb::ThreadStatusData*, std::hash<rocksdb::ThreadStatusData*>, std::equal_to<rocksdb::ThreadStatusData*>, std::allocator<rocksdb::ThreadStatusData*> >::insert(rocksdb::ThreadStatusData* const&) (unordered_set.h:420)
            ==32648==    by 0xD537E44: rocksdb::ThreadStatusUpdater::RegisterThread(rocksdb::ThreadStatus::ThreadType, unsigned long) (thread_status_updater.cc:25)
            ==32648==    by 0xD2FD533: rocksdb::ThreadStatusUtil::RegisterThread(rocksdb::Env const*, rocksdb::ThreadStatus::ThreadType) (thread_status_util.cc:24)
            ==32648==    by 0xD56227A: rocksdb::ThreadPoolImpl::Impl::BGThreadWrapper(void*) (threadpool_imp.cc:300)
            ==32648==    by 0xD567D72: void* std::__invoke_impl<void*, void* (*)(void*), rocksdb::BGThreadMetadata*>(std::__invoke_other, void* (*&&)(void*), rocksdb::BGThreadMetadata*&&) (invoke.h:60)
            ==32648==    by 0xD567303: std::__invoke_result<void* (*)(void*), rocksdb::BGThreadMetadata*>::type std::__invoke<void* (*)(void*), rocksdb::BGThreadMetadata*>(void* (*&&)(void*), rocksdb::BGThreadMetadata*&&) (invoke.h:96)
            

            there is a suppression to address it:

            {
               Still reachable for once-per-process initializations
               Memcheck:Leak
               match-leak-kinds: reachable
               ...
               fun:_ZN7rocksdb19ThreadStatusUpdater14RegisterThreadENS_12ThreadStatus10ThreadTypeEm
               fun:_ZN7rocksdb16ThreadStatusUtil14RegisterThreadEPKNS_3EnvENS_12ThreadStatus10ThreadTypeE
               fun:_ZN7rocksdb14ThreadPoolImpl4Impl15BGThreadWrapperEPv
               fun:_ZNSt12_Bind_simpleIFPFPvS0_EPN7rocksdb16BGThreadMetadataEEE9_M_invokeIILm0EEEES0_St12_Index_tupleIIXspT_EEE
               ...
            }
            

            but it doesn't match, because the last stack frame is

               fun:_ZNSt12_Bind_simpleIFPFPvS0_EPN7rocksdb16BGThreadMetadataEEE9_M_invokeIILm0EEEES0_St12_Index_tupleIIXspT_EEE
            

            un-mangled:

               fun:void* std::_Bind_simple<void* (*(rocksdb::BGThreadMetadata*))(void*)>::_M_invoke<0ul>(std::_Index_tuple<0ul>)
            

            while the execution has this:

            ==32648==    by 0xD567D72: void* std::__invoke_impl<void*, void* (*)(void*), rocksdb::BGThreadMetadata*>(std::__invoke_other, void* (*&&)(void*), rocksdb::BGThreadMetadata*&&) (invoke.h:60)
            

            psergei Sergei Petrunia added a comment - The other failure ==32648== 24 bytes in 1 blocks are still reachable in loss record 2 of 19 ==32648== at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==32648== by 0xD0C3865: __gnu_cxx::new_allocator<std::__detail::_Hash_node_base*>::allocate(unsigned long, void const*) (new_allocator.h:111) ==32648== by 0xD0BD988: std::allocator_traits<std::allocator<std::__detail::_Hash_node_base*> >::allocate(std::allocator<std::__detail::_Hash_node_base*>&, unsigned long) (alloc_traits.h:436) ==32648== by 0xD54057B: std::__detail::_Hashtable_alloc<std::allocator<std::__detail::_Hash_node<rocksdb::ThreadStatusData*, false> > >::_M_allocate_buckets(unsigned long) (hashtable_policy.h:2107) ==32648== by 0xD53FEE8: std::_Hashtable<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_allocate_buckets(unsigned long) (hashtable.h:354) ==32648== by 0xD53F1DC: std::_Hashtable<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_rehash_aux(unsigned long, std::integral_constant<bool, true>) (hashtable.h:2092) ==32648== by 0xD53E04E: std::_Hashtable<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_rehash(unsigned long, unsigned long const&) (hashtable.h:2071) ==32648== by 0xD53C8DA: std::_Hashtable<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node<rocksdb::ThreadStatusData*, false>*) (hashtable.h:1718) ==32648== by 0xD53B85C: std::pair<std::__detail::_Node_iterator<rocksdb::ThreadStatusData*, true, false>, bool> std::_Hashtable<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::_M_insert<rocksdb::ThreadStatusData* const&, std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<rocksdb::ThreadStatusData*, false> > > >(rocksdb::ThreadStatusData* const&, std::__detail::_AllocNode<std::allocator<std::__detail::_Hash_node<rocksdb::ThreadStatusData*, false> > > const&, std::integral_constant<bool, true>) (hashtable.h:1822) ==32648== by 0xD53AAAF: std::__detail::_Insert_base<rocksdb::ThreadStatusData*, rocksdb::ThreadStatusData*, std::allocator<rocksdb::ThreadStatusData*>, std::__detail::_Identity, std::equal_to<rocksdb::ThreadStatusData*>, std::hash<rocksdb::ThreadStatusData*>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<false, true, true> >::insert(rocksdb::ThreadStatusData* const&) (hashtable_policy.h:843) ==32648== by 0xD539FBA: std::unordered_set<rocksdb::ThreadStatusData*, std::hash<rocksdb::ThreadStatusData*>, std::equal_to<rocksdb::ThreadStatusData*>, std::allocator<rocksdb::ThreadStatusData*> >::insert(rocksdb::ThreadStatusData* const&) (unordered_set.h:420) ==32648== by 0xD537E44: rocksdb::ThreadStatusUpdater::RegisterThread(rocksdb::ThreadStatus::ThreadType, unsigned long) (thread_status_updater.cc:25) ==32648== by 0xD2FD533: rocksdb::ThreadStatusUtil::RegisterThread(rocksdb::Env const*, rocksdb::ThreadStatus::ThreadType) (thread_status_util.cc:24) ==32648== by 0xD56227A: rocksdb::ThreadPoolImpl::Impl::BGThreadWrapper(void*) (threadpool_imp.cc:300) ==32648== by 0xD567D72: void* std::__invoke_impl<void*, void* (*)(void*), rocksdb::BGThreadMetadata*>(std::__invoke_other, void* (*&&)(void*), rocksdb::BGThreadMetadata*&&) (invoke.h:60) ==32648== by 0xD567303: std::__invoke_result<void* (*)(void*), rocksdb::BGThreadMetadata*>::type std::__invoke<void* (*)(void*), rocksdb::BGThreadMetadata*>(void* (*&&)(void*), rocksdb::BGThreadMetadata*&&) (invoke.h:96) there is a suppression to address it: { Still reachable for once-per-process initializations Memcheck:Leak match-leak-kinds: reachable ... fun:_ZN7rocksdb19ThreadStatusUpdater14RegisterThreadENS_12ThreadStatus10ThreadTypeEm fun:_ZN7rocksdb16ThreadStatusUtil14RegisterThreadEPKNS_3EnvENS_12ThreadStatus10ThreadTypeE fun:_ZN7rocksdb14ThreadPoolImpl4Impl15BGThreadWrapperEPv fun:_ZNSt12_Bind_simpleIFPFPvS0_EPN7rocksdb16BGThreadMetadataEEE9_M_invokeIILm0EEEES0_St12_Index_tupleIIXspT_EEE ... } but it doesn't match, because the last stack frame is fun:_ZNSt12_Bind_simpleIFPFPvS0_EPN7rocksdb16BGThreadMetadataEEE9_M_invokeIILm0EEEES0_St12_Index_tupleIIXspT_EEE un-mangled: fun:void* std::_Bind_simple<void* (*(rocksdb::BGThreadMetadata*))(void*)>::_M_invoke<0ul>(std::_Index_tuple<0ul>) while the execution has this: ==32648== by 0xD567D72: void* std::__invoke_impl<void*, void* (*)(void*), rocksdb::BGThreadMetadata*>(std::__invoke_other, void* (*&&)(void*), rocksdb::BGThreadMetadata*&&) (invoke.h:60)
            psergei Sergei Petrunia made changes -
            psergei Sergei Petrunia made changes -

            Closing as currently the failures are suppressed (like in the upstream)

            psergei Sergei Petrunia added a comment - Closing as currently the failures are suppressed (like in the upstream)
            psergei Sergei Petrunia made changes -
            Component/s Storage Engine - RocksDB [ 13901 ]
            Fix Version/s 10.2.27 [ 23717 ]
            Fix Version/s 10.3.18 [ 23719 ]
            Fix Version/s 10.4.8 [ 23721 ]
            Fix Version/s 10.2 [ 14601 ]
            Fix Version/s 10.3 [ 22126 ]
            Fix Version/s 10.4 [ 22408 ]
            Resolution Fixed [ 1 ]
            Status Open [ 1 ] Closed [ 6 ]
            serg Sergei Golubchik made changes -
            Workflow MariaDB v3 [ 98866 ] MariaDB v4 [ 156605 ]

            People

              psergei Sergei Petrunia
              psergei Sergei Petrunia
              Votes:
              0 Vote for this issue
              Watchers:
              1 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved:

                Git Integration

                  Error rendering 'com.xiplink.jira.git.jira_git_plugin:git-issue-webpanel'. Please contact your Jira administrators.