So I'm aware that memory tracking can get a bit weird with static objects; our memory tracker only tracks memory allocated after tracking is turned on.
Regardless, I'm hitting an issue where we're apparently not freeing 16 bytes allocated by the underlying hash table:
MEMORY ERROR: Undeleted memory at termination.
- 0x249a520 - 16 bytes allocated from:
[01] comn_memorymanager_register(void*, unsigned long) 0x82 code/comn/comn_memorymanager.cpp, line 184
[02] operator new(unsigned long) 0x60 code/comn/comn_newdelete.cpp, line 61
[03] __gnu_cxx::new_allocator<std::__detail::_Hash_node_base*>::allocate(unsigned long, void const*) 0x40 /opt/rh/devtoolset-6/root/usr/include/c /6.3.1/ext/new_allocator.h, line 105
[04] std::allocator_traits<std::allocator<std::__detail::_Hash_node_base*> >::allocate(std::allocator<std::__detail::_Hash_node_base*>&, unsigned long) 0x28 /opt/rh/devtoolset-6/root/usr/include/c /6.3.1/bits/alloc_traits.h, line 436
[05] std::__detail::_Hashtable_alloc<std::allocator<std::__detail::_Hash_node<std::pair<std::string const, std::shared_ptr<spdlog::logger> >, true> > >::_M_allocate_buckets(unsigned long) 0x42 /opt/rh/devtoolset-6/root/usr/include/c /6.3.1/bits/hashtable_policy.h, line 1994
[06] std::_Hashtable<std::string, std::pair<std::string const, std::shared_ptr<spdlog::logger> >, std::allocator<std::pair<std::string const, std::shared_ptr<spdlog::logger> > >, std::__detail::_Select1st, std::equal_to<std::string>, std::hash<std::string>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::_M_allocate_buckets(unsigned long) 0x49 /opt/rh/devtoolset-6/root/usr/include/c /6.3.1/bits/hashtable.h, line 347
[07] std::_Hashtable<std::string, std::pair<std::string const, std::shared_ptr<spdlog::logger> >, std::allocator<std::pair<std::string const, std::shared_ptr<spdlog::logger> > >, std::__detail::_Select1st, std::equal_to<std::string>, std::hash<std::string>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::_M_rehash_aux(unsigned long, std::integral_constant<bool, true>) 0x23 /opt/rh/devtoolset-6/root/usr/include/c /6.3.1/bits/hashtable.h, line 1961
[08] std::_Hashtable<std::string, std::pair<std::string const, std::shared_ptr<spdlog::logger> >, std::allocator<std::pair<std::string const, std::shared_ptr<spdlog::logger> > >, std::__detail::_Select1st, std::equal_to<std::string>, std::hash<std::string>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::_M_rehash(unsigned long, unsigned long const&) 0x2d /opt/rh/devtoolset-6/root/usr/include/c /6.3.1/bits/hashtable.h, line 1940
[09] std::_Hashtable<std::string, std::pair<std::string const, std::shared_ptr<spdlog::logger> >, std::allocator<std::pair<std::string const, std::shared_ptr<spdlog::logger> > >, std::__detail::_Select1st, std::equal_to<std::string>, std::hash<std::string>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true> >::_M_insert_unique_node(unsigned long, unsigned long, std::__detail::_Hash_node<std::pair<std::string const, std::shared_ptr<spdlog::logger> >, true>*) 0x85 /opt/rh/devtoolset-6/root/usr/include/c /6.3.1/bits/hashtable.h, line 1588
[10] std::__detail::_Map_base<std::string, std::pair<std::string const, std::shared_ptr<spdlog::logger> >, std::allocator<std::pair<std::string const, std::shared_ptr<spdlog::logger> > >, std::__detail::_Select1st, std::equal_to<std::string>, std::hash<std::string>, std::__detail::_Mod_range_hashing, std::__detail::_Default_ranged_hash, std::__detail::_Prime_rehash_policy, std::__detail::_Hashtable_traits<true, false, true>, true>::operator[](std::string const&) 0xb5 /opt/rh/devtoolset-6/root/usr/include/c /6.3.1/bits/hashtable_policy.h, line 598
[11] std::unordered_map<std::string, std::shared_ptr<spdlog::logger>, std::hash<std::string>, std::equal_to<std::string>, std::allocator<std::pair<std::string const, std::shared_ptr<spdlog::logger> > > >::operator[](std::string const&) 0x23 /opt/rh/devtoolset-6/root/usr/include/c /6.3.1/bits/unordered_map.h, line 904
[12] spdlog::details::registry_t<std::mutex>::register_logger(std::shared_ptr<spdlog::logger>) 0x74 /usr/local/include/spdlog/details/registry.h, line 38
[13] spdlog::register_logger(std::shared_ptr<spdlog::logger>) 0x37 /usr/local/include/spdlog/details/spdlog_impl.h, line 37
[14] Library::Library(bool, bool, bool, bool) 0xc8 code/library.cpp, line 57
[15] main 0x48 code/test.cpp,
Is there any way to forcibly free this memory?