Kea issueshttps://gitlab.isc.org/isc-projects/kea/-/issues2020-05-25T10:12:20Zhttps://gitlab.isc.org/isc-projects/kea/-/issues/1249changes for release 1.7.82020-05-25T10:12:20ZMichal Nowikowskichanges for release 1.7.8kea1.7.8Michal NowikowskiMichal Nowikowskihttps://gitlab.isc.org/isc-projects/kea/-/issues/1246bump up libs and hooks versions before 1.7.82020-05-22T19:00:21ZMichal Nowikowskibump up libs and hooks versions before 1.7.8kea1.7.8Razvan BecheriuRazvan Becheriuhttps://gitlab.isc.org/isc-projects/kea/-/issues/1242Config backend: low performance on loading large number of subnets2020-05-29T21:28:09ZMarcin SiodelskiConfig backend: low performance on loading large number of subnetsWe have been chasing the problem with long time taking to fetch large number of subnets from the MySQL config backend. This was narrowed down as a problem with indexing on the dhcp4_options table referencing subnets. The indexing must be...We have been chasing the problem with long time taking to fetch large number of subnets from the MySQL config backend. This was narrowed down as a problem with indexing on the dhcp4_options table referencing subnets. The indexing must be corrected and we need to investigate if there are other similar problems in the schema.kea1.7.8Marcin SiodelskiMarcin Siodelskihttps://gitlab.isc.org/isc-projects/kea/-/issues/1237hammer: add support for building kea on alpine 3.112020-05-15T08:11:07ZMichal Nowikowskihammer: add support for building kea on alpine 3.11kea1.7.8https://gitlab.isc.org/isc-projects/kea/-/issues/1236Release version type check introduced a compiler warning2020-05-19T13:47:02ZThomas MarkwalderRelease version type check introduced a compiler warningUnder Ubuntu 18.04, I now get warnings like this:
```
mv -f .deps/dhcp6_messages.Tpo .deps/dhcp6_messages.Plo
g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../src/lib -I../../../src/lib -I../../../src/bin -I../../../src/bin -I../../../src...Under Ubuntu 18.04, I now get warnings like this:
```
mv -f .deps/dhcp6_messages.Tpo .deps/dhcp6_messages.Plo
g++ -DHAVE_CONFIG_H -I. -I../../.. -I../../../src/lib -I../../../src/lib -I../../../src/bin -I../../../src/bin -I../../../src -I../../../src -isystem /opt/boost/boost_1_63_0 -DOS_LINUX -Wno-unused-variable -Wall -Wextra -Wnon-virtual-dtor -Wwrite-strings -Woverloaded-virtual -Wno-sign-compare -pthread -Wno-missing-field-initializers -fPIC -g -O2 -MT main.o -MD -MP -MF .deps/main.Tpo -c -o main.o main.cc
main.cc: In function ‘int main(int, char**)’:
main.cc:223:37: warning: comparison with string literal results in unspecified behavior [-Waddress]
if (PACKAGE_VERSION_TYPE == "development") {
```
This corrects it:
```
diff --git a/src/bin/dhcp6/main.cc b/src/bin/dhcp6/main.cc
index f24322055a..4e690a6cf4 100644
--- a/src/bin/dhcp6/main.cc
+++ b/src/bin/dhcp6/main.cc
@@ -220,7 +220,7 @@ main(int argc, char* argv[]) {
.arg(VERSION)
.arg(PACKAGE_VERSION_TYPE);
- if (PACKAGE_VERSION_TYPE == "development") {
+ if (std::string(PACKAGE_VERSION_TYPE) == "development") {
LOG_WARN(dhcp6_logger, DHCP6_DEVELOPMENT_VERSION);
}
```kea1.7.8Francis DupontFrancis Duponthttps://gitlab.isc.org/isc-projects/kea/-/issues/1229hammer: add support for building kea on fedora 32 and ubuntu 20.042020-05-15T05:36:14ZMichal Nowikowskihammer: add support for building kea on fedora 32 and ubuntu 20.04kea1.7.8Michal NowikowskiMichal Nowikowskihttps://gitlab.isc.org/isc-projects/kea/-/issues/1227refactor HooksManager and remove conditionallyInitialize to handle functions ...2020-05-15T18:29:22ZRazvan Becheriurefactor HooksManager and remove conditionallyInitialize to handle functions without locks in MTthe only reason conditionallyInitialize exists is because when loadingLibraries is failing, the lm_collaction_ is reset to null, or if loadLibraries is not called, to be able to call related functions.
In the state when lm_collection_ i...the only reason conditionallyInitialize exists is because when loadingLibraries is failing, the lm_collaction_ is reset to null, or if loadLibraries is not called, to be able to call related functions.
In the state when lm_collection_ is null , any function needing it will create a dummy one by calling conditionallyInitialize.
If we initialize lm_collection_ on constructor (with a dummy just like conditionallyInitialize does), and also initialize when loadLibraries fails, we can completely remove conditionallyInitialize.
This is important because it is not safe to use conditionallyInitialize from hooks points without locking, so we can completely avoid this by explicitly initializing lm_collection_ and never have to handle the null case.
needed by #1137 kea1.7.8Razvan BecheriuRazvan Becheriuhttps://gitlab.isc.org/isc-projects/kea/-/issues/1226config-test must be Kea thread safe.2020-05-20T13:07:17ZFrancis Dupontconfig-test must be Kea thread safe.At least two reasons: dlopen() from hook library verification, runtime option definitions.
The checkconfig of control servers must use a multi-threading critical section.At least two reasons: dlopen() from hook library verification, runtime option definitions.
The checkconfig of control servers must use a multi-threading critical section.kea1.7.8Francis DupontFrancis Duponthttps://gitlab.isc.org/isc-projects/kea/-/issues/1224Move to bison 3.6.22020-05-19T13:36:49ZFrancis DupontMove to bison 3.6.2Moving to bison 3.6.2Moving to bison 3.6.2kea1.7.8Francis DupontFrancis Duponthttps://gitlab.isc.org/isc-projects/kea/-/issues/1222kea compiled with --enable-debug crash when -V/-v/-h command line option used2020-05-26T21:04:28ZWlodzimierz Wencelkea compiled with --enable-debug crash when -V/-v/-h command line option used```
wlodek@ubuntu20-64-1:~$ /home/wlodek/kea_bin/sbin/kea-dhcp6 -V
1.7.8-git
git 6b4df52e0bf3a6fd781f6f5b182555df7e80230f
linked with:
log4cplus 1.1.2
OpenSSL 1.1.1f 31 Mar 2020
database:
MySQL backend 9.1, library 8.0.20
PostgreSQL bac...```
wlodek@ubuntu20-64-1:~$ /home/wlodek/kea_bin/sbin/kea-dhcp6 -V
1.7.8-git
git 6b4df52e0bf3a6fd781f6f5b182555df7e80230f
linked with:
log4cplus 1.1.2
OpenSSL 1.1.1f 31 Mar 2020
database:
MySQL backend 9.1, library 8.0.20
PostgreSQL backend 6.0, library 120002
Memfile backend 2.1
free(): double free detected in tcache 2
Aborted (core dumped)
wlodek@ubuntu20-64-1:~$ /home/wlodek/kea_bin/sbin/kea-dhcp6 -v
1.7.8-git
free(): double free detected in tcache 2
Aborted (core dumped)
wlodek@ubuntu20-64-1:~$ /home/wlodek/kea_bin/sbin/kea-dhcp6 -h
/home/wlodek/kea_bin/sbin/kea-dhcp6: invalid option -- 'h'
Kea DHCPv6 server, version 1.7.8-git
Usage: kea-dhcp6 -[v|V|W] [-d] [-{c|t} cfgfile] [-p number] [-P number]
-v: print version number and exit.
-V: print extended version and exit
-W: display the configuration report and exit
-d: debug mode with extra verbosity (former -v)
-c file: specify configuration file
-t file: check the configuration file syntax and exit
-p number: specify non-standard server port number 1-65535 (useful for testing only)
-P number: specify non-standard client port number 1-65535 (useful for testing only)
free(): double free detected in tcache 2
Aborted (core dumped)
```kea1.7.8https://gitlab.isc.org/isc-projects/kea/-/issues/1219make the HA hook multi-threading safe2020-05-21T16:12:18ZFrancis Dupontmake the HA hook multi-threading safeCurrently it is a design ticket to find remaining problems, for instance the HA hook disables packet processing but with MT there are more than one way to do this (and the feature by itself can be required to be MT safe).
Note this tick...Currently it is a design ticket to find remaining problems, for instance the HA hook disables packet processing but with MT there are more than one way to do this (and the feature by itself can be required to be MT safe).
Note this ticket can provide some indications for #1147 i.e. not try to avoid races when they are unconditionally impossible.kea1.7.8Francis DupontFrancis Duponthttps://gitlab.isc.org/isc-projects/kea/-/issues/1217host cache invalid read after free reported by valgrind and tsan - not MT rel...2020-05-06T18:07:10ZRazvan Becheriuhost cache invalid read after free reported by valgrind and tsan - not MT relatedread after heap free
I believe this is related to the fact that we keep a reference of an iterator while deleting (invalidating) it.
valgrind:
```
--9629-- REDIR: 0x81a0720 (libc.so.6:__strnlen_avx2) redirected to 0x4c32c90 (strnlen)
p...read after heap free
I believe this is related to the fact that we keep a reference of an iterator while deleting (invalidating) it.
valgrind:
```
--9629-- REDIR: 0x81a0720 (libc.so.6:__strnlen_avx2) redirected to 0x4c32c90 (strnlen)
profiling:/home/razvan/isc/git/kea-work/ext/gtest/libgtest_a-gtest-all.gcda:Version mismatch - expected A75* got A74*
==9629==
==9629== HEAP SUMMARY:
==9629== in use at exit: 0 bytes in 0 blocks
==9629== total heap usage: 9,420 allocs, 9,420 frees, 845,980 bytes allocated
==9629==
==9629== All heap blocks were freed -- no leaks are possible
==9629==
==9629== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
==9629==
==9629== 1 errors in context 1 of 1:
==9629== Invalid read of size 8
==9629== at 0x1F3253: hash_value<isc::dhcp::Host> (shared_ptr.hpp:1153)
==9629== by 0x1F3253: operator() (extensions.hpp:262)
==9629== by 0x1F3253: find<boost::shared_ptr<isc::dhcp::Host>, boost::hash<boost::shared_ptr<isc::dhcp::Host> >, std::equal_to<boost::shared_ptr<isc::dhcp::Host> > > (hashed_index.hpp:1527)
==9629== by 0x1F3253: find<boost::shared_ptr<isc::dhcp::Host>, boost::hash<boost::shared_ptr<isc::dhcp::Host> >, std::equal_to<boost::shared_ptr<isc::dhcp::Host> > > (hashed_index.hpp:482)
==9629== by 0x1F3253: find<boost::shared_ptr<isc::dhcp::Host> > (hashed_index.hpp:471)
==9629== by 0x1F3253: isc::host_cache::HostCacheImpl::remove(boost::shared_ptr<isc::dhcp::Host> const&) (host_cache_impl.cc:458)
==9629== by 0x1F3623: isc::host_cache::HostCacheImpl::del6[abi:cxx11](unsigned int const&, isc::asiolink::IOAddress const&) (host_cache_impl.cc:397)
==9629== by 0x1E1153: isc::host_cache::HostCache::cacheRemoveHandler(isc::hooks::CalloutHandle&) (host_cache.cc:887)
==9629== by 0x19F669: (anonymous namespace)::removeHandler(boost::shared_ptr<isc::host_cache::HostCache>, isc::hooks::CalloutHandle&) (command_unittests.cc:324)
==9629== by 0x1D0505: operator()<int, int (*)(boost::shared_ptr<isc::host_cache::HostCache>, isc::hooks::CalloutHandle&), boost::_bi::rrlist1<isc::hooks::CalloutHandle&> > (bind.hpp:309)
==9629== by 0x1D0505: operator()<isc::hooks::CalloutHandle&> (bind.hpp:1306)
==9629== by 0x1D0505: boost::detail::function::function_obj_invoker1<boost::_bi::bind_t<int, int (*)(boost::shared_ptr<isc::host_cache::HostCache>, isc::hooks::CalloutHandle&), boost::_bi::list2<boost::_bi::value<boost::shared_ptr<isc::host_cache::HostCache> >, boost::arg<1> > >, int, isc::hooks::CalloutHandle&>::invoke(boost::detail::function::function_buffer&, isc::hooks::CalloutHandle&) (function_template.hpp:138)
==9629== by 0x1A90EB: operator() (function_template.hpp:760)
==9629== by 0x1A90EB: (anonymous namespace)::CommandTest::checkCommand(boost::function<int (isc::hooks::CalloutHandle&)>, boost::shared_ptr<isc::data::Element const>, int, int, boost::shared_ptr<isc::data::Element const>) [clone .isra.222] (command_unittests.cc:143)
==9629== by 0x1AA653: (anonymous namespace)::CommandTest::checkCommand(boost::function<int (isc::hooks::CalloutHandle&)>, boost::shared_ptr<isc::data::Element const>, int, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) [clone .isra.225] (command_unittests.cc:177)
==9629== by 0x1AC198: (anonymous namespace)::CommandTest_global_Test::TestBody() (command_unittests.cc:905)
==9629== by 0x2DFF79: HandleSehExceptionsInMethodIfSupported<testing::Test, void> (gtest.cc:2608)
==9629== by 0x2DFF79: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2644)
==9629== by 0x2CA8FB: testing::Test::Run() (gtest.cc:2683)
==9629== by 0x2CAC3C: testing::TestInfo::Run() (gtest.cc:2860)
==9629== by 0x2CD170: testing::TestSuite::Run() (gtest.cc:3014)
==9629== Address 0x1060ff10 is 48 bytes inside a block of size 120 free'd
==9629== at 0x4C3123B: operator delete(void*) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==9629== by 0x1F3096: deallocate (new_allocator.h:125)
==9629== by 0x1F3096: deallocate_node (multi_index_container.hpp:536)
==9629== by 0x1F3096: erase_ (multi_index_container.hpp:761)
==9629== by 0x1F3096: final_erase_ (index_base.hpp:259)
==9629== by 0x1F3096: erase (ord_index_impl.hpp:351)
==9629== by 0x1F3096: isc::host_cache::HostCacheImpl::removeResv6(boost::shared_ptr<isc::dhcp::Host> const&) (host_cache_impl.cc:88)
==9629== by 0x1F3249: isc::host_cache::HostCacheImpl::remove(boost::shared_ptr<isc::dhcp::Host> const&) (host_cache_impl.cc:455)
==9629== by 0x1F3623: isc::host_cache::HostCacheImpl::del6[abi:cxx11](unsigned int const&, isc::asiolink::IOAddress const&) (host_cache_impl.cc:397)
==9629== by 0x1E1153: isc::host_cache::HostCache::cacheRemoveHandler(isc::hooks::CalloutHandle&) (host_cache.cc:887)
==9629== by 0x19F669: (anonymous namespace)::removeHandler(boost::shared_ptr<isc::host_cache::HostCache>, isc::hooks::CalloutHandle&) (command_unittests.cc:324)
==9629== by 0x1D0505: operator()<int, int (*)(boost::shared_ptr<isc::host_cache::HostCache>, isc::hooks::CalloutHandle&), boost::_bi::rrlist1<isc::hooks::CalloutHandle&> > (bind.hpp:309)
==9629== by 0x1D0505: operator()<isc::hooks::CalloutHandle&> (bind.hpp:1306)
==9629== by 0x1D0505: boost::detail::function::function_obj_invoker1<boost::_bi::bind_t<int, int (*)(boost::shared_ptr<isc::host_cache::HostCache>, isc::hooks::CalloutHandle&), boost::_bi::list2<boost::_bi::value<boost::shared_ptr<isc::host_cache::HostCache> >, boost::arg<1> > >, int, isc::hooks::CalloutHandle&>::invoke(boost::detail::function::function_buffer&, isc::hooks::CalloutHandle&) (function_template.hpp:138)
==9629== by 0x1A90EB: operator() (function_template.hpp:760)
==9629== by 0x1A90EB: (anonymous namespace)::CommandTest::checkCommand(boost::function<int (isc::hooks::CalloutHandle&)>, boost::shared_ptr<isc::data::Element const>, int, int, boost::shared_ptr<isc::data::Element const>) [clone .isra.222] (command_unittests.cc:143)
==9629== by 0x1AA653: (anonymous namespace)::CommandTest::checkCommand(boost::function<int (isc::hooks::CalloutHandle&)>, boost::shared_ptr<isc::data::Element const>, int, int, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >) [clone .isra.225] (command_unittests.cc:177)
==9629== by 0x1AC198: (anonymous namespace)::CommandTest_global_Test::TestBody() (command_unittests.cc:905)
==9629== by 0x2DFF79: HandleSehExceptionsInMethodIfSupported<testing::Test, void> (gtest.cc:2608)
==9629== by 0x2DFF79: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2644)
==9629== by 0x2CA8FB: testing::Test::Run() (gtest.cc:2683)
==9629== Block was alloc'd at
==9629== at 0x4C3017F: operator new(unsigned long) (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==9629== by 0x1F25D7: allocate (new_allocator.h:111)
==9629== by 0x1F25D7: allocate_node (multi_index_container.hpp:530)
==9629== by 0x1F25D7: insert_ (index_base.hpp:117)
==9629== by 0x1F25D7: insert_<boost::multi_index::detail::rvalue_tag> (ord_index_impl.hpp:716)
==9629== by 0x1F25D7: insert_<boost::multi_index::detail::rvalue_tag> (ord_index_impl.hpp:716)
==9629== by 0x1F25D7: insert_<boost::multi_index::detail::rvalue_tag> (multi_index_container.hpp:558)
==9629== by 0x1F25D7: insert_rv_ (multi_index_container.hpp:575)
==9629== by 0x1F25D7: final_insert_rv_ (index_base.hpp:221)
==9629== by 0x1F25D7: insert (ord_index_impl.hpp:302)
==9629== by 0x1F25D7: isc::host_cache::HostCacheImpl::insertResv6(boost::shared_ptr<isc::dhcp::Host> const&) (host_cache_impl.cc:38)
==9629== by 0x1F5F1C: isc::host_cache::HostCacheImpl::insert(boost::shared_ptr<isc::dhcp::Host const> const&, bool) (host_cache_impl.cc:342)
==9629== by 0x1DC52D: isc::host_cache::HostCache::insert(boost::shared_ptr<isc::dhcp::Host const> const&, bool) (host_cache.cc:312)
==9629== by 0x1AAE07: (anonymous namespace)::CommandTest_global_Test::TestBody() (command_unittests.cc:869)
==9629== by 0x2DFF79: HandleSehExceptionsInMethodIfSupported<testing::Test, void> (gtest.cc:2608)
==9629== by 0x2DFF79: void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) (gtest.cc:2644)
==9629== by 0x2CA8FB: testing::Test::Run() (gtest.cc:2683)
==9629== by 0x2CAC3C: testing::TestInfo::Run() (gtest.cc:2860)
==9629== by 0x2CD170: testing::TestSuite::Run() (gtest.cc:3014)
==9629== by 0x2CDBC0: testing::internal::UnitTestImpl::RunAllTests() (gtest.cc:5598)
==9629== by 0x2DF6A9: HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool> (gtest.cc:2608)
==9629== by 0x2DF6A9: bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) (gtest.cc:2644)
==9629== by 0x2C98F4: testing::UnitTest::Run() (gtest.cc:5185)
==9629==
==9629== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
```
tsan:
```
WARNING: ThreadSanitizer: heap-use-after-free (pid=4979)
Read of size 8 at 0x7b20000068b0 by main thread:
#0 unsigned long boost::hash_value<isc::dhcp::Host>(boost::shared_ptr<isc::dhcp::Host> const&) /usr/include/boost/smart_ptr/shared_ptr.hpp:1153 (host_cache_unittests+0xa2680)
#1 boost::hash<boost::shared_ptr<isc::dhcp::Host> >::operator()(boost::shared_ptr<isc::dhcp::Host> const&) const /usr/include/boost/functional/hash/extensions.hpp:262 (host_cache_unittests+0xa2680)
#2 boost::multi_index::detail::hashed_index_iterator<boost::multi_index::detail::hashed_index_node<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<boost::shared_ptr<isc::dhcp::Host>, std::allocator<boost::shared_ptr<isc::dhcp::Host> > > > >, boost::multi_index::detail::hashed_unique_tag>, boost::multi_index::detail::bucket_array<std::allocator<boost::shared_ptr<isc::dhcp::Host> > >, boost::multi_index::detail::hashed_index_global_iterator_tag> boost::multi_index::detail::hashed_index<boost::multi_index::identity<boost::shared_ptr<isc::dhcp::Host> >, boost::hash<boost::shared_ptr<isc::dhcp::Host> >, std::equal_to<boost::shared_ptr<isc::dhcp::Host> >, boost::multi_index::detail::nth_layer<2, boost::shared_ptr<isc::dhcp::Host>, boost::multi_index::indexed_by<boost::multi_index::random_access<boost::multi_index::tag<isc::host_cache::HostRandomIndexTag, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na> >, boost::multi_index::hashed_unique<boost::multi_index::tag<isc::host_cache::HostHashedIndexTag, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::identity<boost::shared_ptr<isc::dhcp::Host> >, mpl_::na, mpl_::na>, boost::multi_index::ordered_non_unique<boost::multi_index::tag<isc::host_cache::HostIdentifierIndexTag, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::composite_key<isc::dhcp::Host, boost::multi_index::const_mem_fun<isc::dhcp::Host, std::vector<unsigned char, std::allocator<unsigned char> > const&, &(isc::dhcp::Host::getIdentifier() const)>, boost::multi_index::const_mem_fun<isc::dhcp::Host, isc::dhcp::Host::IdentifierType, &(isc::dhcp::Host::getIdentifierType() const)>, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, mpl_::na>, boost::multi_index::ordered_non_unique<boost::multi_index::tag<isc::host_cache::HostAddress4IndexTag, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::const_mem_fun<isc::dhcp::Host, isc::asiolink::IOAddress const&, &(isc::dhcp::Host::getIPv4Reservation() const)>, mpl_::na>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, std::allocator<boost::shared_ptr<isc::dhcp::Host> > >, boost::mpl::v_item<isc::host_cache::HostHashedIndexTag, boost::mpl::vector0<mpl_::na>, 0>, boost::multi_index::detail::hashed_unique_tag>::find<boost::shared_ptr<isc::dhcp::Host>, boost::hash<boost::shared_ptr<isc::dhcp::Host> >, std::equal_to<boost::shared_ptr<isc::dhcp::Host> > >(boost::shared_ptr<isc::dhcp::Host> const&, boost::hash<boost::shared_ptr<isc::dhcp::Host> > const&, std::equal_to<boost::shared_ptr<isc::dhcp::Host> > const&, mpl_::bool_<false>) const /usr/include/boost/multi_index/hashed_index.hpp:1527 (host_cache_unittests+0xa2680)
#3 boost::multi_index::detail::hashed_index_iterator<boost::multi_index::detail::hashed_index_node<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<boost::shared_ptr<isc::dhcp::Host>, std::allocator<boost::shared_ptr<isc::dhcp::Host> > > > >, boost::multi_index::detail::hashed_unique_tag>, boost::multi_index::detail::bucket_array<std::allocator<boost::shared_ptr<isc::dhcp::Host> > >, boost::multi_index::detail::hashed_index_global_iterator_tag> boost::multi_index::detail::hashed_index<boost::multi_index::identity<boost::shared_ptr<isc::dhcp::Host> >, boost::hash<boost::shared_ptr<isc::dhcp::Host> >, std::equal_to<boost::shared_ptr<isc::dhcp::Host> >, boost::multi_index::detail::nth_layer<2, boost::shared_ptr<isc::dhcp::Host>, boost::multi_index::indexed_by<boost::multi_index::random_access<boost::multi_index::tag<isc::host_cache::HostRandomIndexTag, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na> >, boost::multi_index::hashed_unique<boost::multi_index::tag<isc::host_cache::HostHashedIndexTag, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::identity<boost::shared_ptr<isc::dhcp::Host> >, mpl_::na, mpl_::na>, boost::multi_index::ordered_non_unique<boost::multi_index::tag<isc::host_cache::HostIdentifierIndexTag, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::composite_key<isc::dhcp::Host, boost::multi_index::const_mem_fun<isc::dhcp::Host, std::vector<unsigned char, std::allocator<unsigned char> > const&, &(isc::dhcp::Host::getIdentifier() const)>, boost::multi_index::const_mem_fun<isc::dhcp::Host, isc::dhcp::Host::IdentifierType, &(isc::dhcp::Host::getIdentifierType() const)>, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, mpl_::na>, boost::multi_index::ordered_non_unique<boost::multi_index::tag<isc::host_cache::HostAddress4IndexTag, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::const_mem_fun<isc::dhcp::Host, isc::asiolink::IOAddress const&, &(isc::dhcp::Host::getIPv4Reservation() const)>, mpl_::na>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, std::allocator<boost::shared_ptr<isc::dhcp::Host> > >, boost::mpl::v_item<isc::host_cache::HostHashedIndexTag, boost::mpl::vector0<mpl_::na>, 0>, boost::multi_index::detail::hashed_unique_tag>::find<boost::shared_ptr<isc::dhcp::Host>, boost::hash<boost::shared_ptr<isc::dhcp::Host> >, std::equal_to<boost::shared_ptr<isc::dhcp::Host> > >(boost::shared_ptr<isc::dhcp::Host> const&, boost::hash<boost::shared_ptr<isc::dhcp::Host> > const&, std::equal_to<boost::shared_ptr<isc::dhcp::Host> > const&) const /usr/include/boost/multi_index/hashed_index.hpp:482 (host_cache_unittests+0xa2680)
#4 boost::multi_index::detail::hashed_index_iterator<boost::multi_index::detail::hashed_index_node<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<boost::shared_ptr<isc::dhcp::Host>, std::allocator<boost::shared_ptr<isc::dhcp::Host> > > > >, boost::multi_index::detail::hashed_unique_tag>, boost::multi_index::detail::bucket_array<std::allocator<boost::shared_ptr<isc::dhcp::Host> > >, boost::multi_index::detail::hashed_index_global_iterator_tag> boost::multi_index::detail::hashed_index<boost::multi_index::identity<boost::shared_ptr<isc::dhcp::Host> >, boost::hash<boost::shared_ptr<isc::dhcp::Host> >, std::equal_to<boost::shared_ptr<isc::dhcp::Host> >, boost::multi_index::detail::nth_layer<2, boost::shared_ptr<isc::dhcp::Host>, boost::multi_index::indexed_by<boost::multi_index::random_access<boost::multi_index::tag<isc::host_cache::HostRandomIndexTag, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na> >, boost::multi_index::hashed_unique<boost::multi_index::tag<isc::host_cache::HostHashedIndexTag, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::identity<boost::shared_ptr<isc::dhcp::Host> >, mpl_::na, mpl_::na>, boost::multi_index::ordered_non_unique<boost::multi_index::tag<isc::host_cache::HostIdentifierIndexTag, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::composite_key<isc::dhcp::Host, boost::multi_index::const_mem_fun<isc::dhcp::Host, std::vector<unsigned char, std::allocator<unsigned char> > const&, &(isc::dhcp::Host::getIdentifier() const)>, boost::multi_index::const_mem_fun<isc::dhcp::Host, isc::dhcp::Host::IdentifierType, &(isc::dhcp::Host::getIdentifierType() const)>, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, mpl_::na>, boost::multi_index::ordered_non_unique<boost::multi_index::tag<isc::host_cache::HostAddress4IndexTag, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::const_mem_fun<isc::dhcp::Host, isc::asiolink::IOAddress const&, &(isc::dhcp::Host::getIPv4Reservation() const)>, mpl_::na>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, std::allocator<boost::shared_ptr<isc::dhcp::Host> > >, boost::mpl::v_item<isc::host_cache::HostHashedIndexTag, boost::mpl::vector0<mpl_::na>, 0>, boost::multi_index::detail::hashed_unique_tag>::find<boost::shared_ptr<isc::dhcp::Host> >(boost::shared_ptr<isc::dhcp::Host> const&) const /usr/include/boost/multi_index/hashed_index.hpp:471 (host_cache_unittests+0xa2680)
#5 isc::host_cache::HostCacheImpl::remove(boost::shared_ptr<isc::dhcp::Host> const&) /home/razvan/isc/git/kea-review/premium/src/hooks/dhcp/host_cache/host_cache_impl.cc:456 (host_cache_unittests+0xa2680)
#6 isc::host_cache::HostCacheImpl::del6[abi:cxx11](unsigned int const&, isc::asiolink::IOAddress const&) /home/razvan/isc/git/kea-review/premium/src/hooks/dhcp/host_cache/host_cache_impl.cc:395 (host_cache_unittests+0xa2d9b)
#7 isc::host_cache::HostCache::cacheRemoveHandler(isc::hooks::CalloutHandle&) /home/razvan/isc/git/kea-review/premium/src/hooks/dhcp/host_cache/host_cache.cc:887 (host_cache_unittests+0x9316a)
#8 removeHandler /home/razvan/isc/git/kea-review/premium/src/hooks/dhcp/host_cache/tests/command_unittests.cc:324 (host_cache_unittests+0x567bd)
#9 int boost::_bi::list2<boost::_bi::value<boost::shared_ptr<isc::host_cache::HostCache> >, boost::arg<1> >::operator()<int, int (*)(boost::shared_ptr<isc::host_cache::HostCache>, isc::hooks::CalloutHandle&), boost::_bi::rrlist1<isc::hooks::CalloutHandle&> >(boost::_bi::type<int>, int (*&)(boost::shared_ptr<isc::host_cache::HostCache>, isc::hooks::CalloutHandle&), boost::_bi::rrlist1<isc::hooks::CalloutHandle&>&, long) /usr/include/boost/bind/bind.hpp:309 (host_cache_unittests+0x7be1c)
#10 int boost::_bi::bind_t<int, int (*)(boost::shared_ptr<isc::host_cache::HostCache>, isc::hooks::CalloutHandle&), boost::_bi::list2<boost::_bi::value<boost::shared_ptr<isc::host_cache::HostCache> >, boost::arg<1> > >::operator()<isc::hooks::CalloutHandle&>(isc::hooks::CalloutHandle&) /usr/include/boost/bind/bind.hpp:1306 (host_cache_unittests+0x7be1c)
#11 boost::detail::function::function_obj_invoker1<boost::_bi::bind_t<int, int (*)(boost::shared_ptr<isc::host_cache::HostCache>, isc::hooks::CalloutHandle&), boost::_bi::list2<boost::_bi::value<boost::shared_ptr<isc::host_cache::HostCache> >, boost::arg<1> > >, int, isc::hooks::CalloutHandle&>::invoke(boost::detail::function::function_buffer&, isc::hooks::CalloutHandle&) /usr/include/boost/function/function_template.hpp:138 (host_cache_unittests+0x7be1c)
#12 boost::function1<int, isc::hooks::CalloutHandle&>::operator()(isc::hooks::CalloutHandle&) const /usr/include/boost/function/function_template.hpp:760 (host_cache_unittests+0x5d1e9)
#13 checkCommand /home/razvan/isc/git/kea-review/premium/src/hooks/dhcp/host_cache/tests/command_unittests.cc:143 (host_cache_unittests+0x5d1e9)
#14 checkCommand /home/razvan/isc/git/kea-review/premium/src/hooks/dhcp/host_cache/tests/command_unittests.cc:177 (host_cache_unittests+0x622ed)
#15 TestBody /home/razvan/isc/git/kea-review/premium/src/hooks/dhcp/host_cache/tests/command_unittests.cc:905 (host_cache_unittests+0x64059)
#16 void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/razvan/isc/git/googletest/googletest/src/gtest.cc:2608 (host_cache_unittests+0x176588)
#17 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/razvan/isc/git/googletest/googletest/src/gtest.cc:2644 (host_cache_unittests+0x176588)
#18 testing::Test::Run() /home/razvan/isc/git/googletest/googletest/src/gtest.cc:2683 (host_cache_unittests+0x1654c4)
#19 testing::TestInfo::Run() /home/razvan/isc/git/googletest/googletest/src/gtest.cc:2860 (host_cache_unittests+0x1658c6)
#20 testing::TestSuite::Run() /home/razvan/isc/git/googletest/googletest/src/gtest.cc:3014 (host_cache_unittests+0x166533)
#21 testing::internal::UnitTestImpl::RunAllTests() /home/razvan/isc/git/googletest/googletest/src/gtest.cc:5598 (host_cache_unittests+0x166e1f)
#22 bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/razvan/isc/git/googletest/googletest/src/gtest.cc:2608 (host_cache_unittests+0x176c94)
#23 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/razvan/isc/git/googletest/googletest/src/gtest.cc:2644 (host_cache_unittests+0x176c94)
#24 testing::UnitTest::Run() /home/razvan/isc/git/googletest/googletest/src/gtest.cc:5185 (host_cache_unittests+0x165a59)
#25 RUN_ALL_TESTS() /home/razvan/isc/git/googletest/googletest//include/gtest/gtest.h:2482 (host_cache_unittests+0x2aeae)
#26 main /home/razvan/isc/git/kea-review/premium/src/hooks/dhcp/host_cache/tests/run_unittests.cc:16 (host_cache_unittests+0x2aeae)
Previous write of size 8 at 0x7b20000068b0 by main thread:
#0 operator delete(void*) <null> (libtsan.so.0+0x740cd)
#1 __gnu_cxx::new_allocator<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<isc::host_cache::HostResrv6Tuple, std::allocator<isc::host_cache::HostResrv6Tuple> > > > >::deallocate(boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<isc::host_cache::HostResrv6Tuple, std::allocator<isc::host_cache::HostResrv6Tuple> > > >*, unsigned long) /usr/include/c++/7/ext/new_allocator.h:125 (host_cache_unittests+0xa0c95)
#2 boost::multi_index::multi_index_container<isc::host_cache::HostResrv6Tuple, boost::multi_index::indexed_by<boost::multi_index::ordered_non_unique<boost::multi_index::tag<isc::host_cache::Resv6AddressIndexTag, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::const_mem_fun<isc::host_cache::HostResrv6Tuple, isc::asiolink::IOAddress const&, &(isc::host_cache::HostResrv6Tuple::getKey() const)>, mpl_::na>, boost::multi_index::ordered_unique<boost::multi_index::tag<isc::host_cache::Resv6SubnetAddressIndexTag, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::composite_key<isc::host_cache::HostResrv6Tuple, boost::multi_index::member<isc::host_cache::HostResrv6Tuple, unsigned int const, &isc::host_cache::HostResrv6Tuple::subnet_id_>, boost::multi_index::const_mem_fun<isc::host_cache::HostResrv6Tuple, isc::asiolink::IOAddress const&, &(isc::host_cache::HostResrv6Tuple::getKey() const)>, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, mpl_::na>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, std::allocator<isc::host_cache::HostResrv6Tuple> >::deallocate_node(boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<isc::host_cache::HostResrv6Tuple, std::allocator<isc::host_cache::HostResrv6Tuple> > > >*) /usr/include/boost/multi_index_container.hpp:536 (host_cache_unittests+0xa0c95)
#3 boost::multi_index::multi_index_container<isc::host_cache::HostResrv6Tuple, boost::multi_index::indexed_by<boost::multi_index::ordered_non_unique<boost::multi_index::tag<isc::host_cache::Resv6AddressIndexTag, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::const_mem_fun<isc::host_cache::HostResrv6Tuple, isc::asiolink::IOAddress const&, &(isc::host_cache::HostResrv6Tuple::getKey() const)>, mpl_::na>, boost::multi_index::ordered_unique<boost::multi_index::tag<isc::host_cache::Resv6SubnetAddressIndexTag, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::composite_key<isc::host_cache::HostResrv6Tuple, boost::multi_index::member<isc::host_cache::HostResrv6Tuple, unsigned int const, &isc::host_cache::HostResrv6Tuple::subnet_id_>, boost::multi_index::const_mem_fun<isc::host_cache::HostResrv6Tuple, isc::asiolink::IOAddress const&, &(isc::host_cache::HostResrv6Tuple::getKey() const)>, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, mpl_::na>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, std::allocator<isc::host_cache::HostResrv6Tuple> >::erase_(boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<isc::host_cache::HostResrv6Tuple, std::allocator<isc::host_cache::HostResrv6Tuple> > > >*) /usr/include/boost/multi_index_container.hpp:761 (host_cache_unittests+0xa0c95)
#4 boost::multi_index::detail::index_base<isc::host_cache::HostResrv6Tuple, boost::multi_index::indexed_by<boost::multi_index::ordered_non_unique<boost::multi_index::tag<isc::host_cache::Resv6AddressIndexTag, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::const_mem_fun<isc::host_cache::HostResrv6Tuple, isc::asiolink::IOAddress const&, &(isc::host_cache::HostResrv6Tuple::getKey() const)>, mpl_::na>, boost::multi_index::ordered_unique<boost::multi_index::tag<isc::host_cache::Resv6SubnetAddressIndexTag, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::composite_key<isc::host_cache::HostResrv6Tuple, boost::multi_index::member<isc::host_cache::HostResrv6Tuple, unsigned int const, &isc::host_cache::HostResrv6Tuple::subnet_id_>, boost::multi_index::const_mem_fun<isc::host_cache::HostResrv6Tuple, isc::asiolink::IOAddress const&, &(isc::host_cache::HostResrv6Tuple::getKey() const)>, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, mpl_::na>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, std::allocator<isc::host_cache::HostResrv6Tuple> >::final_erase_(boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<isc::host_cache::HostResrv6Tuple, std::allocator<isc::host_cache::HostResrv6Tuple> > > >*) /usr/include/boost/multi_index/detail/index_base.hpp:259 (host_cache_unittests+0xa0c95)
#5 boost::multi_index::detail::ordered_index_impl<boost::multi_index::const_mem_fun<isc::host_cache::HostResrv6Tuple, isc::asiolink::IOAddress const&, &(isc::host_cache::HostResrv6Tuple::getKey() const)>, std::less<isc::asiolink::IOAddress const>, boost::multi_index::detail::nth_layer<1, isc::host_cache::HostResrv6Tuple, boost::multi_index::indexed_by<boost::multi_index::ordered_non_unique<boost::multi_index::tag<isc::host_cache::Resv6AddressIndexTag, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::const_mem_fun<isc::host_cache::HostResrv6Tuple, isc::asiolink::IOAddress const&, &(isc::host_cache::HostResrv6Tuple::getKey() const)>, mpl_::na>, boost::multi_index::ordered_unique<boost::multi_index::tag<isc::host_cache::Resv6SubnetAddressIndexTag, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, boost::multi_index::composite_key<isc::host_cache::HostResrv6Tuple, boost::multi_index::member<isc::host_cache::HostResrv6Tuple, unsigned int const, &isc::host_cache::HostResrv6Tuple::subnet_id_>, boost::multi_index::const_mem_fun<isc::host_cache::HostResrv6Tuple, isc::asiolink::IOAddress const&, &(isc::host_cache::HostResrv6Tuple::getKey() const)>, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type, boost::tuples::null_type>, mpl_::na>, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na, mpl_::na>, std::allocator<isc::host_cache::HostResrv6Tuple> >, boost::mpl::v_item<isc::host_cache::Resv6AddressIndexTag, boost::mpl::vector0<mpl_::na>, 0>, boost::multi_index::detail::ordered_non_unique_tag, boost::multi_index::detail::null_augment_policy>::erase(boost::multi_index::detail::bidir_node_iterator<boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::ordered_index_node<boost::multi_index::detail::null_augment_policy, boost::multi_index::detail::index_node_base<isc::host_cache::HostResrv6Tuple, std::allocator<isc::host_cache::HostResrv6Tuple> > > > >) /usr/include/boost/multi_index/detail/ord_index_impl.hpp:351 (host_cache_unittests+0xa0c95)
#6 isc::host_cache::HostCacheImpl::removeResv6(boost::shared_ptr<isc::dhcp::Host> const&) /home/razvan/isc/git/kea-review/premium/src/hooks/dhcp/host_cache/host_cache_impl.cc:88 (host_cache_unittests+0xa0c95)
#7 isc::host_cache::HostCacheImpl::remove(boost::shared_ptr<isc::dhcp::Host> const&) /home/razvan/isc/git/kea-review/premium/src/hooks/dhcp/host_cache/host_cache_impl.cc:455 (host_cache_unittests+0xa2678)
#8 isc::host_cache::HostCacheImpl::del6[abi:cxx11](unsigned int const&, isc::asiolink::IOAddress const&) /home/razvan/isc/git/kea-review/premium/src/hooks/dhcp/host_cache/host_cache_impl.cc:395 (host_cache_unittests+0xa2d9b)
#9 isc::host_cache::HostCache::cacheRemoveHandler(isc::hooks::CalloutHandle&) /home/razvan/isc/git/kea-review/premium/src/hooks/dhcp/host_cache/host_cache.cc:887 (host_cache_unittests+0x9316a)
#10 removeHandler /home/razvan/isc/git/kea-review/premium/src/hooks/dhcp/host_cache/tests/command_unittests.cc:324 (host_cache_unittests+0x567bd)
#11 int boost::_bi::list2<boost::_bi::value<boost::shared_ptr<isc::host_cache::HostCache> >, boost::arg<1> >::operator()<int, int (*)(boost::shared_ptr<isc::host_cache::HostCache>, isc::hooks::CalloutHandle&), boost::_bi::rrlist1<isc::hooks::CalloutHandle&> >(boost::_bi::type<int>, int (*&)(boost::shared_ptr<isc::host_cache::HostCache>, isc::hooks::CalloutHandle&), boost::_bi::rrlist1<isc::hooks::CalloutHandle&>&, long) /usr/include/boost/bind/bind.hpp:309 (host_cache_unittests+0x7be1c)
#12 int boost::_bi::bind_t<int, int (*)(boost::shared_ptr<isc::host_cache::HostCache>, isc::hooks::CalloutHandle&), boost::_bi::list2<boost::_bi::value<boost::shared_ptr<isc::host_cache::HostCache> >, boost::arg<1> > >::operator()<isc::hooks::CalloutHandle&>(isc::hooks::CalloutHandle&) /usr/include/boost/bind/bind.hpp:1306 (host_cache_unittests+0x7be1c)
#13 boost::detail::function::function_obj_invoker1<boost::_bi::bind_t<int, int (*)(boost::shared_ptr<isc::host_cache::HostCache>, isc::hooks::CalloutHandle&), boost::_bi::list2<boost::_bi::value<boost::shared_ptr<isc::host_cache::HostCache> >, boost::arg<1> > >, int, isc::hooks::CalloutHandle&>::invoke(boost::detail::function::function_buffer&, isc::hooks::CalloutHandle&) /usr/include/boost/function/function_template.hpp:138 (host_cache_unittests+0x7be1c)
#14 boost::function1<int, isc::hooks::CalloutHandle&>::operator()(isc::hooks::CalloutHandle&) const /usr/include/boost/function/function_template.hpp:760 (host_cache_unittests+0x5d1e9)
#15 checkCommand /home/razvan/isc/git/kea-review/premium/src/hooks/dhcp/host_cache/tests/command_unittests.cc:143 (host_cache_unittests+0x5d1e9)
#16 checkCommand /home/razvan/isc/git/kea-review/premium/src/hooks/dhcp/host_cache/tests/command_unittests.cc:177 (host_cache_unittests+0x622ed)
#17 TestBody /home/razvan/isc/git/kea-review/premium/src/hooks/dhcp/host_cache/tests/command_unittests.cc:905 (host_cache_unittests+0x64059)
#18 void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/razvan/isc/git/googletest/googletest/src/gtest.cc:2608 (host_cache_unittests+0x176588)
#19 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /home/razvan/isc/git/googletest/googletest/src/gtest.cc:2644 (host_cache_unittests+0x176588)
#20 testing::Test::Run() /home/razvan/isc/git/googletest/googletest/src/gtest.cc:2683 (host_cache_unittests+0x1654c4)
#21 testing::TestInfo::Run() /home/razvan/isc/git/googletest/googletest/src/gtest.cc:2860 (host_cache_unittests+0x1658c6)
#22 testing::TestSuite::Run() /home/razvan/isc/git/googletest/googletest/src/gtest.cc:3014 (host_cache_unittests+0x166533)
#23 testing::internal::UnitTestImpl::RunAllTests() /home/razvan/isc/git/googletest/googletest/src/gtest.cc:5598 (host_cache_unittests+0x166e1f)
#24 bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/razvan/isc/git/googletest/googletest/src/gtest.cc:2608 (host_cache_unittests+0x176c94)
#25 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /home/razvan/isc/git/googletest/googletest/src/gtest.cc:2644 (host_cache_unittests+0x176c94)
#26 testing::UnitTest::Run() /home/razvan/isc/git/googletest/googletest/src/gtest.cc:5185 (host_cache_unittests+0x165a59)
#27 RUN_ALL_TESTS() /home/razvan/isc/git/googletest/googletest//include/gtest/gtest.h:2482 (host_cache_unittests+0x2aeae)
#28 main /home/razvan/isc/git/kea-review/premium/src/hooks/dhcp/host_cache/tests/run_unittests.cc:16 (host_cache_unittests+0x2aeae)
SUMMARY: ThreadSanitizer: heap-use-after-free /usr/include/boost/smart_ptr/shared_ptr.hpp:1153 in unsigned long boost::hash_value<isc::dhcp::Host>(boost::shared_ptr<isc::dhcp::Host> const&)
```
I prefer the fix in the comments, not the one in the MR. I'll update the MR if there is no issue with the second fix.kea1.7.8Razvan BecheriuRazvan Becheriuhttps://gitlab.isc.org/isc-projects/kea/-/issues/1215Pkt<4/6>::getName() should support all message type names2020-05-13T14:33:40ZThomas MarkwalderPkt<4/6>::getName() should support all message type namesNotably missing from Pkt4::getName() are the lease query related message types. It would be handy if we returned labels for all the types, not just those we handle.Notably missing from Pkt4::getName() are the lease query related message types. It would be handy if we returned labels for all the types, not just those we handle.kea1.7.8Francis DupontFrancis Duponthttps://gitlab.isc.org/isc-projects/kea/-/issues/1213fix sphinx list rendering2020-05-13T14:42:15ZFrancis Dupontfix sphinx list renderingSphinx seems a bit picky about list, for instance:
```
- ``foo`` - explain foo here
and bla bla...
```
is not rendered as:
```
- ``foo`` - explain foo here
and this bugs?
```
This issue should fix all instances of this problem ...Sphinx seems a bit picky about list, for instance:
```
- ``foo`` - explain foo here
and bla bla...
```
is not rendered as:
```
- ``foo`` - explain foo here
and this bugs?
```
This issue should fix all instances of this problem kept by translation to sphinx.kea1.7.8Francis DupontFrancis Duponthttps://gitlab.isc.org/isc-projects/kea/-/issues/1210address doxygen errors2020-05-14T21:57:14ZFrancis Dupontaddress doxygen errorsOn my system 70 are reported... BTW what is the official check for this (i.e. Jenkins process name)?On my system 70 are reported... BTW what is the official check for this (i.e. Jenkins process name)?kea1.7.8Francis DupontFrancis Duponthttps://gitlab.isc.org/isc-projects/kea/-/issues/1208kea version bump up2020-04-30T09:24:10ZWlodzimierz Wencelkea version bump upchange version to 1.7.8 on masterchange version to 1.7.8 on masterkea1.7.8Wlodzimierz WencelWlodzimierz Wencelhttps://gitlab.isc.org/isc-projects/kea/-/issues/1205Restarting HA enabled servers being in terminated state2020-05-21T18:18:57ZMarcin SiodelskiRestarting HA enabled servers being in terminated stateThere are at least two cases I know about when Kea users attempted to recover from the HA "terminated" state after fixing the clock skew problem and they failed by ending up back in the terminated states on both servers, despite having t...There are at least two cases I know about when Kea users attempted to recover from the HA "terminated" state after fixing the clock skew problem and they failed by ending up back in the terminated states on both servers, despite having the clocks in sync. To my best knowledge this is because our ARM is not very specific how the HA enabled servers should be restarted in such situation. It merely talks about restarting them. Reading this, the user would restart one of them first and leave the other one running to avoid the total loss of the DHCP service. Or maybe it is simpler to restart one of them, and then go to the other one and restart it. The effect of sequential restart of the servers is that once the first server starts up it sees the second one still being in the terminated state. The HA state machine is programmed to transition it to the terminated state seeing the partner being in the terminated state. Such restart has no effect. You still have both servers in the terminated state. You restart the second one and have the same story.
The way the administrator should restart the servers is actually to stop both and then start both. Or... start one of them and wait for it to settle in the partner-down state. Then, start the second one.
Running server must not be in the terminated state upon restarting the partner, as it will cause the partner to transition to the terminated state!
Our ARM must be crystal clear about it!kea1.7.8Marcin SiodelskiMarcin Siodelskihttps://gitlab.isc.org/isc-projects/kea/-/issues/1204Add the version type (i.e. stable or development) in ChangeLog headers.2020-05-21T08:20:28ZFrancis DupontAdd the version type (i.e. stable or development) in ChangeLog headers.Reference #1184 for making the version type more explicit.Reference #1184 for making the version type more explicit.kea1.7.8Francis DupontFrancis Duponthttps://gitlab.isc.org/isc-projects/kea/-/issues/1200Escape character code in keactrl2020-11-06T13:18:26ZFrancis DupontEscape character code in keactrlLooking the FreeBSD source package (aka ports) for Kea I found a patch to change Escape characters from '\e' to '\033' in keactrl.in near lines 520. I support this change as the \033 is clearly more portable.Looking the FreeBSD source package (aka ports) for Kea I found a patch to change Escape characters from '\e' to '\033' in keactrl.in near lines 520. I support this change as the \033 is clearly more portable.kea1.7.8Francis DupontFrancis Duponthttps://gitlab.isc.org/isc-projects/kea/-/issues/1199Kea fails to build with macOS homebrew postgresql 12.2_12020-05-22T17:36:01ZFrancis DupontKea fails to build with macOS homebrew postgresql 12.2_1The postgresql 12.2_1 from homebrew on macOS can fail to build: src/lib/pgsql/pgsql_connection.cc does not compile because a boost header includes the wrong math.h and some functions like signbit can't be found.The postgresql 12.2_1 from homebrew on macOS can fail to build: src/lib/pgsql/pgsql_connection.cc does not compile because a boost header includes the wrong math.h and some functions like signbit can't be found.kea1.7.8Francis DupontFrancis Dupont