<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
p.msonormal0, li.msonormal0, div.msonormal0
        {mso-style-name:msonormal;
        mso-margin-top-alt:auto;
        margin-right:0in;
        mso-margin-bottom-alt:auto;
        margin-left:0in;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;}
span.EmailStyle18
        {mso-style-type:personal;
        font-family:"Calibri",sans-serif;}
span.EmailStyle19
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;}
.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}
@page WordSection1
        {size:8.5in 11.0in;
        margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-US" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">thanks, I was not able to get gdb working remotely with Clion but I managed to get some trace of the crash by running it locally on the server. The problem is that I’m not sure what to make of it
<span style="font-family:"Segoe UI Emoji",sans-serif">😊</span><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thread 1 "kea-dhcp4" received signal SIGSEGV, Segmentation fault.<o:p></o:p></p>
<p class="MsoNormal">0x00007ffe4c2338b8 in ?? ()<o:p></o:p></p>
<p class="MsoNormal">(gdb) bt<o:p></o:p></p>
<p class="MsoNormal">#0  0x00007ffe4c2338b8 in ?? ()<o:p></o:p></p>
<p class="MsoNormal">#1  0x00007f5f823fb960 in isc::dhcp::LibDHCP::packOptions4 (buf=..., options=std::multimap with 8 elements = {...}) at libdhcp++.cc:805<o:p></o:p></p>
<p class="MsoNormal">#2  0x00007f5f8244acda in isc::dhcp::Pkt4::pack (this=0x557a5c8d2060) at pkt4.cc:138<o:p></o:p></p>
<p class="MsoNormal">#3  0x0000557a5b6258f9 in isc::dhcp::Dhcpv4Srv::processPacketPktSend (this=this@entry=0x7ffe4c234960, callout_handle=..., query=..., rsp=...) at dhcp4_srv.cc:1163<o:p></o:p></p>
<p class="MsoNormal">#4  0x0000557a5b62ebf9 in isc::dhcp::Dhcpv4Srv::processPacket (this=this@entry=0x7ffe4c234960, query=..., rsp=..., allow_packet_park=allow_packet_park@entry=true) at dhcp4_srv.cc:1110<o:p></o:p></p>
<p class="MsoNormal">#5  0x0000557a5b62fd25 in isc::dhcp::Dhcpv4Srv::run_one (this=this@entry=0x7ffe4c234960) at dhcp4_srv.cc:821<o:p></o:p></p>
<p class="MsoNormal">#6  0x0000557a5b6302f8 in isc::dhcp::Dhcpv4Srv::run (this=0x7ffe4c234960) at dhcp4_srv.cc:723<o:p></o:p></p>
<p class="MsoNormal">#7  0x0000557a5b603466 in main (argc=<optimized out>, argv=<optimized out>) at main.cc:227<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I ‘we discovered that the server crashes when I feed in DHCP option using isc::asiolink::IOAddress, where the type is ipv4-address, like option 6 – domain-name-servers. Maybe someone can show an example of how one should go about overwriting
 those kinds of options.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Here is more info if someone got some ideas. This is the code that adds the new option to the response object and some log lines just before KEA dies:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"># add IPAddress option - called from pkt4_send hook<o:p></o:p></p>
<p class="MsoNormal">void add4OptionIPAddress(Pkt4Ptr& response, uint8_t opt_code, std::string& opt_value)<o:p></o:p></p>
<p class="MsoNormal">    {<o:p></o:p></p>
<p class="MsoNormal">        OptionPtr opt = response->getOption(opt_code);<o:p></o:p></p>
<p class="MsoNormal">        if(opt)<o:p></o:p></p>
<p class="MsoNormal">        {<o:p></o:p></p>
<p class="MsoNormal">           response -> delOption(opt_code);<o:p></o:p></p>
<p class="MsoNormal">        }<o:p></o:p></p>
<p class="MsoNormal">        Option4AddrLst newIpList(opt_code);<o:p></o:p></p>
<p class="MsoNormal">        if(opt_value.find(",") != std::string::npos)<o:p></o:p></p>
<p class="MsoNormal">        {<o:p></o:p></p>
<p class="MsoNormal">                isc::asiolink::IOAddress addr1(opt_value.substr(0,opt_value.find(",")));<o:p></o:p></p>
<p class="MsoNormal">                newIpList.addAddress(addr1);<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">                isc::asiolink::IOAddress addr2(opt_value.substr(opt_value.find(",")+1));<o:p></o:p></p>
<p class="MsoNormal">                newIpList.addAddress(addr2);<o:p></o:p></p>
<p class="MsoNormal">        }<o:p></o:p></p>
<p class="MsoNormal">        else<o:p></o:p></p>
<p class="MsoNormal">        {<o:p></o:p></p>
<p class="MsoNormal">              isc::asiolink::IOAddress addr3(opt_value);<o:p></o:p></p>
<p class="MsoNormal">              newIpList.addAddress(addr3);<o:p></o:p></p>
<p class="MsoNormal">        }<o:p></o:p></p>
<p class="MsoNormal">        opt.reset( &newIpList );<o:p></o:p></p>
<p class="MsoNormal">        LOG_DEBUG(my_logger, 50, "dns server list %1").arg(opt->toText());<o:p></o:p></p>
<p class="MsoNormal">        LOG_DEBUG(my_logger, 50, "responce befor leave %1 ").arg(response->toText());<o:p></o:p></p>
<p class="MsoNormal">        response->addOption(opt);<o:p></o:p></p>
<p class="MsoNormal">        LOG_DEBUG(my_logger, 50, "responce after leave %1 ").arg(response->toText());<o:p></o:p></p>
<p class="MsoNormal">    }<o:p></o:p></p>
<p class="MsoNormal">    <o:p></o:p></p>
<p class="MsoNormal"># my_logger last line<o:p></o:p></p>
<p class="MsoNormal">2018-11-02 14:43:06.377 DEBUG [kea-dhcp4.my_logger/29189] responce befor leave local_address=83.173.15.80:67, remote_address=10.206.0.2:67, msg_type=DHCPACK (5), transid=0x76fc973b,<o:p></o:p></p>
<p class="MsoNormal">options:<o:p></o:p></p>
<p class="MsoNormal">  type=001, len=004: 4294967040 (uint32)<o:p></o:p></p>
<p class="MsoNormal">  type=003, len=004: 83.173.30.1<o:p></o:p></p>
<p class="MsoNormal">  type=006, len=008: 1.1.1.1 8.8.8.8<o:p></o:p></p>
<p class="MsoNormal">  type=015, len=013: "gagnaveita.is" (string)<o:p></o:p></p>
<p class="MsoNormal">  type=051, len=004: 60 (uint32)<o:p></o:p></p>
<p class="MsoNormal">  type=053, len=001: 5 (uint8)<o:p></o:p></p>
<p class="MsoNormal">  type=054, len=004: 83.173.15.80<o:p></o:p></p>
<p class="MsoNormal">  type=061, len=007: 01:50:a7:2b:ea:cc:e3<o:p></o:p></p>
<p class="MsoNormal">  <o:p></o:p></p>
<p class="MsoNormal"># kea-dhcp4 last lines<o:p></o:p></p>
<p class="MsoNormal">2018-11-02 14:43:06.377 DEBUG [kea-dhcp4.callouts/29189] HOOKS_CALLOUTS_COMPLETE completed callouts for hook pkt4_send (total callouts duration: 0.402 ms)<o:p></o:p></p>
<p class="MsoNormal">2018-11-02 14:43:06.377 DEBUG [kea-dhcp4.options/29189] DHCP4_PACKET_PACK [hwtype=1 50:a7:2b:ea:cc:e3], cid=[01:50:a7:2b:ea:cc:e3], tid=0x76fc973b: preparing on-wire format of the packet to be sent<o:p></o:p></p>
<p class="MsoNormal"><span lang="IS"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="IS"><o:p> </o:p></span></p>
<p class="MsoNormal"><span style="color:black">regards, Hreiðar. </span><o:p></o:p></p>
<p class="MsoNormal"><span lang="IS"><o:p> </o:p></span></p>
<p class="MsoNormal"><b>From:</b> EZELINK TELECOM <lex@ezelink.com> <br>
<b>Sent:</b> Friday, November 2, 2018 12:46 PM<br>
<b>To:</b> Hreiðar Jóelsson <hreidar.joelsson@gagnaveita.is><br>
<b>Cc:</b> kea-users@lists.isc.org<br>
<b>Subject:</b> Re: [Kea-users] Remote debugging in KEA<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<div>
<div>
<p class="MsoNormal">gdb attach should be enough.<o:p></o:p></p>
</div>
<div>
<p class="MsoNormal">Or if you are running keadhcp from start - then just gdb .../keadhcp.. <options><o:p></o:p></p>
</div>
<div>
<p class="MsoNormal" style="margin-bottom:12.0pt">You can also force system to create core files after crashes<o:p></o:p></p>
<div>
<div>
<p class="MsoNormal">On Fri, Nov 2, 2018, 15:20 Hreiðar Jóelsson <<a href="mailto:hreidar.joelsson@gagnaveita.is" target="_blank">hreidar.joelsson@gagnaveita.is</a> wrote:<o:p></o:p></p>
</div>
<blockquote style="border:none;border-left:solid #CCCCCC 1.0pt;padding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in">
<div>
<div>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto">Hi, can anyone help me or point me in the right direction regarding remote debugging and KEA. I’m developing a hook that queries external Redis database for lease policies and uses
 them to choose subnet and manipulate DHCP options for incoming requests. My problem is that Kea is crashing in the main process after a pass it a new DHCP option 6 so I need to be able to debug what is going on there. I’m trying to setup remote debug using
 gdbserver and Jetbrains Clion an I have manage to start a debugging session on my KEA server and connect to it from my development machine but KEA does not run. Any ideas on how this works?<o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;mso-margin-bottom-alt:auto"><span lang="IS"> </span><o:p></o:p></p>
<p class="MsoNormal" style="mso-margin-top-alt:auto;margin-bottom:12.0pt"><span style="color:#999999">Best Regards,
</span><br>
<b><span style="font-size:13.0pt;color:#4D4E4C">Hreiðar</span></b><span style="font-size:13.0pt;color:#4D4E4C">
<b>Jóelsson</b></span><br>
<span style="font-size:8.0pt;color:#999999">Network Engineer</span><o:p></o:p></p>
</div>
</div>
<p class="MsoNormal">_______________________________________________<br>
Kea-users mailing list<br>
<a href="mailto:Kea-users@lists.isc.org" target="_blank">Kea-users@lists.isc.org</a><br>
<a href="https://lists.isc.org/mailman/listinfo/kea-users" target="_blank">https://lists.isc.org/mailman/listinfo/kea-users</a><o:p></o:p></p>
</blockquote>
</div>
</div>
</div>
</div>
</body>
</html>