Kea issueshttps://gitlab.isc.org/isc-projects/kea/-/issues2023-11-23T18:38:39Zhttps://gitlab.isc.org/isc-projects/kea/-/issues/3166fix build failures in unit tests on some systems2023-11-23T18:38:39ZAndrei Pavelandrei@isc.orgfix build failures in unit tests on some systems* CentOS 7:
```
23:04:15 /usr/include/c++/4.8.2/bits/stl_algo.h:2263:35: error: no match for call to ‘(isc::dhcp::test::GenericLeaseMgrTest::testLease6LeaseTypeCheck()::__lambda3)
(boost::shared_ptr<isc::dhcp::Lease6>&, const boost::sh...* CentOS 7:
```
23:04:15 /usr/include/c++/4.8.2/bits/stl_algo.h:2263:35: error: no match for call to ‘(isc::dhcp::test::GenericLeaseMgrTest::testLease6LeaseTypeCheck()::__lambda3)
(boost::shared_ptr<isc::dhcp::Lease6>&, const boost::shared_ptr<isc::dhcp::Lease6>&)’
23:04:15 while (__comp(*__first, __pivot))
23:04:15 ^
23:04:15 generic_lease_mgr_unittest.cc:1621:25: note: candidates are:
23:04:15 auto compare = [](Lease6Ptr& left, Lease6Ptr& right) {
23:04:15 ^
23:04:15 In file included from /usr/include/c++/4.8.2/algorithm:62:0,
23:04:15 from /usr/include/boost/smart_ptr/shared_ptr.hpp:42,
23:04:15 from /usr/include/boost/shared_ptr.hpp:17,
23:04:15 from ../../../../src/lib/asiolink/io_service.h:11,
23:04:15 from ../../../../src/lib/database/database_connection.h:10,
23:04:15 from generic_lease_mgr_unittest.cc:10:
23:04:15 /usr/include/c++/4.8.2/bits/stl_algo.h:2263:35: note: bool (*)(isc::dhcp::Lease6Ptr&, isc::dhcp::Lease6Ptr&) {aka bool (*)(boost::shared_ptr<isc::dhcp::Lease6>&, boost::shared_ptr<isc::dhcp::Lease6>&)} <conversion>
23:04:15 while (__comp(*__first, __pivot))
23:04:15 ^
23:04:15 /usr/include/c++/4.8.2/bits/stl_algo.h:2263:35: note: candidate expects 3 arguments, 3 provided
23:04:15 generic_lease_mgr_unittest.cc:1621:60: note: isc::dhcp::test::GenericLeaseMgrTest::testLease6LeaseTypeCheck()::__lambda3
23:04:15 auto compare = [](Lease6Ptr& left, Lease6Ptr& right) {
23:04:15 ^
23:04:15 generic_lease_mgr_unittest.cc:1621:60: note: no known conversion for argument 2 from ‘const boost::shared_ptr<isc::dhcp::Lease6>’ to ‘isc::dhcp::Lease6Ptr& {aka boost::shared_ptr<isc::dhcp::Lease6>&}’
23:04:15 In file included from /usr/include/c++/4.8.2/algorithm:62:0,
23:04:15 from /usr/include/boost/smart_ptr/shared_ptr.hpp:42,
23:04:15 from /usr/include/boost/shared_ptr.hpp:17,
23:04:15 from ../../../../src/lib/asiolink/io_service.h:11,
23:04:15 from ../../../../src/lib/database/database_connection.h:10,
23:04:15 from generic_lease_mgr_unittest.cc:10:
```
* Fedora 38:
```
rdata_unittest.cc: In static member function ‘static std::string {anonymous}::Rdata_Unknown_Test::getLongestRdataTxt()’:
rdata_unittest.cc:257:16: error: ‘setw’ was not declared in this scope
257 | oss << setw(2) << (i & 0xff);
| ^~~~
rdata_unittest.cc:29:1: note: ‘std::setw’ is defined in header ‘<iomanip>’; did you forget to ‘#include <iomanip>’?
28 | #include <boost/lexical_cast.hpp>
+++ |+#include <iomanip>
29 |
make[7]: *** [Makefile:1159: run_unittests-rdata_unittest.o] Error 1
```kea2.4.1Andrei Pavelandrei@isc.orgAndrei Pavelandrei@isc.orghttps://gitlab.isc.org/isc-projects/kea/-/issues/3165fix TSAN warnings in ping_check hook library2023-11-27T15:18:16ZRazvan Becheriufix TSAN warnings in ping_check hook library```
[ RUN ] PingChannelTest.sendReceiveMT
==================
WARNING: ThreadSanitizer: data race (pid=98563)
Read of size 1 at 0x7b2800000cd8 by thread T5:
#0 boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail:...```
[ RUN ] PingChannelTest.sendReceiveMT
==================
WARNING: ThreadSanitizer: data race (pid=98563)
Read of size 1 at 0x7b2800000cd8 by thread T5:
#0 boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&) kqueue_reactor.ipp:487 (ping_check_unittests:x86_64+0x10000dc66)
#1 non-virtual thunk to boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&) kqueue_reactor.hpp (ping_check_unittests:x86_64+0x10000e2ed)
#2 boost::asio::detail::scheduler::do_run_one(boost::asio::detail::conditionally_enabled_mutex::scoped_lock&, boost::asio::detail::scheduler_thread_info&, boost::system::error_code const&) scheduler.ipp:477 (libkea-asiolink.67.dylib:x86_64+0x141a8)
#3 boost::asio::detail::scheduler::run(boost::system::error_code&) scheduler.ipp:210 (libkea-asiolink.67.dylib:x86_64+0x13ca4)
#4 boost::asio::io_context::run() io_context.ipp:64 (libkea-asiolink.67.dylib:x86_64+0x1ff0e)
#5 isc::asiolink::IOService::run() io_service.cc:115 (libkea-asiolink.67.dylib:x86_64+0x1de46)
#6 isc::asiolink::IoServiceThreadPool::threadWork() io_service_thread_pool.cc:219 (libkea-asiolink.67.dylib:x86_64+0x29940)
#7 void* std::__1::__thread_proxy[abi:v160006]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>>>(void*) thread:299 (libkea-asiolink.67.dylib:x86_64+0x2a145)
Previous write of size 1 at 0x7b2800000cd8 by main thread (mutexes: write M0, write M1):
#0 boost::asio::detail::conditionally_enabled_mutex::conditionally_enabled_mutex(bool) conditionally_enabled_mutex.hpp:109 (ping_check_unittests:x86_64+0x10001095b)
#1 boost::asio::detail::kqueue_reactor::allocate_descriptor_state() kqueue_reactor.ipp:566 (ping_check_unittests:x86_64+0x10001affd)
#2 boost::asio::detail::reactive_socket_service_base::do_open(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, int, int, int, boost::system::error_code&) reactive_socket_service_base.ipp:188 (ping_check_unittests:x86_64+0x10001ab51)
#3 boost::asio::basic_socket<boost::asio::ip::icmp, boost::asio::any_io_executor>::open(boost::asio::ip::icmp const&) basic_socket.hpp:429 (ping_check_unittests:x86_64+0x10001a15a)
#4 isc::ping_check::ICMPSocket<isc::ping_check::SocketCallback>::open(isc::asiolink::IOEndpoint const*, isc::ping_check::SocketCallback&) icmp_socket.h:214 (ping_check_unittests:x86_64+0x1000d8464)
#5 isc::ping_check::PingChannel::open() ping_channel.cc:76 (ping_check_unittests:x86_64+0x1000d4d6b)
#6 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:303 (ping_check_unittests:x86_64+0x1000530f4)
#7 (anonymous namespace)::PingChannelTest_sendReceiveMT_Test::TestBody() ping_channel_unittests.cc:513 (ping_check_unittests:x86_64+0x100058c99)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Location is heap block of size 160 at 0x7b2800000c80 allocated by main thread:
#0 operator new(unsigned long) <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x82c0d)
#1 boost::asio::detail::kqueue_reactor::allocate_descriptor_state() kqueue_reactor.ipp:566 (ping_check_unittests:x86_64+0x10001afe4)
#2 boost::asio::detail::reactive_socket_service_base::do_open(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, int, int, int, boost::system::error_code&) reactive_socket_service_base.ipp:188 (ping_check_unittests:x86_64+0x10001ab51)
#3 boost::asio::basic_socket<boost::asio::ip::icmp, boost::asio::any_io_executor>::open(boost::asio::ip::icmp const&) basic_socket.hpp:429 (ping_check_unittests:x86_64+0x10001a15a)
#4 isc::ping_check::ICMPSocket<isc::ping_check::SocketCallback>::open(isc::asiolink::IOEndpoint const*, isc::ping_check::SocketCallback&) icmp_socket.h:214 (ping_check_unittests:x86_64+0x1000d8464)
#5 isc::ping_check::PingChannel::open() ping_channel.cc:76 (ping_check_unittests:x86_64+0x1000d4d6b)
#6 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:303 (ping_check_unittests:x86_64+0x1000530f4)
#7 (anonymous namespace)::PingChannelTest_sendReceiveMT_Test::TestBody() ping_channel_unittests.cc:513 (ping_check_unittests:x86_64+0x100058c99)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Mutex M0 (0x7b100000c740) created at:
#0 pthread_mutex_lock <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x3d2b0)
#1 std::__1::mutex::lock() <null>:156255423 (libc++.1.dylib:x86_64+0x13868)
#2 isc::util::MultiThreadingLock::MultiThreadingLock(std::__1::mutex&) multi_threading_mgr.cc:238 (libkea-util.79.dylib:x86_64+0x17c90)
#3 isc::ping_check::PingChannel::open() ping_channel.cc:60 (ping_check_unittests:x86_64+0x1000d4ad5)
#4 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:303 (ping_check_unittests:x86_64+0x1000530f4)
#5 (anonymous namespace)::PingChannelTest_sendReceiveMT_Test::TestBody() ping_channel_unittests.cc:513 (ping_check_unittests:x86_64+0x100058c99)
#6 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#7 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#8 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#9 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#10 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#11 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#12 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#13 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Mutex M1 (0x7b4400007270) created at:
#0 pthread_mutex_init <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x321e5)
#1 boost::asio::detail::conditionally_enabled_mutex::conditionally_enabled_mutex(bool) conditionally_enabled_mutex.hpp:108 (ping_check_unittests:x86_64+0x1000108a9)
#2 boost::asio::detail::kqueue_reactor::kqueue_reactor(boost::asio::execution_context&) kqueue_reactor.ipp:55 (ping_check_unittests:x86_64+0x10000cb12)
#3 boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::kqueue_reactor, boost::asio::execution_context>(void*) service_registry.hpp:87 (ping_check_unittests:x86_64+0x10000c87a)
#4 boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) service_registry.ipp:132 (ping_check_unittests:x86_64+0x10000c650)
#5 boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::reactive_socket_service<boost::asio::ip::icmp>, boost::asio::io_context>(void*) service_registry.hpp:87 (ping_check_unittests:x86_64+0x10000c4b5)
#6 boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) service_registry.ipp:132 (ping_check_unittests:x86_64+0x10000c650)
#7 isc::ping_check::PingChannel::open() ping_channel.cc:75 (ping_check_unittests:x86_64+0x1000d4c33)
#8 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:303 (ping_check_unittests:x86_64+0x1000530f4)
#9 (anonymous namespace)::PingChannelTest_sendReceiveMT_Test::TestBody() ping_channel_unittests.cc:513 (ping_check_unittests:x86_64+0x100058c99)
#10 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#11 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#12 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#13 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#14 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#15 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#16 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#17 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Thread T5 (tid=1927107, running) created by main thread at:
#0 pthread_create <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x3155f)
#1 std::__1::thread::thread<std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>, void>(std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>&&) thread:315 (libkea-asiolink.67.dylib:x86_64+0x2a04e)
#2 isc::asiolink::IoServiceThreadPool::setState(isc::asiolink::IoServiceThreadPool::State) io_service_thread_pool.cc:147 (libkea-asiolink.67.dylib:x86_64+0x28a04)
#3 isc::asiolink::IoServiceThreadPool::IoServiceThreadPool(boost::shared_ptr<isc::asiolink::IOService>, unsigned long, bool) io_service_thread_pool.cc:46 (libkea-asiolink.67.dylib:x86_64+0x28188)
#4 isc::asiolink::IoServiceThreadPool::IoServiceThreadPool(boost::shared_ptr<isc::asiolink::IOService>, unsigned long, bool) io_service_thread_pool.cc:34 (libkea-asiolink.67.dylib:x86_64+0x285be)
#5 (anonymous namespace)::PingChannelTest::initThreadPool(unsigned long, bool) ping_channel_unittests.cc:97 (ping_check_unittests:x86_64+0x10005551d)
#6 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:273 (ping_check_unittests:x86_64+0x10005289e)
#7 (anonymous namespace)::PingChannelTest_sendReceiveMT_Test::TestBody() ping_channel_unittests.cc:513 (ping_check_unittests:x86_64+0x100058c99)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
SUMMARY: ThreadSanitizer: data race kqueue_reactor.ipp:487 in boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&)
==================
[ OK ] PingChannelTest.sendReceiveMT (1254 ms)
```
```
[ RUN ] PingChannelTest.readExceptionErrorMT
==================
WARNING: ThreadSanitizer: data race (pid=98563)
Read of size 1 at 0x7b2800000cd8 by thread T11:
#0 boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&) kqueue_reactor.ipp:487 (ping_check_unittests:x86_64+0x10000dc66)
#1 non-virtual thunk to boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&) kqueue_reactor.hpp (ping_check_unittests:x86_64+0x10000e2ed)
#2 boost::asio::detail::scheduler::do_run_one(boost::asio::detail::conditionally_enabled_mutex::scoped_lock&, boost::asio::detail::scheduler_thread_info&, boost::system::error_code const&) scheduler.ipp:477 (libkea-asiolink.67.dylib:x86_64+0x141a8)
#3 boost::asio::detail::scheduler::run(boost::system::error_code&) scheduler.ipp:210 (libkea-asiolink.67.dylib:x86_64+0x13ca4)
#4 boost::asio::io_context::run() io_context.ipp:64 (libkea-asiolink.67.dylib:x86_64+0x1ff0e)
#5 isc::asiolink::IOService::run() io_service.cc:115 (libkea-asiolink.67.dylib:x86_64+0x1de46)
#6 isc::asiolink::IoServiceThreadPool::threadWork() io_service_thread_pool.cc:219 (libkea-asiolink.67.dylib:x86_64+0x29940)
#7 void* std::__1::__thread_proxy[abi:v160006]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>>>(void*) thread:299 (libkea-asiolink.67.dylib:x86_64+0x2a145)
Previous write of size 1 at 0x7b2800000cd8 by main thread (mutexes: write M0, write M1):
#0 boost::asio::detail::conditionally_enabled_mutex::conditionally_enabled_mutex(bool) conditionally_enabled_mutex.hpp:109 (ping_check_unittests:x86_64+0x10001095b)
#1 boost::asio::detail::kqueue_reactor::allocate_descriptor_state() kqueue_reactor.ipp:566 (ping_check_unittests:x86_64+0x10001affd)
#2 boost::asio::detail::reactive_socket_service_base::do_open(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, int, int, int, boost::system::error_code&) reactive_socket_service_base.ipp:188 (ping_check_unittests:x86_64+0x10001ab51)
#3 boost::asio::basic_socket<boost::asio::ip::icmp, boost::asio::any_io_executor>::open(boost::asio::ip::icmp const&) basic_socket.hpp:429 (ping_check_unittests:x86_64+0x10001a15a)
#4 isc::ping_check::ICMPSocket<isc::ping_check::SocketCallback>::open(isc::asiolink::IOEndpoint const*, isc::ping_check::SocketCallback&) icmp_socket.h:214 (ping_check_unittests:x86_64+0x1000d8464)
#5 isc::ping_check::PingChannel::open() ping_channel.cc:76 (ping_check_unittests:x86_64+0x1000d4d6b)
#6 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:387 (ping_check_unittests:x86_64+0x100059bc8)
#7 (anonymous namespace)::PingChannelTest_readExceptionErrorMT_Test::TestBody() ping_channel_unittests.cc:529 (ping_check_unittests:x86_64+0x10005e0ed)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Location is heap block of size 160 at 0x7b2800000c80 allocated by main thread:
#0 operator new(unsigned long) <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x82c0d)
#1 boost::asio::detail::kqueue_reactor::allocate_descriptor_state() kqueue_reactor.ipp:566 (ping_check_unittests:x86_64+0x10001afe4)
#2 boost::asio::detail::reactive_socket_service_base::do_open(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, int, int, int, boost::system::error_code&) reactive_socket_service_base.ipp:188 (ping_check_unittests:x86_64+0x10001ab51)
#3 boost::asio::basic_socket<boost::asio::ip::icmp, boost::asio::any_io_executor>::open(boost::asio::ip::icmp const&) basic_socket.hpp:429 (ping_check_unittests:x86_64+0x10001a15a)
#4 isc::ping_check::ICMPSocket<isc::ping_check::SocketCallback>::open(isc::asiolink::IOEndpoint const*, isc::ping_check::SocketCallback&) icmp_socket.h:214 (ping_check_unittests:x86_64+0x1000d8464)
#5 isc::ping_check::PingChannel::open() ping_channel.cc:76 (ping_check_unittests:x86_64+0x1000d4d6b)
#6 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:387 (ping_check_unittests:x86_64+0x100059bc8)
#7 (anonymous namespace)::PingChannelTest_readExceptionErrorMT_Test::TestBody() ping_channel_unittests.cc:529 (ping_check_unittests:x86_64+0x10005e0ed)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Mutex M0 (0x7b100000e580) created at:
#0 pthread_mutex_lock <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x3d2b0)
#1 std::__1::mutex::lock() <null>:156255423 (libc++.1.dylib:x86_64+0x13868)
#2 isc::util::MultiThreadingLock::MultiThreadingLock(std::__1::mutex&) multi_threading_mgr.cc:238 (libkea-util.79.dylib:x86_64+0x17c90)
#3 isc::ping_check::PingChannel::open() ping_channel.cc:60 (ping_check_unittests:x86_64+0x1000d4ad5)
#4 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:387 (ping_check_unittests:x86_64+0x100059bc8)
#5 (anonymous namespace)::PingChannelTest_readExceptionErrorMT_Test::TestBody() ping_channel_unittests.cc:529 (ping_check_unittests:x86_64+0x10005e0ed)
#6 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#7 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#8 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#9 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#10 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#11 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#12 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#13 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Mutex M1 (0x7b4400007270) created at:
#0 pthread_mutex_init <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x321e5)
#1 boost::asio::detail::conditionally_enabled_mutex::conditionally_enabled_mutex(bool) conditionally_enabled_mutex.hpp:108 (ping_check_unittests:x86_64+0x1000108a9)
#2 boost::asio::detail::kqueue_reactor::kqueue_reactor(boost::asio::execution_context&) kqueue_reactor.ipp:55 (ping_check_unittests:x86_64+0x10000cb12)
#3 boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::kqueue_reactor, boost::asio::execution_context>(void*) service_registry.hpp:87 (ping_check_unittests:x86_64+0x10000c87a)
#4 boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) service_registry.ipp:132 (ping_check_unittests:x86_64+0x10000c650)
#5 boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::reactive_socket_service<boost::asio::ip::icmp>, boost::asio::io_context>(void*) service_registry.hpp:87 (ping_check_unittests:x86_64+0x10000c4b5)
#6 boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) service_registry.ipp:132 (ping_check_unittests:x86_64+0x10000c650)
#7 isc::ping_check::PingChannel::open() ping_channel.cc:75 (ping_check_unittests:x86_64+0x1000d4c33)
#8 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:387 (ping_check_unittests:x86_64+0x100059bc8)
#9 (anonymous namespace)::PingChannelTest_readExceptionErrorMT_Test::TestBody() ping_channel_unittests.cc:529 (ping_check_unittests:x86_64+0x10005e0ed)
#10 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#11 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#12 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#13 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#14 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#15 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#16 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#17 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Thread T11 (tid=1927166, running) created by main thread at:
#0 pthread_create <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x3155f)
#1 std::__1::thread::thread<std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>, void>(std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>&&) thread:315 (libkea-asiolink.67.dylib:x86_64+0x2a04e)
#2 isc::asiolink::IoServiceThreadPool::setState(isc::asiolink::IoServiceThreadPool::State) io_service_thread_pool.cc:147 (libkea-asiolink.67.dylib:x86_64+0x28a04)
#3 isc::asiolink::IoServiceThreadPool::IoServiceThreadPool(boost::shared_ptr<isc::asiolink::IOService>, unsigned long, bool) io_service_thread_pool.cc:46 (libkea-asiolink.67.dylib:x86_64+0x28188)
#4 isc::asiolink::IoServiceThreadPool::IoServiceThreadPool(boost::shared_ptr<isc::asiolink::IOService>, unsigned long, bool) io_service_thread_pool.cc:34 (libkea-asiolink.67.dylib:x86_64+0x285be)
#5 (anonymous namespace)::PingChannelTest::initThreadPool(unsigned long, bool) ping_channel_unittests.cc:97 (ping_check_unittests:x86_64+0x10005551d)
#6 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:348 (ping_check_unittests:x86_64+0x1000591ca)
#7 (anonymous namespace)::PingChannelTest_readExceptionErrorMT_Test::TestBody() ping_channel_unittests.cc:529 (ping_check_unittests:x86_64+0x10005e0ed)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
SUMMARY: ThreadSanitizer: data race kqueue_reactor.ipp:487 in boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&)
==================
[ OK ] PingChannelTest.readExceptionErrorMT (136 ms)
```
```
[ RUN ] PingChannelTest.readFatalErrorMT
==================
WARNING: ThreadSanitizer: data race (pid=98563)
Read of size 1 at 0x7b2800000a58 by thread T15:
#0 boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&) kqueue_reactor.ipp:487 (ping_check_unittests:x86_64+0x10000dc66)
#1 non-virtual thunk to boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&) kqueue_reactor.hpp (ping_check_unittests:x86_64+0x10000e2ed)
#2 boost::asio::detail::scheduler::do_run_one(boost::asio::detail::conditionally_enabled_mutex::scoped_lock&, boost::asio::detail::scheduler_thread_info&, boost::system::error_code const&) scheduler.ipp:477 (libkea-asiolink.67.dylib:x86_64+0x141a8)
#3 boost::asio::detail::scheduler::run(boost::system::error_code&) scheduler.ipp:210 (libkea-asiolink.67.dylib:x86_64+0x13ca4)
#4 boost::asio::io_context::run() io_context.ipp:64 (libkea-asiolink.67.dylib:x86_64+0x1ff0e)
#5 isc::asiolink::IOService::run() io_service.cc:115 (libkea-asiolink.67.dylib:x86_64+0x1de46)
#6 isc::asiolink::IoServiceThreadPool::threadWork() io_service_thread_pool.cc:219 (libkea-asiolink.67.dylib:x86_64+0x29940)
#7 void* std::__1::__thread_proxy[abi:v160006]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>>>(void*) thread:299 (libkea-asiolink.67.dylib:x86_64+0x2a145)
Previous write of size 1 at 0x7b2800000a58 by main thread (mutexes: write M0, write M1):
#0 boost::asio::detail::conditionally_enabled_mutex::conditionally_enabled_mutex(bool) conditionally_enabled_mutex.hpp:109 (ping_check_unittests:x86_64+0x10001095b)
#1 boost::asio::detail::kqueue_reactor::allocate_descriptor_state() kqueue_reactor.ipp:566 (ping_check_unittests:x86_64+0x10001affd)
#2 boost::asio::detail::reactive_socket_service_base::do_open(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, int, int, int, boost::system::error_code&) reactive_socket_service_base.ipp:188 (ping_check_unittests:x86_64+0x10001ab51)
#3 boost::asio::basic_socket<boost::asio::ip::icmp, boost::asio::any_io_executor>::open(boost::asio::ip::icmp const&) basic_socket.hpp:429 (ping_check_unittests:x86_64+0x10001a15a)
#4 isc::ping_check::ICMPSocket<isc::ping_check::SocketCallback>::open(isc::asiolink::IOEndpoint const*, isc::ping_check::SocketCallback&) icmp_socket.h:214 (ping_check_unittests:x86_64+0x1000d8464)
#5 isc::ping_check::PingChannel::open() ping_channel.cc:76 (ping_check_unittests:x86_64+0x1000d4d6b)
#6 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:387 (ping_check_unittests:x86_64+0x100059bc8)
#7 (anonymous namespace)::PingChannelTest_readFatalErrorMT_Test::TestBody() ping_channel_unittests.cc:549 (ping_check_unittests:x86_64+0x10005ea63)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Location is heap block of size 160 at 0x7b2800000a00 allocated by main thread:
#0 operator new(unsigned long) <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x82c0d)
#1 boost::asio::detail::kqueue_reactor::allocate_descriptor_state() kqueue_reactor.ipp:566 (ping_check_unittests:x86_64+0x10001afe4)
#2 boost::asio::detail::reactive_socket_service_base::do_open(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, int, int, int, boost::system::error_code&) reactive_socket_service_base.ipp:188 (ping_check_unittests:x86_64+0x10001ab51)
#3 boost::asio::basic_socket<boost::asio::ip::icmp, boost::asio::any_io_executor>::open(boost::asio::ip::icmp const&) basic_socket.hpp:429 (ping_check_unittests:x86_64+0x10001a15a)
#4 isc::ping_check::ICMPSocket<isc::ping_check::SocketCallback>::open(isc::asiolink::IOEndpoint const*, isc::ping_check::SocketCallback&) icmp_socket.h:214 (ping_check_unittests:x86_64+0x1000d8464)
#5 isc::ping_check::PingChannel::open() ping_channel.cc:76 (ping_check_unittests:x86_64+0x1000d4d6b)
#6 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:387 (ping_check_unittests:x86_64+0x100059bc8)
#7 (anonymous namespace)::PingChannelTest_readFatalErrorMT_Test::TestBody() ping_channel_unittests.cc:549 (ping_check_unittests:x86_64+0x10005ea63)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Mutex M0 (0x7b1000012a00) created at:
#0 pthread_mutex_lock <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x3d2b0)
#1 std::__1::mutex::lock() <null>:156255423 (libc++.1.dylib:x86_64+0x13868)
#2 isc::util::MultiThreadingLock::MultiThreadingLock(std::__1::mutex&) multi_threading_mgr.cc:238 (libkea-util.79.dylib:x86_64+0x17c90)
#3 isc::ping_check::PingChannel::open() ping_channel.cc:60 (ping_check_unittests:x86_64+0x1000d4ad5)
#4 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:387 (ping_check_unittests:x86_64+0x100059bc8)
#5 (anonymous namespace)::PingChannelTest_readFatalErrorMT_Test::TestBody() ping_channel_unittests.cc:549 (ping_check_unittests:x86_64+0x10005ea63)
#6 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#7 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#8 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#9 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#10 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#11 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#12 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#13 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Mutex M1 (0x7b4400007270) created at:
#0 pthread_mutex_init <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x321e5)
#1 boost::asio::detail::conditionally_enabled_mutex::conditionally_enabled_mutex(bool) conditionally_enabled_mutex.hpp:108 (ping_check_unittests:x86_64+0x1000108a9)
#2 boost::asio::detail::kqueue_reactor::kqueue_reactor(boost::asio::execution_context&) kqueue_reactor.ipp:55 (ping_check_unittests:x86_64+0x10000cb12)
#3 boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::kqueue_reactor, boost::asio::execution_context>(void*) service_registry.hpp:87 (ping_check_unittests:x86_64+0x10000c87a)
#4 boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) service_registry.ipp:132 (ping_check_unittests:x86_64+0x10000c650)
#5 boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::reactive_socket_service<boost::asio::ip::icmp>, boost::asio::io_context>(void*) service_registry.hpp:87 (ping_check_unittests:x86_64+0x10000c4b5)
#6 boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) service_registry.ipp:132 (ping_check_unittests:x86_64+0x10000c650)
#7 isc::ping_check::PingChannel::open() ping_channel.cc:75 (ping_check_unittests:x86_64+0x1000d4c33)
#8 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:387 (ping_check_unittests:x86_64+0x100059bc8)
#9 (anonymous namespace)::PingChannelTest_readFatalErrorMT_Test::TestBody() ping_channel_unittests.cc:549 (ping_check_unittests:x86_64+0x10005ea63)
#10 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#11 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#12 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#13 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#14 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#15 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#16 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#17 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Thread T15 (tid=1927170, running) created by main thread at:
#0 pthread_create <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x3155f)
#1 std::__1::thread::thread<std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>, void>(std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>&&) thread:315 (libkea-asiolink.67.dylib:x86_64+0x2a04e)
#2 isc::asiolink::IoServiceThreadPool::setState(isc::asiolink::IoServiceThreadPool::State) io_service_thread_pool.cc:147 (libkea-asiolink.67.dylib:x86_64+0x28a04)
#3 isc::asiolink::IoServiceThreadPool::IoServiceThreadPool(boost::shared_ptr<isc::asiolink::IOService>, unsigned long, bool) io_service_thread_pool.cc:46 (libkea-asiolink.67.dylib:x86_64+0x28188)
#4 isc::asiolink::IoServiceThreadPool::IoServiceThreadPool(boost::shared_ptr<isc::asiolink::IOService>, unsigned long, bool) io_service_thread_pool.cc:34 (libkea-asiolink.67.dylib:x86_64+0x285be)
#5 (anonymous namespace)::PingChannelTest::initThreadPool(unsigned long, bool) ping_channel_unittests.cc:97 (ping_check_unittests:x86_64+0x10005551d)
#6 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:348 (ping_check_unittests:x86_64+0x1000591ca)
#7 (anonymous namespace)::PingChannelTest_readFatalErrorMT_Test::TestBody() ping_channel_unittests.cc:549 (ping_check_unittests:x86_64+0x10005ea63)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
SUMMARY: ThreadSanitizer: data race kqueue_reactor.ipp:487 in boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&)
==================
[ OK ] PingChannelTest.readFatalErrorMT (68 ms)
```
```
[ RUN ] PingChannelTest.readAgainErrorMT
==================
WARNING: ThreadSanitizer: data race (pid=98563)
Read of size 1 at 0x7b2800000cd8 by thread T16:
#0 boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&) kqueue_reactor.ipp:487 (ping_check_unittests:x86_64+0x10000dc66)
#1 non-virtual thunk to boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&) kqueue_reactor.hpp (ping_check_unittests:x86_64+0x10000e2ed)
#2 boost::asio::detail::scheduler::do_run_one(boost::asio::detail::conditionally_enabled_mutex::scoped_lock&, boost::asio::detail::scheduler_thread_info&, boost::system::error_code const&) scheduler.ipp:477 (libkea-asiolink.67.dylib:x86_64+0x141a8)
#3 boost::asio::detail::scheduler::run(boost::system::error_code&) scheduler.ipp:210 (libkea-asiolink.67.dylib:x86_64+0x13ca4)
#4 boost::asio::io_context::run() io_context.ipp:64 (libkea-asiolink.67.dylib:x86_64+0x1ff0e)
#5 isc::asiolink::IOService::run() io_service.cc:115 (libkea-asiolink.67.dylib:x86_64+0x1de46)
#6 isc::asiolink::IoServiceThreadPool::threadWork() io_service_thread_pool.cc:219 (libkea-asiolink.67.dylib:x86_64+0x29940)
#7 void* std::__1::__thread_proxy[abi:v160006]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>>>(void*) thread:299 (libkea-asiolink.67.dylib:x86_64+0x2a145)
Previous write of size 1 at 0x7b2800000cd8 by main thread (mutexes: write M0, write M1):
#0 boost::asio::detail::conditionally_enabled_mutex::conditionally_enabled_mutex(bool) conditionally_enabled_mutex.hpp:109 (ping_check_unittests:x86_64+0x10001095b)
#1 boost::asio::detail::kqueue_reactor::allocate_descriptor_state() kqueue_reactor.ipp:566 (ping_check_unittests:x86_64+0x10001affd)
#2 boost::asio::detail::reactive_socket_service_base::do_open(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, int, int, int, boost::system::error_code&) reactive_socket_service_base.ipp:188 (ping_check_unittests:x86_64+0x10001ab51)
#3 boost::asio::basic_socket<boost::asio::ip::icmp, boost::asio::any_io_executor>::open(boost::asio::ip::icmp const&) basic_socket.hpp:429 (ping_check_unittests:x86_64+0x10001a15a)
#4 isc::ping_check::ICMPSocket<isc::ping_check::SocketCallback>::open(isc::asiolink::IOEndpoint const*, isc::ping_check::SocketCallback&) icmp_socket.h:214 (ping_check_unittests:x86_64+0x1000d8464)
#5 isc::ping_check::PingChannel::open() ping_channel.cc:76 (ping_check_unittests:x86_64+0x1000d4d6b)
#6 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:303 (ping_check_unittests:x86_64+0x1000530f4)
#7 (anonymous namespace)::PingChannelTest_readAgainErrorMT_Test::TestBody() ping_channel_unittests.cc:571 (ping_check_unittests:x86_64+0x10005f49d)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Location is heap block of size 160 at 0x7b2800000c80 allocated by main thread:
#0 operator new(unsigned long) <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x82c0d)
#1 boost::asio::detail::kqueue_reactor::allocate_descriptor_state() kqueue_reactor.ipp:566 (ping_check_unittests:x86_64+0x10001afe4)
#2 boost::asio::detail::reactive_socket_service_base::do_open(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, int, int, int, boost::system::error_code&) reactive_socket_service_base.ipp:188 (ping_check_unittests:x86_64+0x10001ab51)
#3 boost::asio::basic_socket<boost::asio::ip::icmp, boost::asio::any_io_executor>::open(boost::asio::ip::icmp const&) basic_socket.hpp:429 (ping_check_unittests:x86_64+0x10001a15a)
#4 isc::ping_check::ICMPSocket<isc::ping_check::SocketCallback>::open(isc::asiolink::IOEndpoint const*, isc::ping_check::SocketCallback&) icmp_socket.h:214 (ping_check_unittests:x86_64+0x1000d8464)
#5 isc::ping_check::PingChannel::open() ping_channel.cc:76 (ping_check_unittests:x86_64+0x1000d4d6b)
#6 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:303 (ping_check_unittests:x86_64+0x1000530f4)
#7 (anonymous namespace)::PingChannelTest_readAgainErrorMT_Test::TestBody() ping_channel_unittests.cc:571 (ping_check_unittests:x86_64+0x10005f49d)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Mutex M0 (0x7b1000014dc0) created at:
#0 pthread_mutex_lock <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x3d2b0)
#1 std::__1::mutex::lock() <null>:156255423 (libc++.1.dylib:x86_64+0x13868)
#2 isc::util::MultiThreadingLock::MultiThreadingLock(std::__1::mutex&) multi_threading_mgr.cc:238 (libkea-util.79.dylib:x86_64+0x17c90)
#3 isc::ping_check::PingChannel::open() ping_channel.cc:60 (ping_check_unittests:x86_64+0x1000d4ad5)
#4 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:303 (ping_check_unittests:x86_64+0x1000530f4)
#5 (anonymous namespace)::PingChannelTest_readAgainErrorMT_Test::TestBody() ping_channel_unittests.cc:571 (ping_check_unittests:x86_64+0x10005f49d)
#6 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#7 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#8 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#9 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#10 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#11 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#12 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#13 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Mutex M1 (0x7b4400007270) created at:
#0 pthread_mutex_init <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x321e5)
#1 boost::asio::detail::conditionally_enabled_mutex::conditionally_enabled_mutex(bool) conditionally_enabled_mutex.hpp:108 (ping_check_unittests:x86_64+0x1000108a9)
#2 boost::asio::detail::kqueue_reactor::kqueue_reactor(boost::asio::execution_context&) kqueue_reactor.ipp:55 (ping_check_unittests:x86_64+0x10000cb12)
#3 boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::kqueue_reactor, boost::asio::execution_context>(void*) service_registry.hpp:87 (ping_check_unittests:x86_64+0x10000c87a)
#4 boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) service_registry.ipp:132 (ping_check_unittests:x86_64+0x10000c650)
#5 boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::reactive_socket_service<boost::asio::ip::icmp>, boost::asio::io_context>(void*) service_registry.hpp:87 (ping_check_unittests:x86_64+0x10000c4b5)
#6 boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) service_registry.ipp:132 (ping_check_unittests:x86_64+0x10000c650)
#7 isc::ping_check::PingChannel::open() ping_channel.cc:75 (ping_check_unittests:x86_64+0x1000d4c33)
#8 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:303 (ping_check_unittests:x86_64+0x1000530f4)
#9 (anonymous namespace)::PingChannelTest_readAgainErrorMT_Test::TestBody() ping_channel_unittests.cc:571 (ping_check_unittests:x86_64+0x10005f49d)
#10 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#11 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#12 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#13 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#14 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#15 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#16 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#17 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Thread T16 (tid=1927171, running) created by main thread at:
#0 pthread_create <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x3155f)
#1 std::__1::thread::thread<std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>, void>(std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>&&) thread:315 (libkea-asiolink.67.dylib:x86_64+0x2a04e)
#2 isc::asiolink::IoServiceThreadPool::setState(isc::asiolink::IoServiceThreadPool::State) io_service_thread_pool.cc:147 (libkea-asiolink.67.dylib:x86_64+0x28a04)
#3 isc::asiolink::IoServiceThreadPool::IoServiceThreadPool(boost::shared_ptr<isc::asiolink::IOService>, unsigned long, bool) io_service_thread_pool.cc:46 (libkea-asiolink.67.dylib:x86_64+0x28188)
#4 isc::asiolink::IoServiceThreadPool::IoServiceThreadPool(boost::shared_ptr<isc::asiolink::IOService>, unsigned long, bool) io_service_thread_pool.cc:34 (libkea-asiolink.67.dylib:x86_64+0x285be)
#5 (anonymous namespace)::PingChannelTest::initThreadPool(unsigned long, bool) ping_channel_unittests.cc:97 (ping_check_unittests:x86_64+0x10005551d)
#6 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:273 (ping_check_unittests:x86_64+0x10005289e)
#7 (anonymous namespace)::PingChannelTest_readAgainErrorMT_Test::TestBody() ping_channel_unittests.cc:571 (ping_check_unittests:x86_64+0x10005f49d)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
SUMMARY: ThreadSanitizer: data race kqueue_reactor.ipp:487 in boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&)
==================
[ OK ] PingChannelTest.readAgainErrorMT (66 ms)
```
```
[ RUN ] PingChannelTest.writeExceptionErrorMT
==================
WARNING: ThreadSanitizer: data race (pid=98563)
Read of size 1 at 0x7b2800000cd8 by thread T20:
#0 boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&) kqueue_reactor.ipp:487 (ping_check_unittests:x86_64+0x10000dc66)
#1 non-virtual thunk to boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&) kqueue_reactor.hpp (ping_check_unittests:x86_64+0x10000e2ed)
#2 boost::asio::detail::scheduler::do_run_one(boost::asio::detail::conditionally_enabled_mutex::scoped_lock&, boost::asio::detail::scheduler_thread_info&, boost::system::error_code const&) scheduler.ipp:477 (libkea-asiolink.67.dylib:x86_64+0x141a8)
#3 boost::asio::detail::scheduler::run(boost::system::error_code&) scheduler.ipp:210 (libkea-asiolink.67.dylib:x86_64+0x13ca4)
#4 boost::asio::io_context::run() io_context.ipp:64 (libkea-asiolink.67.dylib:x86_64+0x1ff0e)
#5 isc::asiolink::IOService::run() io_service.cc:115 (libkea-asiolink.67.dylib:x86_64+0x1de46)
#6 isc::asiolink::IoServiceThreadPool::threadWork() io_service_thread_pool.cc:219 (libkea-asiolink.67.dylib:x86_64+0x29940)
#7 void* std::__1::__thread_proxy[abi:v160006]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>>>(void*) thread:299 (libkea-asiolink.67.dylib:x86_64+0x2a145)
Previous write of size 1 at 0x7b2800000cd8 by main thread (mutexes: write M0, write M1):
#0 boost::asio::detail::conditionally_enabled_mutex::conditionally_enabled_mutex(bool) conditionally_enabled_mutex.hpp:109 (ping_check_unittests:x86_64+0x10001095b)
#1 boost::asio::detail::kqueue_reactor::allocate_descriptor_state() kqueue_reactor.ipp:566 (ping_check_unittests:x86_64+0x10001affd)
#2 boost::asio::detail::reactive_socket_service_base::do_open(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, int, int, int, boost::system::error_code&) reactive_socket_service_base.ipp:188 (ping_check_unittests:x86_64+0x10001ab51)
#3 boost::asio::basic_socket<boost::asio::ip::icmp, boost::asio::any_io_executor>::open(boost::asio::ip::icmp const&) basic_socket.hpp:429 (ping_check_unittests:x86_64+0x10001a15a)
#4 isc::ping_check::ICMPSocket<isc::ping_check::SocketCallback>::open(isc::asiolink::IOEndpoint const*, isc::ping_check::SocketCallback&) icmp_socket.h:214 (ping_check_unittests:x86_64+0x1000d8464)
#5 isc::ping_check::PingChannel::open() ping_channel.cc:76 (ping_check_unittests:x86_64+0x1000d4d6b)
#6 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:387 (ping_check_unittests:x86_64+0x100059bc8)
#7 (anonymous namespace)::PingChannelTest_writeExceptionErrorMT_Test::TestBody() ping_channel_unittests.cc:592 (ping_check_unittests:x86_64+0x10005fe0d)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Location is heap block of size 160 at 0x7b2800000c80 allocated by main thread:
#0 operator new(unsigned long) <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x82c0d)
#1 boost::asio::detail::kqueue_reactor::allocate_descriptor_state() kqueue_reactor.ipp:566 (ping_check_unittests:x86_64+0x10001afe4)
#2 boost::asio::detail::reactive_socket_service_base::do_open(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, int, int, int, boost::system::error_code&) reactive_socket_service_base.ipp:188 (ping_check_unittests:x86_64+0x10001ab51)
#3 boost::asio::basic_socket<boost::asio::ip::icmp, boost::asio::any_io_executor>::open(boost::asio::ip::icmp const&) basic_socket.hpp:429 (ping_check_unittests:x86_64+0x10001a15a)
#4 isc::ping_check::ICMPSocket<isc::ping_check::SocketCallback>::open(isc::asiolink::IOEndpoint const*, isc::ping_check::SocketCallback&) icmp_socket.h:214 (ping_check_unittests:x86_64+0x1000d8464)
#5 isc::ping_check::PingChannel::open() ping_channel.cc:76 (ping_check_unittests:x86_64+0x1000d4d6b)
#6 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:387 (ping_check_unittests:x86_64+0x100059bc8)
#7 (anonymous namespace)::PingChannelTest_writeExceptionErrorMT_Test::TestBody() ping_channel_unittests.cc:592 (ping_check_unittests:x86_64+0x10005fe0d)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Mutex M0 (0x7b1000012f80) created at:
#0 pthread_mutex_lock <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x3d2b0)
#1 std::__1::mutex::lock() <null>:156255423 (libc++.1.dylib:x86_64+0x13868)
#2 isc::util::MultiThreadingLock::MultiThreadingLock(std::__1::mutex&) multi_threading_mgr.cc:238 (libkea-util.79.dylib:x86_64+0x17c90)
#3 isc::ping_check::PingChannel::open() ping_channel.cc:60 (ping_check_unittests:x86_64+0x1000d4ad5)
#4 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:387 (ping_check_unittests:x86_64+0x100059bc8)
#5 (anonymous namespace)::PingChannelTest_writeExceptionErrorMT_Test::TestBody() ping_channel_unittests.cc:592 (ping_check_unittests:x86_64+0x10005fe0d)
#6 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#7 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#8 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#9 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#10 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#11 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#12 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#13 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Mutex M1 (0x7b4400007270) created at:
#0 pthread_mutex_init <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x321e5)
#1 boost::asio::detail::conditionally_enabled_mutex::conditionally_enabled_mutex(bool) conditionally_enabled_mutex.hpp:108 (ping_check_unittests:x86_64+0x1000108a9)
#2 boost::asio::detail::kqueue_reactor::kqueue_reactor(boost::asio::execution_context&) kqueue_reactor.ipp:55 (ping_check_unittests:x86_64+0x10000cb12)
#3 boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::kqueue_reactor, boost::asio::execution_context>(void*) service_registry.hpp:87 (ping_check_unittests:x86_64+0x10000c87a)
#4 boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) service_registry.ipp:132 (ping_check_unittests:x86_64+0x10000c650)
#5 boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::reactive_socket_service<boost::asio::ip::icmp>, boost::asio::io_context>(void*) service_registry.hpp:87 (ping_check_unittests:x86_64+0x10000c4b5)
#6 boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) service_registry.ipp:132 (ping_check_unittests:x86_64+0x10000c650)
#7 isc::ping_check::PingChannel::open() ping_channel.cc:75 (ping_check_unittests:x86_64+0x1000d4c33)
#8 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:387 (ping_check_unittests:x86_64+0x100059bc8)
#9 (anonymous namespace)::PingChannelTest_writeExceptionErrorMT_Test::TestBody() ping_channel_unittests.cc:592 (ping_check_unittests:x86_64+0x10005fe0d)
#10 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#11 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#12 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#13 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#14 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#15 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#16 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#17 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Thread T20 (tid=1927176, running) created by main thread at:
#0 pthread_create <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x3155f)
#1 std::__1::thread::thread<std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>, void>(std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>&&) thread:315 (libkea-asiolink.67.dylib:x86_64+0x2a04e)
#2 isc::asiolink::IoServiceThreadPool::setState(isc::asiolink::IoServiceThreadPool::State) io_service_thread_pool.cc:147 (libkea-asiolink.67.dylib:x86_64+0x28a04)
#3 isc::asiolink::IoServiceThreadPool::IoServiceThreadPool(boost::shared_ptr<isc::asiolink::IOService>, unsigned long, bool) io_service_thread_pool.cc:46 (libkea-asiolink.67.dylib:x86_64+0x28188)
#4 isc::asiolink::IoServiceThreadPool::IoServiceThreadPool(boost::shared_ptr<isc::asiolink::IOService>, unsigned long, bool) io_service_thread_pool.cc:34 (libkea-asiolink.67.dylib:x86_64+0x285be)
#5 (anonymous namespace)::PingChannelTest::initThreadPool(unsigned long, bool) ping_channel_unittests.cc:97 (ping_check_unittests:x86_64+0x10005551d)
#6 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:348 (ping_check_unittests:x86_64+0x1000591ca)
#7 (anonymous namespace)::PingChannelTest_writeExceptionErrorMT_Test::TestBody() ping_channel_unittests.cc:592 (ping_check_unittests:x86_64+0x10005fe0d)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
SUMMARY: ThreadSanitizer: data race kqueue_reactor.ipp:487 in boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&)
==================
[ OK ] PingChannelTest.writeExceptionErrorMT (66 ms)
```
```
[ RUN ] PingChannelTest.writeFatalErrorMT
==================
WARNING: ThreadSanitizer: data race (pid=98563)
Read of size 1 at 0x7b2800000a58 by thread T26:
#0 boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&) kqueue_reactor.ipp:487 (ping_check_unittests:x86_64+0x10000dc66)
#1 non-virtual thunk to boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&) kqueue_reactor.hpp (ping_check_unittests:x86_64+0x10000e2ed)
#2 boost::asio::detail::scheduler::do_run_one(boost::asio::detail::conditionally_enabled_mutex::scoped_lock&, boost::asio::detail::scheduler_thread_info&, boost::system::error_code const&) scheduler.ipp:477 (libkea-asiolink.67.dylib:x86_64+0x141a8)
#3 boost::asio::detail::scheduler::run(boost::system::error_code&) scheduler.ipp:210 (libkea-asiolink.67.dylib:x86_64+0x13ca4)
#4 boost::asio::io_context::run() io_context.ipp:64 (libkea-asiolink.67.dylib:x86_64+0x1ff0e)
#5 isc::asiolink::IOService::run() io_service.cc:115 (libkea-asiolink.67.dylib:x86_64+0x1de46)
#6 isc::asiolink::IoServiceThreadPool::threadWork() io_service_thread_pool.cc:219 (libkea-asiolink.67.dylib:x86_64+0x29940)
#7 void* std::__1::__thread_proxy[abi:v160006]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>>>(void*) thread:299 (libkea-asiolink.67.dylib:x86_64+0x2a145)
Previous write of size 1 at 0x7b2800000a58 by main thread (mutexes: write M0, write M1):
#0 boost::asio::detail::conditionally_enabled_mutex::conditionally_enabled_mutex(bool) conditionally_enabled_mutex.hpp:109 (ping_check_unittests:x86_64+0x10001095b)
#1 boost::asio::detail::kqueue_reactor::allocate_descriptor_state() kqueue_reactor.ipp:566 (ping_check_unittests:x86_64+0x10001affd)
#2 boost::asio::detail::reactive_socket_service_base::do_open(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, int, int, int, boost::system::error_code&) reactive_socket_service_base.ipp:188 (ping_check_unittests:x86_64+0x10001ab51)
#3 boost::asio::basic_socket<boost::asio::ip::icmp, boost::asio::any_io_executor>::open(boost::asio::ip::icmp const&) basic_socket.hpp:429 (ping_check_unittests:x86_64+0x10001a15a)
#4 isc::ping_check::ICMPSocket<isc::ping_check::SocketCallback>::open(isc::asiolink::IOEndpoint const*, isc::ping_check::SocketCallback&) icmp_socket.h:214 (ping_check_unittests:x86_64+0x1000d8464)
#5 isc::ping_check::PingChannel::open() ping_channel.cc:76 (ping_check_unittests:x86_64+0x1000d4d6b)
#6 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:387 (ping_check_unittests:x86_64+0x100059bc8)
#7 (anonymous namespace)::PingChannelTest_writeFatalErrorMT_Test::TestBody() ping_channel_unittests.cc:612 (ping_check_unittests:x86_64+0x100060783)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Location is heap block of size 160 at 0x7b2800000a00 allocated by main thread:
#0 operator new(unsigned long) <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x82c0d)
#1 boost::asio::detail::kqueue_reactor::allocate_descriptor_state() kqueue_reactor.ipp:566 (ping_check_unittests:x86_64+0x10001afe4)
#2 boost::asio::detail::reactive_socket_service_base::do_open(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, int, int, int, boost::system::error_code&) reactive_socket_service_base.ipp:188 (ping_check_unittests:x86_64+0x10001ab51)
#3 boost::asio::basic_socket<boost::asio::ip::icmp, boost::asio::any_io_executor>::open(boost::asio::ip::icmp const&) basic_socket.hpp:429 (ping_check_unittests:x86_64+0x10001a15a)
#4 isc::ping_check::ICMPSocket<isc::ping_check::SocketCallback>::open(isc::asiolink::IOEndpoint const*, isc::ping_check::SocketCallback&) icmp_socket.h:214 (ping_check_unittests:x86_64+0x1000d8464)
#5 isc::ping_check::PingChannel::open() ping_channel.cc:76 (ping_check_unittests:x86_64+0x1000d4d6b)
#6 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:387 (ping_check_unittests:x86_64+0x100059bc8)
#7 (anonymous namespace)::PingChannelTest_writeFatalErrorMT_Test::TestBody() ping_channel_unittests.cc:612 (ping_check_unittests:x86_64+0x100060783)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Mutex M0 (0x7b1000013180) created at:
#0 pthread_mutex_lock <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x3d2b0)
#1 std::__1::mutex::lock() <null>:156255423 (libc++.1.dylib:x86_64+0x13868)
#2 isc::util::MultiThreadingLock::MultiThreadingLock(std::__1::mutex&) multi_threading_mgr.cc:238 (libkea-util.79.dylib:x86_64+0x17c90)
#3 isc::ping_check::PingChannel::open() ping_channel.cc:60 (ping_check_unittests:x86_64+0x1000d4ad5)
#4 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:387 (ping_check_unittests:x86_64+0x100059bc8)
#5 (anonymous namespace)::PingChannelTest_writeFatalErrorMT_Test::TestBody() ping_channel_unittests.cc:612 (ping_check_unittests:x86_64+0x100060783)
#6 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#7 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#8 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#9 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#10 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#11 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#12 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#13 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Mutex M1 (0x7b4400007270) created at:
#0 pthread_mutex_init <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x321e5)
#1 boost::asio::detail::conditionally_enabled_mutex::conditionally_enabled_mutex(bool) conditionally_enabled_mutex.hpp:108 (ping_check_unittests:x86_64+0x1000108a9)
#2 boost::asio::detail::kqueue_reactor::kqueue_reactor(boost::asio::execution_context&) kqueue_reactor.ipp:55 (ping_check_unittests:x86_64+0x10000cb12)
#3 boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::kqueue_reactor, boost::asio::execution_context>(void*) service_registry.hpp:87 (ping_check_unittests:x86_64+0x10000c87a)
#4 boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) service_registry.ipp:132 (ping_check_unittests:x86_64+0x10000c650)
#5 boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::reactive_socket_service<boost::asio::ip::icmp>, boost::asio::io_context>(void*) service_registry.hpp:87 (ping_check_unittests:x86_64+0x10000c4b5)
#6 boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) service_registry.ipp:132 (ping_check_unittests:x86_64+0x10000c650)
#7 isc::ping_check::PingChannel::open() ping_channel.cc:75 (ping_check_unittests:x86_64+0x1000d4c33)
#8 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:387 (ping_check_unittests:x86_64+0x100059bc8)
#9 (anonymous namespace)::PingChannelTest_writeFatalErrorMT_Test::TestBody() ping_channel_unittests.cc:612 (ping_check_unittests:x86_64+0x100060783)
#10 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#11 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#12 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#13 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#14 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#15 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#16 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#17 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Thread T26 (tid=1927182, running) created by main thread at:
#0 pthread_create <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x3155f)
#1 std::__1::thread::thread<std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>, void>(std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>&&) thread:315 (libkea-asiolink.67.dylib:x86_64+0x2a04e)
#2 isc::asiolink::IoServiceThreadPool::setState(isc::asiolink::IoServiceThreadPool::State) io_service_thread_pool.cc:147 (libkea-asiolink.67.dylib:x86_64+0x28a04)
#3 isc::asiolink::IoServiceThreadPool::IoServiceThreadPool(boost::shared_ptr<isc::asiolink::IOService>, unsigned long, bool) io_service_thread_pool.cc:46 (libkea-asiolink.67.dylib:x86_64+0x28188)
#4 isc::asiolink::IoServiceThreadPool::IoServiceThreadPool(boost::shared_ptr<isc::asiolink::IOService>, unsigned long, bool) io_service_thread_pool.cc:34 (libkea-asiolink.67.dylib:x86_64+0x285be)
#5 (anonymous namespace)::PingChannelTest::initThreadPool(unsigned long, bool) ping_channel_unittests.cc:97 (ping_check_unittests:x86_64+0x10005551d)
#6 (anonymous namespace)::PingChannelTest::ioErrorTest(std::__1::function<void ()> const&, unsigned long, unsigned long) ping_channel_unittests.cc:348 (ping_check_unittests:x86_64+0x1000591ca)
#7 (anonymous namespace)::PingChannelTest_writeFatalErrorMT_Test::TestBody() ping_channel_unittests.cc:612 (ping_check_unittests:x86_64+0x100060783)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
SUMMARY: ThreadSanitizer: data race kqueue_reactor.ipp:487 in boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&)
==================
[ OK ] PingChannelTest.writeFatalErrorMT (78 ms)
```
```
[ RUN ] PingChannelTest.writeAgainErrorMT
==================
WARNING: ThreadSanitizer: data race (pid=98563)
Read of size 1 at 0x7b2800000cd8 by thread T27:
#0 boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&) kqueue_reactor.ipp:487 (ping_check_unittests:x86_64+0x10000dc66)
#1 non-virtual thunk to boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&) kqueue_reactor.hpp (ping_check_unittests:x86_64+0x10000e2ed)
#2 boost::asio::detail::scheduler::do_run_one(boost::asio::detail::conditionally_enabled_mutex::scoped_lock&, boost::asio::detail::scheduler_thread_info&, boost::system::error_code const&) scheduler.ipp:477 (libkea-asiolink.67.dylib:x86_64+0x141a8)
#3 boost::asio::detail::scheduler::run(boost::system::error_code&) scheduler.ipp:210 (libkea-asiolink.67.dylib:x86_64+0x13ca4)
#4 boost::asio::io_context::run() io_context.ipp:64 (libkea-asiolink.67.dylib:x86_64+0x1ff0e)
#5 isc::asiolink::IOService::run() io_service.cc:115 (libkea-asiolink.67.dylib:x86_64+0x1de46)
#6 isc::asiolink::IoServiceThreadPool::threadWork() io_service_thread_pool.cc:219 (libkea-asiolink.67.dylib:x86_64+0x29940)
#7 void* std::__1::__thread_proxy[abi:v160006]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>>>(void*) thread:299 (libkea-asiolink.67.dylib:x86_64+0x2a145)
Previous write of size 1 at 0x7b2800000cd8 by main thread (mutexes: write M0, write M1):
#0 boost::asio::detail::conditionally_enabled_mutex::conditionally_enabled_mutex(bool) conditionally_enabled_mutex.hpp:109 (ping_check_unittests:x86_64+0x10001095b)
#1 boost::asio::detail::kqueue_reactor::allocate_descriptor_state() kqueue_reactor.ipp:566 (ping_check_unittests:x86_64+0x10001affd)
#2 boost::asio::detail::reactive_socket_service_base::do_open(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, int, int, int, boost::system::error_code&) reactive_socket_service_base.ipp:188 (ping_check_unittests:x86_64+0x10001ab51)
#3 boost::asio::basic_socket<boost::asio::ip::icmp, boost::asio::any_io_executor>::open(boost::asio::ip::icmp const&) basic_socket.hpp:429 (ping_check_unittests:x86_64+0x10001a15a)
#4 isc::ping_check::ICMPSocket<isc::ping_check::SocketCallback>::open(isc::asiolink::IOEndpoint const*, isc::ping_check::SocketCallback&) icmp_socket.h:214 (ping_check_unittests:x86_64+0x1000d8464)
#5 isc::ping_check::PingChannel::open() ping_channel.cc:76 (ping_check_unittests:x86_64+0x1000d4d6b)
#6 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:303 (ping_check_unittests:x86_64+0x1000530f4)
#7 (anonymous namespace)::PingChannelTest_writeAgainErrorMT_Test::TestBody() ping_channel_unittests.cc:634 (ping_check_unittests:x86_64+0x1000611bd)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Location is heap block of size 160 at 0x7b2800000c80 allocated by main thread:
#0 operator new(unsigned long) <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x82c0d)
#1 boost::asio::detail::kqueue_reactor::allocate_descriptor_state() kqueue_reactor.ipp:566 (ping_check_unittests:x86_64+0x10001afe4)
#2 boost::asio::detail::reactive_socket_service_base::do_open(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, int, int, int, boost::system::error_code&) reactive_socket_service_base.ipp:188 (ping_check_unittests:x86_64+0x10001ab51)
#3 boost::asio::basic_socket<boost::asio::ip::icmp, boost::asio::any_io_executor>::open(boost::asio::ip::icmp const&) basic_socket.hpp:429 (ping_check_unittests:x86_64+0x10001a15a)
#4 isc::ping_check::ICMPSocket<isc::ping_check::SocketCallback>::open(isc::asiolink::IOEndpoint const*, isc::ping_check::SocketCallback&) icmp_socket.h:214 (ping_check_unittests:x86_64+0x1000d8464)
#5 isc::ping_check::PingChannel::open() ping_channel.cc:76 (ping_check_unittests:x86_64+0x1000d4d6b)
#6 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:303 (ping_check_unittests:x86_64+0x1000530f4)
#7 (anonymous namespace)::PingChannelTest_writeAgainErrorMT_Test::TestBody() ping_channel_unittests.cc:634 (ping_check_unittests:x86_64+0x1000611bd)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Mutex M0 (0x7b100000f200) created at:
#0 pthread_mutex_lock <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x3d2b0)
#1 std::__1::mutex::lock() <null>:156255423 (libc++.1.dylib:x86_64+0x13868)
#2 isc::util::MultiThreadingLock::MultiThreadingLock(std::__1::mutex&) multi_threading_mgr.cc:238 (libkea-util.79.dylib:x86_64+0x17c90)
#3 isc::ping_check::PingChannel::open() ping_channel.cc:60 (ping_check_unittests:x86_64+0x1000d4ad5)
#4 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:303 (ping_check_unittests:x86_64+0x1000530f4)
#5 (anonymous namespace)::PingChannelTest_writeAgainErrorMT_Test::TestBody() ping_channel_unittests.cc:634 (ping_check_unittests:x86_64+0x1000611bd)
#6 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#7 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#8 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#9 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#10 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#11 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#12 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#13 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Mutex M1 (0x7b4400007270) created at:
#0 pthread_mutex_init <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x321e5)
#1 boost::asio::detail::conditionally_enabled_mutex::conditionally_enabled_mutex(bool) conditionally_enabled_mutex.hpp:108 (ping_check_unittests:x86_64+0x1000108a9)
#2 boost::asio::detail::kqueue_reactor::kqueue_reactor(boost::asio::execution_context&) kqueue_reactor.ipp:55 (ping_check_unittests:x86_64+0x10000cb12)
#3 boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::kqueue_reactor, boost::asio::execution_context>(void*) service_registry.hpp:87 (ping_check_unittests:x86_64+0x10000c87a)
#4 boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) service_registry.ipp:132 (ping_check_unittests:x86_64+0x10000c650)
#5 boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::reactive_socket_service<boost::asio::ip::icmp>, boost::asio::io_context>(void*) service_registry.hpp:87 (ping_check_unittests:x86_64+0x10000c4b5)
#6 boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) service_registry.ipp:132 (ping_check_unittests:x86_64+0x10000c650)
#7 isc::ping_check::PingChannel::open() ping_channel.cc:75 (ping_check_unittests:x86_64+0x1000d4c33)
#8 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:303 (ping_check_unittests:x86_64+0x1000530f4)
#9 (anonymous namespace)::PingChannelTest_writeAgainErrorMT_Test::TestBody() ping_channel_unittests.cc:634 (ping_check_unittests:x86_64+0x1000611bd)
#10 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#11 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#12 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#13 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#14 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#15 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#16 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#17 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Thread T27 (tid=1927183, running) created by main thread at:
#0 pthread_create <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x3155f)
#1 std::__1::thread::thread<std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>, void>(std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>&&) thread:315 (libkea-asiolink.67.dylib:x86_64+0x2a04e)
#2 isc::asiolink::IoServiceThreadPool::setState(isc::asiolink::IoServiceThreadPool::State) io_service_thread_pool.cc:147 (libkea-asiolink.67.dylib:x86_64+0x28a04)
#3 isc::asiolink::IoServiceThreadPool::IoServiceThreadPool(boost::shared_ptr<isc::asiolink::IOService>, unsigned long, bool) io_service_thread_pool.cc:46 (libkea-asiolink.67.dylib:x86_64+0x28188)
#4 isc::asiolink::IoServiceThreadPool::IoServiceThreadPool(boost::shared_ptr<isc::asiolink::IOService>, unsigned long, bool) io_service_thread_pool.cc:34 (libkea-asiolink.67.dylib:x86_64+0x285be)
#5 (anonymous namespace)::PingChannelTest::initThreadPool(unsigned long, bool) ping_channel_unittests.cc:97 (ping_check_unittests:x86_64+0x10005551d)
#6 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:273 (ping_check_unittests:x86_64+0x10005289e)
#7 (anonymous namespace)::PingChannelTest_writeAgainErrorMT_Test::TestBody() ping_channel_unittests.cc:634 (ping_check_unittests:x86_64+0x1000611bd)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
SUMMARY: ThreadSanitizer: data race kqueue_reactor.ipp:487 in boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&)
==================
[ OK ] PingChannelTest.writeAgainErrorMT (66 ms)
```
```
[ RUN ] PingChannelTest.writeSendFailedErrorMT
==================
WARNING: ThreadSanitizer: data race (pid=98563)
Read of size 1 at 0x7b2800000a58 by thread T30:
#0 boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&) kqueue_reactor.ipp:487 (ping_check_unittests:x86_64+0x10000dc66)
#1 non-virtual thunk to boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&) kqueue_reactor.hpp (ping_check_unittests:x86_64+0x10000e2ed)
#2 boost::asio::detail::scheduler::do_run_one(boost::asio::detail::conditionally_enabled_mutex::scoped_lock&, boost::asio::detail::scheduler_thread_info&, boost::system::error_code const&) scheduler.ipp:477 (libkea-asiolink.67.dylib:x86_64+0x141a8)
#3 boost::asio::detail::scheduler::run(boost::system::error_code&) scheduler.ipp:210 (libkea-asiolink.67.dylib:x86_64+0x13ca4)
#4 boost::asio::io_context::run() io_context.ipp:64 (libkea-asiolink.67.dylib:x86_64+0x1ff0e)
#5 isc::asiolink::IOService::run() io_service.cc:115 (libkea-asiolink.67.dylib:x86_64+0x1de46)
#6 isc::asiolink::IoServiceThreadPool::threadWork() io_service_thread_pool.cc:219 (libkea-asiolink.67.dylib:x86_64+0x29940)
#7 void* std::__1::__thread_proxy[abi:v160006]<std::__1::tuple<std::__1::unique_ptr<std::__1::__thread_struct, std::__1::default_delete<std::__1::__thread_struct>>, std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>>>(void*) thread:299 (libkea-asiolink.67.dylib:x86_64+0x2a145)
Previous write of size 1 at 0x7b2800000a58 by main thread (mutexes: write M0, write M1):
#0 boost::asio::detail::conditionally_enabled_mutex::conditionally_enabled_mutex(bool) conditionally_enabled_mutex.hpp:109 (ping_check_unittests:x86_64+0x10001095b)
#1 boost::asio::detail::kqueue_reactor::allocate_descriptor_state() kqueue_reactor.ipp:566 (ping_check_unittests:x86_64+0x10001affd)
#2 boost::asio::detail::reactive_socket_service_base::do_open(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, int, int, int, boost::system::error_code&) reactive_socket_service_base.ipp:188 (ping_check_unittests:x86_64+0x10001ab51)
#3 boost::asio::basic_socket<boost::asio::ip::icmp, boost::asio::any_io_executor>::open(boost::asio::ip::icmp const&) basic_socket.hpp:429 (ping_check_unittests:x86_64+0x10001a15a)
#4 isc::ping_check::ICMPSocket<isc::ping_check::SocketCallback>::open(isc::asiolink::IOEndpoint const*, isc::ping_check::SocketCallback&) icmp_socket.h:214 (ping_check_unittests:x86_64+0x1000d8464)
#5 isc::ping_check::PingChannel::open() ping_channel.cc:76 (ping_check_unittests:x86_64+0x1000d4d6b)
#6 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:303 (ping_check_unittests:x86_64+0x1000530f4)
#7 (anonymous namespace)::PingChannelTest_writeSendFailedErrorMT_Test::TestBody() ping_channel_unittests.cc:682 (ping_check_unittests:x86_64+0x100062819)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Location is heap block of size 160 at 0x7b2800000a00 allocated by main thread:
#0 operator new(unsigned long) <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x82c0d)
#1 boost::asio::detail::kqueue_reactor::allocate_descriptor_state() kqueue_reactor.ipp:566 (ping_check_unittests:x86_64+0x10001afe4)
#2 boost::asio::detail::reactive_socket_service_base::do_open(boost::asio::detail::reactive_socket_service_base::base_implementation_type&, int, int, int, boost::system::error_code&) reactive_socket_service_base.ipp:188 (ping_check_unittests:x86_64+0x10001ab51)
#3 boost::asio::basic_socket<boost::asio::ip::icmp, boost::asio::any_io_executor>::open(boost::asio::ip::icmp const&) basic_socket.hpp:429 (ping_check_unittests:x86_64+0x10001a15a)
#4 isc::ping_check::ICMPSocket<isc::ping_check::SocketCallback>::open(isc::asiolink::IOEndpoint const*, isc::ping_check::SocketCallback&) icmp_socket.h:214 (ping_check_unittests:x86_64+0x1000d8464)
#5 isc::ping_check::PingChannel::open() ping_channel.cc:76 (ping_check_unittests:x86_64+0x1000d4d6b)
#6 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:303 (ping_check_unittests:x86_64+0x1000530f4)
#7 (anonymous namespace)::PingChannelTest_writeSendFailedErrorMT_Test::TestBody() ping_channel_unittests.cc:682 (ping_check_unittests:x86_64+0x100062819)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Mutex M0 (0x7b10000133c0) created at:
#0 pthread_mutex_lock <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x3d2b0)
#1 std::__1::mutex::lock() <null>:156255423 (libc++.1.dylib:x86_64+0x13868)
#2 isc::util::MultiThreadingLock::MultiThreadingLock(std::__1::mutex&) multi_threading_mgr.cc:238 (libkea-util.79.dylib:x86_64+0x17c90)
#3 isc::ping_check::PingChannel::open() ping_channel.cc:60 (ping_check_unittests:x86_64+0x1000d4ad5)
#4 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:303 (ping_check_unittests:x86_64+0x1000530f4)
#5 (anonymous namespace)::PingChannelTest_writeSendFailedErrorMT_Test::TestBody() ping_channel_unittests.cc:682 (ping_check_unittests:x86_64+0x100062819)
#6 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#7 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#8 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#9 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#10 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#11 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#12 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#13 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Mutex M1 (0x7b4400007270) created at:
#0 pthread_mutex_init <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x321e5)
#1 boost::asio::detail::conditionally_enabled_mutex::conditionally_enabled_mutex(bool) conditionally_enabled_mutex.hpp:108 (ping_check_unittests:x86_64+0x1000108a9)
#2 boost::asio::detail::kqueue_reactor::kqueue_reactor(boost::asio::execution_context&) kqueue_reactor.ipp:55 (ping_check_unittests:x86_64+0x10000cb12)
#3 boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::kqueue_reactor, boost::asio::execution_context>(void*) service_registry.hpp:87 (ping_check_unittests:x86_64+0x10000c87a)
#4 boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) service_registry.ipp:132 (ping_check_unittests:x86_64+0x10000c650)
#5 boost::asio::execution_context::service* boost::asio::detail::service_registry::create<boost::asio::detail::reactive_socket_service<boost::asio::ip::icmp>, boost::asio::io_context>(void*) service_registry.hpp:87 (ping_check_unittests:x86_64+0x10000c4b5)
#6 boost::asio::detail::service_registry::do_use_service(boost::asio::execution_context::service::key const&, boost::asio::execution_context::service* (*)(void*), void*) service_registry.ipp:132 (ping_check_unittests:x86_64+0x10000c650)
#7 isc::ping_check::PingChannel::open() ping_channel.cc:75 (ping_check_unittests:x86_64+0x1000d4c33)
#8 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:303 (ping_check_unittests:x86_64+0x1000530f4)
#9 (anonymous namespace)::PingChannelTest_writeSendFailedErrorMT_Test::TestBody() ping_channel_unittests.cc:682 (ping_check_unittests:x86_64+0x100062819)
#10 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#11 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#12 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#13 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#14 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#15 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#16 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#17 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
Thread T30 (tid=1927187, running) created by main thread at:
#0 pthread_create <null>:156255423 (libclang_rt.tsan_osx_dynamic.dylib:x86_64h+0x3155f)
#1 std::__1::thread::thread<std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>, void>(std::__1::__bind<void (isc::asiolink::IoServiceThreadPool::*)(), isc::asiolink::IoServiceThreadPool*>&&) thread:315 (libkea-asiolink.67.dylib:x86_64+0x2a04e)
#2 isc::asiolink::IoServiceThreadPool::setState(isc::asiolink::IoServiceThreadPool::State) io_service_thread_pool.cc:147 (libkea-asiolink.67.dylib:x86_64+0x28a04)
#3 isc::asiolink::IoServiceThreadPool::IoServiceThreadPool(boost::shared_ptr<isc::asiolink::IOService>, unsigned long, bool) io_service_thread_pool.cc:46 (libkea-asiolink.67.dylib:x86_64+0x28188)
#4 isc::asiolink::IoServiceThreadPool::IoServiceThreadPool(boost::shared_ptr<isc::asiolink::IOService>, unsigned long, bool) io_service_thread_pool.cc:34 (libkea-asiolink.67.dylib:x86_64+0x285be)
#5 (anonymous namespace)::PingChannelTest::initThreadPool(unsigned long, bool) ping_channel_unittests.cc:97 (ping_check_unittests:x86_64+0x10005551d)
#6 (anonymous namespace)::PingChannelTest::sendReceiveTest(unsigned long, unsigned long, std::__1::function<void ()> const&) ping_channel_unittests.cc:273 (ping_check_unittests:x86_64+0x10005289e)
#7 (anonymous namespace)::PingChannelTest_writeSendFailedErrorMT_Test::TestBody() ping_channel_unittests.cc:682 (ping_check_unittests:x86_64+0x100062819)
#8 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100101435)
#9 testing::Test::Run() gtest.cc:2512 (ping_check_unittests:x86_64+0x100101333)
#10 testing::TestInfo::Run() gtest.cc:2688 (ping_check_unittests:x86_64+0x1001030c7)
#11 testing::TestSuite::Run() gtest.cc:2818 (ping_check_unittests:x86_64+0x1001044a6)
#12 testing::internal::UnitTestImpl::RunAllTests() gtest.cc:5276 (ping_check_unittests:x86_64+0x100117106)
#13 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) gtest.cc:2473 (ping_check_unittests:x86_64+0x100116605)
#14 testing::UnitTest::Run() gtest.cc:4864 (ping_check_unittests:x86_64+0x100116555)
#15 main run_unittests.cc:16 (ping_check_unittests:x86_64+0x10000262f)
SUMMARY: ThreadSanitizer: data race kqueue_reactor.ipp:487 in boost::asio::detail::kqueue_reactor::run(long, boost::asio::detail::op_queue<boost::asio::detail::scheduler_operation>&)
==================
[ OK ] PingChannelTest.writeSendFailedErrorMT (308 ms)
```kea2.5.4Razvan BecheriuRazvan Becheriuhttps://gitlab.isc.org/isc-projects/kea/-/issues/3164RFC3442 support case when client requests the Classless Static Routes option ...2023-11-23T15:00:13ZPiotrek ZadrogaRFC3442 support case when client requests the Classless Static Routes option and also requests either or both of the Router option and the Static Routes optionAs per RFC3442:
```
DHCP Server Administrator Responsibilities
Many clients may not implement the Classless Static Routes option.
DHCP server administrators should therefore configure their DHCP
servers to send both a Router o...As per RFC3442:
```
DHCP Server Administrator Responsibilities
Many clients may not implement the Classless Static Routes option.
DHCP server administrators should therefore configure their DHCP
servers to send both a Router option and a Classless Static Routes
option, and should specify the default router(s) both in the Router
option and in the Classless Static Routes option.
When a DHCP client requests the Classless Static Routes option and
also requests either or both of the Router option and the Static
Routes option, and the DHCP server is sending Classless Static Routes
options to that client, the server SHOULD NOT include the Router or
Static Routes options.
```
This should be discussed if Kea should follow this once support of Classless Static Routes is implemented.
Source: https://gitlab.isc.org/isc-projects/kea/-/merge_requests/2135#note_414489backloghttps://gitlab.isc.org/isc-projects/kea/-/issues/3163unstable unit tests2024-03-20T11:23:33ZAndrei Pavelandrei@isc.orgunstable unit testsThe following tests failed irregularly in the past fortnight:
* `AllocEngine6Test.reservedAddressInPoolReassignedOther` https://jenkins.aws.isc.org/job/kea-dev/job/ut-extended/1276/testReport/junit/(root)/AllocEngine6Test/all___debian_1...The following tests failed irregularly in the past fortnight:
* `AllocEngine6Test.reservedAddressInPoolReassignedOther` https://jenkins.aws.isc.org/job/kea-dev/job/ut-extended/1276/testReport/junit/(root)/AllocEngine6Test/all___debian_11_amd64___debian_11_amd64_results___reservedAddressInPoolReassignedOther/
```
test_utils.cc:88
Expected equality of these values:
first->cltt_
Which is: 1700075018
second->cltt_
Which is: 1700075019
```
* `HttpClientTest.unreachable` https://jenkins.aws.isc.org/job/kea-dev/job/ut-extended/1273/testReport/junit/(root)/HttpClientTest/all___alpine_3_16_amd64___alpine_3_16_amd64_results___unreachable/
```
server_client_unittests.cc:437
Failed
Timeout occurred while running the test!
```
* `MemfileLeaseQueryImpl6ProcessTest.queryByClientIdActiveLeases` https://jenkins.aws.isc.org/job/kea-dev/job/ut-extended/1274/testReport/junit/(root)/MemfileLeaseQueryImpl6ProcessTest/all___debian_12_amd64___debian_12_amd64_results___queryByClientIdActiveLeases/
```
lease_query_impl6_unittest.cc:1783
Expected equality of these values:
100
cltt_opt->getValue()
Which is: 101
```
* `MySQLBulkLeaseQuery6ProcessTest.queryByClientIdActiveLeases` https://jenkins.aws.isc.org/job/kea-dev/job/ut-extended/1280/testReport/junit/(root)/MySQLBulkLeaseQuery6ProcessTest/all___freebsd_13_0_amd64___freebsd_13_0_amd64_results___queryByClientIdActiveLeases/
```
bulk_lease_query6_unittest.cc:458
Expected equality of these values:
lease->valid_lft_ - elapsed
Which is: 3500
iaaddr_opt->getValid()
Which is: 3499
```
* `MySQLLeaseQueryImpl6ProcessTest.makeClientOptionSingleLink` https://jenkins.aws.isc.org/job/kea-dev/job/ut-extended/1265/testReport/junit/(root)/PgSQLLeaseQueryImpl6ProcessTest/all___alpine_3_15_amd64___alpine_3_15_amd64_results___makeClientOptionSingleLink/
```
lease_query_impl6_unittest.cc:880
Expected equality of these values:
100
cltt_opt->getValue()
Which is: 101
```
* `MySQLLeaseQueryImpl6ProcessTest.queryByClientIdActiveLeases` https://jenkins.aws.isc.org/job/kea-dev/job/ut-extended/1276/testReport/junit/(root)/MySQLLeaseQueryImpl6ProcessTest/all___debian_10_amd64___debian_10_amd64_results___queryByClientIdActiveLeases/
```
lease_query_impl6_unittest.cc:1783
Expected equality of these values:
100
cltt_opt->getValue()
Which is: 101
```
* `MySQLLeaseQueryImpl6ProcessTest.queryByIpAddressActiveLease` https://jenkins.aws.isc.org/job/kea-dev/job/ut-extended/1276/testReport/junit/(root)/MySQLLeaseQueryImpl6ProcessTest/all___ubuntu_20_04_amd64___ubuntu_20_04_amd64_results___queryByIpAddressActiveLease/
```
lease_query_impl6_unittest.cc:1581
Expected equality of these values:
100
cltt_opt->getValue()
Which is: 101
```
* `PgSQLBulkLeaseQuery6ProcessTest.queryByClientIdActiveLeases` https://jenkins.aws.isc.org/job/kea-dev/job/ut-extended/1275/testReport/junit/(root)/PgSQLBulkLeaseQuery6ProcessTest/all___fedora_38_amd64___fedora_38_amd64_results___queryByClientIdActiveLeases/
```
bulk_lease_query6_unittest.cc:458
Expected equality of these values:
lease->valid_lft_ - elapsed
Which is: 3500
iaaddr_opt->getValid()
Which is: 3499
```
* `PgSQLLeaseQueryImpl6ProcessTest.makeClientOptionSingleLink` https://jenkins.aws.isc.org/job/kea-dev/job/ut-extended/1276/testReport/junit/(root)/PgSQLLeaseQueryImpl6ProcessTest/all___fedora_38_amd64___fedora_38_amd64_results___makeClientOptionSingleLink/
```
lease_query_impl6_unittest.cc:880
Expected equality of these values:
100
cltt_opt->getValue()
Which is: 101
```
* `PgSQLLeaseQueryImpl6ProcessTest.queryByIpAddressActiveLease` https://jenkins.aws.isc.org/job/kea-dev/job/ut-extended/1270/testReport/junit/(root)/PgSQLLeaseQueryImpl6ProcessTest/all___rhel_9_amd64___rhel_9_amd64_results___queryByIpAddressActiveLease/
```
lease_query_impl6_unittest.cc:1581
Expected equality of these values:
100
cltt_opt->getValue()
Which is: 101
```kea2.5.8https://gitlab.isc.org/isc-projects/kea/-/issues/3162Kea does not look at all IP addresses on an interface when attempting to matc...2023-11-23T14:57:47Zmpratik-aristaKea does not look at all IP addresses on an interface when attempting to match incoming packet with subnetSay that Kea has started a DHCPv4 server instance and the interface (on which Kea is listening) has multiple IP addresses configured on it (say using `sudo ip addr add ADDR/MASK dev IFACE`). Now if Kea receives a packet from a directly c...Say that Kea has started a DHCPv4 server instance and the interface (on which Kea is listening) has multiple IP addresses configured on it (say using `sudo ip addr add ADDR/MASK dev IFACE`). Now if Kea receives a packet from a directly connected client on the interface, the Kea code appears to fetch the first available address on the interface, specifically the code here -> https://gitlab.isc.org/isc-projects/kea/-/blob/master/src/lib/dhcp/iface_mgr.cc#L225. This IP address is then used during subnet selection.
In the example (which is also our setup) below, the interface on which kea is listening is vlan42. The primary IP address configured on the interface is 152.44.134.1/16 (configured earlier) and the secondary IP Address configured on the interface is 169.254.4.3/16 (configured later). I see the following traces ->
```
2023-11-09 12:27:39.167 DEBUG [kea-dhcp4.dhcpsrv/23369.139809668667520] DHCPSRV_PRINT_ATTR Attribute: iface.address = 152.44.134.1 (I added this log where I printed the IP address that Kea selected for subnet matching)
2023-11-09 12:27:39.167 DEBUG [kea-dhcp4.packets/23369.139809668667520] DHCP4_SUBNET_SELECTION_FAILED [hwtype=1 56:83:3f:7a:76:07], cid=[no info], tid=0xb02e9d17: failed to select subnet for the client
2023-11-09 12:27:39.167 DEBUG [kea-dhcp4.bad-packets/23369.139809668667520] DHCP4_PACKET_DROP_0002 [hwtype=1 56:83:3f:7a:76:07], cid=[no info], tid=0xb02e9d17, from interface vlan42: no suitable subnet configured for a direct client
```
I verified that Kea successfully adds both the primary and secondary IP address in the Netlink::ipaddrs_get function for vlan42. My expectation was that Kea would look at all the IP addresses active on the interface and then check if any subnet configured in the Kea config file matches these IPs
The Kea config only had a subnet associated with the secondary IP 169.254.4.3/16 so understandably the packet could not be matched to any subnet. We want to be able to provide addresses from the subnet 169.254.0.0 to the clients who are sending their Discover packets on vlan42.
Steps to reproduce the behavior:
1. Run Kea dhcpv4 with the attached config and configure an interface with two IP addresses so that Kea is listening on this interface using both these IPs.
2. Let a directly connected client does A send a Discover packet to the interface that Kea listens on
3. The server will not be able to provide an IP back to the client as it will not match a subnet.
4. This same behavior is seen regardless of whether I add the following block of code.
```
"interfaces-config": {
"interfaces": [
"vlan42/169.254.4.3"
]
}
```
Expected behavior:
The client would have obtained IP address 169.254.5.5 (first available IP from the subnet 169.254.0.0/16 as specified in the Kea config file) since the IP address is getting added to the interface's address list.
We used Kea-2.0.0 for this experiment[kea-dhcp4-default.conf.rtf](/uploads/b771e974c2c29aa7357bbc6e4e9de553/kea-dhcp4-default.conf.rtf)next-stable-2.6https://gitlab.isc.org/isc-projects/kea/-/issues/3161lease4-get-all has incorrect count in the case of multiple subnets2023-12-06T18:16:33ZDarren Ankneylease4-get-all has incorrect count in the case of multiple subnetsIt seems that in the case of `lease4-get-all` output, when there are multiple subnets with used addresses, that the final count only includes the number of leases from that subnet. (Please note: This is as reported by output obtained fr...It seems that in the case of `lease4-get-all` output, when there are multiple subnets with used addresses, that the final count only includes the number of leases from that subnet. (Please note: This is as reported by output obtained from version 2.2.1 by someone else. I don't personally have a way to confirm this as I don't have a way, in my testbed, to setup multiple subnets and have addresses used in all of them.)
For example:
subnet 1 has 10 addresses in use.
subnet 2 has 20 and
subnet 3 has 5
When performing a `lease4-get-all` without a "subnets" argument, all leases from all three subnets will be included but the final text will say this:
```
'result': 0,
'text': '5 IPv4 lease(s) found.'}]
```
even though the actual number of leases returned, confirmed by inspecting the output, is 35. See [SF1234](https://isc.lightning.force.com/lightning/r/Case/5007V00002WzraeQAB/view?0.source=alohaHeader) for full details.kea2.5.5Piotrek ZadrogaPiotrek Zadrogahttps://gitlab.isc.org/isc-projects/kea/-/issues/3160Too many nullable fields in DB schema?2023-11-23T14:48:53ZDavid KraeutmannToo many nullable fields in DB schema?I'm writing an admin tool for the Kea DB and noticed that a lot of fields in lease4/lease6 are nullable even when they shouldn't be. This adds a lot of handling overhead.
For example, in lease4, most of the columns are nullable, but onl...I'm writing an admin tool for the Kea DB and noticed that a lot of fields in lease4/lease6 are nullable even when they shouldn't be. This adds a lot of handling overhead.
For example, in lease4, most of the columns are nullable, but only relay_id and remote_id are actually possibly set to NULL in the Kea code.
What is the design decision behind that?backloghttps://gitlab.isc.org/isc-projects/kea/-/issues/3159ThreadSanitize: SEGSV complain on dhcp4 UT when postgresql isn't running2023-11-23T14:46:57ZThomas MarkwalderThreadSanitize: SEGSV complain on dhcp4 UT when postgresql isn't runningThis ism ore of an inconvenience than anything else but it might be a sign of something else too. When postgresql is compiled in but server is not running, kea-dhcp4 builtin for TSAN, UT throws the following error:
```
[----------] 2 t...This ism ore of an inconvenience than anything else but it might be a sign of something else too. When postgresql is compiled in but server is not running, kea-dhcp4 builtin for TSAN, UT throws the following error:
```
[----------] 2 tests from DORAPgSQLTest
[ RUN ] DORAPgSQLTest.multiStageBoot
wipePgSQLData failed:[export PGPASSWORD=keatest; sh /home/tmark/labs/build/keadev/open/git.3084/kea/src/share/database/scripts/pgsql/wipe_data.sh 19.0 --set ON_ERROR_STOP=1 -A -t -h localhost -q -U keatest -d keatest 2>/dev/null ]
runPgSQLSchema failed: export PGPASSWORD=keatest; cat < /home/tmark/labs/build/keadev/open/git.3084/kea/src/share/database/scripts/pgsql/dhcpdb_drop.pgsql | psql --set ON_ERROR_STOP=1 -A -t -h localhost -q -U keatest -d keatest 2>/dev/null
unknown file: Failure
C++ exception with description "runPgSQLSchema failed: export PGPASSWORD=keatest; cat < /home/tmark/labs/build/keadev/open/git.3084/kea/src/share/database/scripts/pgsql/dhcpdb_drop.pgsql | psql --set ON_ERROR_STOP=1 -A -t -h localhost -q -U keatest -d keatest 2>/dev/null " thrown in the test fixture's constructor.
ThreadSanitizer:DEADLYSIGNAL
==71954==ERROR: ThreadSanitizer: SEGV on unknown address 0x000000000000 (pc 0x55d4686f55bf bp 0x000000000000 sp 0x7ffd8d3170e0 T71954)
==71954==The signal is caused by a READ memory access.
==71954==Hint: address points to the zero page.
#0 testing::Test::DeleteSelf_() /opt/googletest-release-1.8.0/googletest/include/gtest/gtest.h:453 (dhcp4_unittests+0x7735bf)
#1 void testing::internal::HandleSehExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /opt/googletest-release-1.8.0/googletest/src/gtest.cc:2402 (dhcp4_unittests+0x781869)
#2 void testing::internal::HandleExceptionsInMethodIfSupported<testing::Test, void>(testing::Test*, void (testing::Test::*)(), char const*) /opt/googletest-release-1.8.0/googletest/src/gtest.cc:2438 (dhcp4_unittests+0x781869)
#3 testing::TestInfo::Run() /opt/googletest-release-1.8.0/googletest/src/gtest.cc:2661 (dhcp4_unittests+0x76f514)
#4 testing::TestCase::Run() /opt/googletest-release-1.8.0/googletest/src/gtest.cc:2774 (dhcp4_unittests+0x76f871)
#5 testing::internal::UnitTestImpl::RunAllTests() /opt/googletest-release-1.8.0/googletest/src/gtest.cc:4649 (dhcp4_unittests+0x76ff25)
#6 bool testing::internal::HandleSehExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /opt/googletest-release-1.8.0/googletest/src/gtest.cc:2402 (dhcp4_unittests+0x781fa9)
#7 bool testing::internal::HandleExceptionsInMethodIfSupported<testing::internal::UnitTestImpl, bool>(testing::internal::UnitTestImpl*, bool (testing::internal::UnitTestImpl::*)(), char const*) /opt/googletest-release-1.8.0/googletest/src/gtest.cc:2438 (dhcp4_unittests+0x781fa9)
#8 testing::UnitTest::Run() /opt/googletest-release-1.8.0/googletest/src/gtest.cc:4257 (dhcp4_unittests+0x7704a5)
#9 RUN_ALL_TESTS() /opt/googletest-release-1.8.0/googletest/include/gtest/gtest.h:2233 (dhcp4_unittests+0x18f59b)
#10 main /home/tmark/labs/build/keadev/open/git.3084/kea/src/bin/dhcp4/tests/dhcp4_unittests.cc:23 (dhcp4_unittests+0x18f59b)
#11 __libc_start_main ../csu/libc-start.c:308 (libc.so.6+0x24082)
#12 _start <null> (dhcp4_unittests+0x1c66dd)
```
Of course if postgresql is running it's not an issue.next-stable-2.6https://gitlab.isc.org/isc-projects/kea/-/issues/3158Whether kea-dhcpv6 contains the option to configure an ipv6 gateway?2023-11-23T12:57:27ZBei ChenWhether kea-dhcpv6 contains the option to configure an ipv6 gateway?I am using version 2.4.0, dhcpv4 has options for configuring the default gateway, does dhcpv6 have similar options for configuring the default gateway?I am using version 2.4.0, dhcpv4 has options for configuring the default gateway, does dhcpv6 have similar options for configuring the default gateway?https://gitlab.isc.org/isc-projects/kea/-/issues/3157Sanity checks for Kea 2.4.1 rc12023-11-27T08:36:41ZAndrei Pavelandrei@isc.orgSanity checks for Kea 2.4.1 rc1We are now at step SANITY CHECKS of Kea 2.4.1 rc1.
Please verify the tarballs and packages according to [chapter `4. Sanity Checks` of the release procedure](https://gitlab.isc.org/isc-private/qa-dhcp/-/wikis/Kea/Release-Process#user-co...We are now at step SANITY CHECKS of Kea 2.4.1 rc1.
Please verify the tarballs and packages according to [chapter `4. Sanity Checks` of the release procedure](https://gitlab.isc.org/isc-private/qa-dhcp/-/wikis/Kea/Release-Process#user-content-4-sanity-checks) and according to your imagination.
Before starting, please state what you are checking in a thread/discussion (not as comment).
When you finish a check, state in the same thread/discussion what the result is.
This way we know what is covered upfront and we can avoid repeating ourselves.
#### Tarballs on repo.isc.org
* `/data/shared/sweng/kea/releases/2.4.1-rc1`
* `/data/shared/sweng/kea/releases/premium-2.4.1-rc1`
* `/data/shared/sweng/kea/releases/subscription-2.4.1-rc1`
* `/data/shared/sweng/kea/releases/enterprise-2.4.1-rc1`
```
SHA256 (kea-2.4.1.tar.gz) = 01fc0109dd31b30de32633bf0b36217c04a68feb4de81b62fbf2187ab3d030db
SHA256 (kea-enterprise-2.4.1.tar.gz) = f5319bccb740259d43f9e0473f81cd23cbf6a5426e3d04eb73582ed223e1f7e7
SHA256 (kea-premium-2.4.1.tar.gz) = 8c4f6cf883947b65faf64aea80ccd616553ece8b6d1ea3d172b8d326351cc8d6
SHA256 (kea-subscription-2.4.1.tar.gz) = 755bdf869a8d848d7fb0aa78bf14b3e07cb5b4332c2e996bfcbc409031dec408
```
#### Packages on packages.aws.isc.org
* [APK: 2.4.1-r20231116233850](https://packages.aws.isc.org/#browse/search/raw=format%3Draw%20AND%20name.raw%3D*r20231116233850.apk)
* [deb: 2.4.1-isc20231116233850](https://packages.aws.isc.org/#browse/search/apt=format%3Dapt%20AND%20version%3D2.4.1-isc20231116233850)
* [RPM: 2.4.1-isc20231116233850.\[os\]](https://packages.aws.isc.org/#browse/search/yum=format%3Dyum%20AND%20version%3D2.4.1-isc20231116233850*)
You can find the name for all the packages attached as build artifacts in the pkg job: https://jenkins.aws.isc.org/job/kea-2.4/job/pkg/25/
Instructions for installing packages are at point 9 of [chapter `4. Sanity Checks` of the release procedure](https://gitlab.isc.org/isc-private/qa-dhcp/-/wikis/Kea/Release-Process#user-content-4-sanity-checks).kea2.4.1https://gitlab.isc.org/isc-projects/kea/-/issues/3156Changes for Kea 2.4.1 release2023-11-23T13:38:03ZAndrei Pavelandrei@isc.orgChanges for Kea 2.4.1 release
- [x] added release entry to ChangeLogs
- [x] regenerated BNF grammar
- [x] regenerated message headers
- [x] regenerated parsers
- [x] reordered messages in alphabetical order
- [x] updated copyright years
- [x] added release entry to ChangeLogs
- [x] regenerated BNF grammar
- [x] regenerated message headers
- [x] regenerated parsers
- [x] reordered messages in alphabetical order
- [x] updated copyright yearskea2.4.1Andrei Pavelandrei@isc.orgAndrei Pavelandrei@isc.orghttps://gitlab.isc.org/isc-projects/kea/-/issues/3154Kea fails to link with log4cplus if the UNICODE macro is defined2024-01-16T16:22:58ZAndrei Pavelandrei@isc.orgKea fails to link with log4cplus if the UNICODE macro is definedThis has been observed in the fuzzing experiments on an Ubuntu 20.04 OSS-fuzz container, and also prior to that on my local FreeBSD 13 VM.
When attempting to build Kea, it complains at `./configure` about `configure: error: Needs log4cp...This has been observed in the fuzzing experiments on an Ubuntu 20.04 OSS-fuzz container, and also prior to that on my local FreeBSD 13 VM.
When attempting to build Kea, it complains at `./configure` about `configure: error: Needs log4cplus library`.
`config.log` shows:
```
conftest.cpp:(.text+0x21): undefined reference to `log4cplus::Logger::getInstance(std::__1::basic_string<char, std::__1::char_traits<char>, std::__1::allocator<char> > const&)'
```
Doing `CXXFLAGS='-UUNICODE' LDFLAGS='-UUNICODE' ./configure` fixes it, although it is likely that only one of the set of flags is needed.
What happens is the log4cplus headers have UNICODE macros that makes its code use wide character strings instead of regular strings, hence the undefined symbol. See `/usr/include/log4cplus/clogger.h`, `/usr/include/log4cplus/tchar.h`, `/usr/include/log4cplus/tstring.h`, and others.
log4cplus is likely not the one setting the macro, but likely other dependencies or some system component like the compiler itself. Likely the latter, which is why it appears on fringe systems.
This error could be prevented without manually specifying flags when `.configure`-ing. Either:
1. Follow in the steps of log4cplus and split the use of its functions according to whether UNICODE is defined or not and provide a `getInstance()` that uses wide character strings if it is defined.
2. Detect if Kea can link with log4cplus in `configure.ac` and add `-UUNICODE` to the set of flags if the error above ocurs. This is rather intrusive and also inaccurate.kea2.5.5https://gitlab.isc.org/isc-projects/kea/-/issues/3153Bump up library versions for 2.4.12023-11-23T13:38:03ZAndrei Pavelandrei@isc.orgBump up library versions for 2.4.1Bump up library versions for %"kea2.4.1".Bump up library versions for %"kea2.4.1".kea2.4.1Razvan BecheriuRazvan Becheriuhttps://gitlab.isc.org/isc-projects/kea/-/issues/3152Extraneous second lookup in host cache in the radius access callout when subn...2024-03-25T14:14:24ZAndrei Pavelandrei@isc.orgExtraneous second lookup in host cache in the radius access callout when subnet is not reselectedIn `subnetX_select` callouts for `libdhcp_radius.so`, there are two `getXAny` lookups in the host cache. The second one has the purpose of fetching the host again with the new subnet ID. But this makes sense only if the subnet was resele...In `subnetX_select` callouts for `libdhcp_radius.so`, there are two `getXAny` lookups in the host cache. The second one has the purpose of fetching the host again with the new subnet ID. But this makes sense only if the subnet was reselected since the first retrieval as part of the subnet reselection process that is specific to RADIUS. However, it is called regardless of whether the subnet was reselected or not. This could be optimized.next-stable-2.6Andrei Pavelandrei@isc.orgAndrei Pavelandrei@isc.orghttps://gitlab.isc.org/isc-projects/kea/-/issues/3151Reject RADIUS config with multiple default NAS ports2023-11-23T14:42:38ZAndrei Pavelandrei@isc.orgReject RADIUS config with multiple default NAS portsA default NAS port applies to all packets. It makes no sense to have more than one default in a configuration, and that is likely an user error. It would be appropriate for the user to be notified, so that the config can be changed accor...A default NAS port applies to all packets. It makes no sense to have more than one default in a configuration, and that is likely an user error. It would be appropriate for the user to be notified, so that the config can be changed accordingly.next-stable-2.6https://gitlab.isc.org/isc-projects/kea/-/issues/3150dhcpv4 and dhcpv6 services go down for some reason2023-11-16T18:13:47ZSandeep Gagalapallydhcpv4 and dhcpv6 services go down for some reasonHello Kea Support,
We are facing some intermittent issues with dhcpv4 and dhcpv6 services going down for some reason.
Our setup includes two kea instances ( 2.4.0 ) running on Ubuntu 18.04 and connect to an AWS RDS MySQL Instance.
c...Hello Kea Support,
We are facing some intermittent issues with dhcpv4 and dhcpv6 services going down for some reason.
Our setup includes two kea instances ( 2.4.0 ) running on Ubuntu 18.04 and connect to an AWS RDS MySQL Instance.
can you please review the configs of dhcp4 attached ?
The network connection between Kea servers and mySQL DB seems to working fine.
[kea-dhcp-1.conf](/uploads/cb2fc2093bd1450cf23694d64c62d3b2/kea-dhcp-1.conf)
[kea-dhcp-2.conf](/uploads/7a3f41c2f2be740e986dbd5232a3f0dc/kea-dhcp-2.conf)https://gitlab.isc.org/isc-projects/kea/-/issues/3149Bulk Leasequery (BLQ) needs to be able to match PDs associated with a link, e...2024-01-18T20:33:05ZCathy AlmondBulk Leasequery (BLQ) needs to be able to match PDs associated with a link, even if the subnet of the PD is outside of the subnet of the linkI'm reporting this a bug, since this is missing functionality, but functionality that is clearly important operationally, and without this (or a viable workaround) means the use of BLQ by a rebooting router is useless for finding and qui...I'm reporting this a bug, since this is missing functionality, but functionality that is clearly important operationally, and without this (or a viable workaround) means the use of BLQ by a rebooting router is useless for finding and quickly reprovisioning PDs as well as IAs.
**Describe the bug**
A router is using BLQ to learn of the existing leases associated with its link following a reboot. Particularly it's interested in the PDs since it's going to need to set up its routing appropriately to the client PDs.
BLQ using `query-by-link-address` is retrieving only the IAs associated with the link. This is sort of unsurprising since the PDs, although associated with the subnet that matches the link, aren't members of that subnet (this is also unsurprising).
However, in the leases memfile, both the IA and the PD have the same subnet id (the id of the subnet that matches to the link), and the IA, unsurprisingly is an address within that subnet.
- There is no PD pool associated with the subnet in the dhcp6 configuration
- All the PDs are assigned using HRs - but they *are* associated with the same subnet as the client IA
- I can see in the leases file, that the subnet ID is correct, if BLQ happened internally to be using subnet ID to 'find' leases associated with a link address.
I can't see any other way to get this information currently. The natural way to use BLQ here is to specify the link address (which also does match in the leases database, as well as the subnet ID associated with this link address's subnet). But the underlying lease search code doesn't seem to be using either of these.
How else is a router going to get the list of PDs it should be provisioning? Clearly after just rebooting, it's not going to **know** what ranges of prefixes have been delegated since PD subnets are independent of the subnet via which they're being delegated anyway.
See details in the customer case linked below.
I've also been discussing the semantics of the documentation and other information around BLQ with Kea Engineering, who have requested that I open this issue.
**Environment:**
- Kea version: 2.4.0
- OS: N/A
- Using memfile for leases, postgresql for HRs and mysql for config:
```
...
"Dhcp6": {
"allocator": "iterative",
"calculate-tee-times": true,
"config-control": {
"config-databases": [
{
"host": "127.0.0.1",
"max-reconnect-tries": 30,
"name": "kea",
"password": "<obscured>",
"port": 3306,
"reconnect-wait-time": 2000,
"type": "mysql",
"user": "kea"
}
],
"config-fetch-wait-time": 60
},
...
"lease-database": {
"lfc-interval": 3600,
"type": "memfile"
},
...
"reservations-global": false,
"reservations-in-subnet": true,
"reservations-lookup-first": false,
"reservations-out-of-pool": false,
...
"library": "\/usr\/lib\/x86_64-linux-gnu\/kea\/hooks\/libdhcp_lease_query.so",
"parameters": {
"advanced": {
"active-query-enabled": false,
"bulk-query-enabled": true,
"extended-info-tables-enabled": true,
"lease-query-ip": "<obscured>",
"lease-query-tcp-port": 547,
"max-bulk-query-threads": 0,
"max-concurrent-queries": 0,
"max-leases-per-fetch": 100,
"max-requester-connections": 10,
"max-requester-idle-time": 300
},
"requesters": [
"<obscured>"
]
}
}
],
"host-reservation-identifiers": [
"duid",
"flex-id"
],
"hostname-char-replacement": "",
"hostname-char-set": "[^A-Za-z0-9.-]",
"hosts-databases": [
{
"host": "127.0.0.1",
"max-reconnect-tries": 30,
"name": "kea",
"password": "<obscured>",
"port": 3306,
"reconnect-wait-time": 2000,
"type": "mysql",
"user": "kea"
}
],
```
- Using hooks:
> libdhcp_ha.so
> libdhcp_mysql_cb.so
> libdhcp_host_cmds.so
> libdhcp_lease_cmds.so
> libdhcp_subnet_cmds.so
> libdhcp_cb_cmds.so
> libdhcp_flex_id.so
> libdhcp_legal_log.so
> libdhcp_lease_query.so
**Additional Information**
Here's the operational use case supporting this:
> The DHCP BLQ needs to return the PDs including from any reservations. For our use case, PDs are the one thing we are actually looking to grab when using BLQ. Our routers will send a BLQ after they reload so that they can re-populate the PD routes and subscribers v6 networks can begin working again.
**Contacting you**
See [SF#1426](https://isc.lightning.force.com/lightning/r/5007V00002Zkn9vQAB/view?0.source=alohaHeader)kea2.5.5Francis DupontFrancis Duponthttps://gitlab.isc.org/isc-projects/kea/-/issues/3148backport hammer changes that fix errors in jenkins2023-11-23T13:38:03ZAndrei Pavelandrei@isc.orgbackport hammer changes that fix errors in jenkins* https://jenkins.aws.isc.org/view/Kea-2.4/job/kea-2.4/job/ut-extended/10/execution/node/253/log/
```plaintext
22:45:57 [HAMMER] 2023-11-13 20:45:56,978 Job for mariadb.service failed because the control process exited with error code...* https://jenkins.aws.isc.org/view/Kea-2.4/job/kea-2.4/job/ut-extended/10/execution/node/253/log/
```plaintext
22:45:57 [HAMMER] 2023-11-13 20:45:56,978 Job for mariadb.service failed because the control process exited with error code.
22:45:57 [HAMMER] 2023-11-13 20:45:56,978 See "systemctl status mariadb.service" and "journalctl -xe" for details.
```
Should be fixed by 82b3ee8457dc39226f196250d5c62f7f1ad49493.
* https://jenkins.aws.isc.org/view/Kea-2.4/job/kea-2.4/job/pkg/19/execution/node/99/log/
```plaintext
23:13:20 [HAMMER] 2023-11-13 21:13:20,375 >>>>> Executing mv kea-pkg/* kea-pkg in /home/alpine/workspace/kea-2.4/pkg
23:13:20 [HAMMER] 2023-11-13 21:13:20,376 mv: 'kea-pkg/isc-kea-2.4.0-r20231113204504.apk' and 'kea-pkg/isc-kea-2.4.0-r20231113204504.apk' are the same file
23:13:20 [HAMMER] 2023-11-13 21:13:20,376 mv: 'kea-pkg/isc-kea-admin-2.4.0-r20231113204504.apk' and 'kea-pkg/isc-kea-admin-2.4.0-r20231113204504.apk' are the same file
23:13:20 [HAMMER] 2023-11-13 21:13:20,376 mv: 'kea-pkg/isc-kea-common-2.4.0-r20231113204504.apk' and 'kea-pkg/isc-kea-common-2.4.0-r20231113204504.apk' are the same file
```
Should be fixed by 60e92acc095e56f0f4db5281e850d6c3879ca71d.kea2.4.1Andrei Pavelandrei@isc.orgAndrei Pavelandrei@isc.orghttps://gitlab.isc.org/isc-projects/kea/-/issues/3147Packaging on Alpine 3.16 tries to move files to the same location as the source2023-11-23T13:38:03ZAndrei Pavelandrei@isc.orgPackaging on Alpine 3.16 tries to move files to the same location as the source```
09:26:57 [HAMMER] 2023-11-13 07:26:56,616 >>>>> Executing mv kea-pkg/* kea-pkg in /home/alpine/workspace/kea-dev/pkg
09:26:57 [HAMMER] 2023-11-13 07:26:56,617 mv: 'kea-pkg/isc-kea-2.5.4-r20231113065823.apk' and 'kea-pkg/isc-kea-2...```
09:26:57 [HAMMER] 2023-11-13 07:26:56,616 >>>>> Executing mv kea-pkg/* kea-pkg in /home/alpine/workspace/kea-dev/pkg
09:26:57 [HAMMER] 2023-11-13 07:26:56,617 mv: 'kea-pkg/isc-kea-2.5.4-r20231113065823.apk' and 'kea-pkg/isc-kea-2.5.4-r20231113065823.apk' are the same file
```
https://jenkins.aws.isc.org/job/kea-dev/job/pkg/1345/execution/node/94/log/?consoleFull
Does not happen on other alpines, or any other distributions.kea2.5.4Andrei Pavelandrei@isc.orgAndrei Pavelandrei@isc.orghttps://gitlab.isc.org/isc-projects/kea/-/issues/3145Backport #3017: fix for interface redetection regression2023-11-23T13:38:03ZAndrei Pavelandrei@isc.orgBackport #3017: fix for interface redetection regressionThis ticket is about backporting the fix for the interface redetection regression that was developed in #3017 and released in %kea2.5.3.This ticket is about backporting the fix for the interface redetection regression that was developed in #3017 and released in %kea2.5.3.kea2.4.1Razvan BecheriuRazvan Becheriu