deleting sunet with subnetX-del while checking if packet is being rate limited by the subnet being deleted causes crash
This is consistently reproducible.
- Start a kea-dhcp4 with a single subnet configured. Multi-threading should help in reproducing.
- Start a perfdhcp with a reasonably high rate to keep kea-dhcp4 busy enough to reproduce the crash.
perfdhcp -r 100
is good enough but mileage may vary. - Issue a subnet4-del with the configured subnet ID. Crash should happen immediately.
DEBUG HOOKS_CALLOUTS_BEGIN begin all callouts for hook subnet4_select
kea-dhcp4: /usr/include/boost/smart_ptr/shared_ptr.hpp:786: typename boost::detail::sp_member_access<T>::type boost::shared_ptr<T>::operator->() const [with T = isc::dhcp::Subnet4; typename boost::detail::sp_member_access<T>::type = isc::dhcp::Subnet4*]: Assertion `px != 0' failed.
Thread 54 "kea-dhcp4" received signal SIGABRT, Aborted.
#0 isc::limits::LimitManager::subnet_select<(isc::util::DhcpSpace)0> (this=0x7ffff30adde0 <isc::limits::LimitManager::instance()::instance>, handle=...)
at ../../../../../premium/src/hooks/dhcp/limits/limit_manager.h:244
#1 0x00007ffff3061c2c in isc::limits::subnet4_select (handle=...) at dhcpv4_callouts.cc:65
#2 0x00007ffff63b3a6c in isc::hooks::CalloutManager::callCallouts (this=0x55555587d360, hook_index=17, callout_handle=...) at callout_manager.cc:168
#3 0x00007ffff63bc025 in isc::hooks::HooksManager::callCalloutsInternal (this=0x7ffff63fa2e0 <isc::hooks::HooksManager::getHooksManager()::manager>, index=17, handle=...)
at hooks_manager.cc:72
#4 0x00007ffff63bc050 in isc::hooks::HooksManager::callCallouts (index=17, handle=...) at hooks_manager.cc:77
#5 0x00005555556bbdc1 in isc::dhcp::Dhcpv4Srv::selectSubnet (this=0x7fffffffdc50, query=..., drop=@0x7ffff12ca6cf: false, sanity_only=false) at dhcp4_srv.cc:773
#6 0x00005555556cd640 in isc::dhcp::Dhcpv4Srv::processDiscover (this=0x7fffffffdc50, discover=..., context=...) at dhcp4_srv.cc:3230
#7 0x00005555556c0a8a in isc::dhcp::Dhcpv4Srv::processDhcp4Query (this=0x7fffffffdc50, query=..., rsp=..., allow_packet_park=true) at dhcp4_srv.cc:1376
#8 0x00005555556bfb05 in isc::dhcp::Dhcpv4Srv::processPacket (this=0x7fffffffdc50, query=..., rsp=..., allow_packet_park=true) at dhcp4_srv.cc:1326
#9 0x00005555556beb9f in isc::dhcp::Dhcpv4Srv::processPacketAndSendResponse (this=0x7fffffffdc50, query=...) at dhcp4_srv.cc:1148
#10 0x00005555556bea25 in isc::dhcp::Dhcpv4Srv::processPacketAndSendResponseNoThrow (this=0x7fffffffdc50, query=...) at dhcp4_srv.cc:1136