<!DOCTYPE html>
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Hi,</p>
    <p>have you tried whether the most recent master commit PLUS the
      patch submitted by Erik Karlsson on April 29 fixes the issue as
      well?<br>
      See
<a class="moz-txt-link-freetext" href="https://lists.thekelleys.org.uk/pipermail/dnsmasq-discuss/2024q2/017561.html">https://lists.thekelleys.org.uk/pipermail/dnsmasq-discuss/2024q2/017561.html</a></p>
    <p>Concerning your observation about not crashing after adding a
      print statement: This is pretty common when you are compiling any
      project with optimizations enabled as printing variable contents
      prevents a few optimizations from happening causing the actual
      machine code realization to be quite different. Rather often this
      is sufficient to prevent certain bugs from showing up.<br>
    </p>
    <p>Best,<br>
      Dominik<br>
    </p>
    <div class="moz-cite-prefix">On 28.07.24 10:19, renmingshuai via
      Dnsmasq-discuss wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:18bec57c86ba454e8272afc8e2b076f2@huawei.com">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      <meta name="Generator"
        content="Microsoft Word 15 (filtered medium)">
      <style>@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}@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;}@font-face
        {font-family:SimSun;
        panose-1:2 1 6 0 3 1 1 1 1 1;}p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        text-align:justify;
        text-justify:inter-ideograph;
        font-size:10.5pt;
        font-family:"Calibri",sans-serif;}a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:#954F72;
        text-decoration:underline;}span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}.MsoChpDefault
        {mso-style-type:export-only;
        font-family:"Calibri",sans-serif;}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]-->
      <div class="WordSection1">
        <p class="MsoNormal"><span lang="EN-US">Hi,<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">I have a problem with a
            Segmentation fault. The log is as follows:<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">024-07-24T17:06:00.540592+08:00
            info kernel[-][25317.980044] dnsmasq[597243]: segfault at 9
            ip 000015257897bObe sp 00007fffba533380 error 4 in libc.so.6
            15257890c000+1710001<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">This Segmentation fault
            is triggered when dnsmasq clears dynamic config in the
            reload phase. The coredump is as follows:<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">[New LWP 2925451]<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">[Thread debugging using
            libthread_db enabled]<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">Using host libthread_db
            library "/usr/lib64/libthread_db.so.1".<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">Core was generated by
            `dnsmasq --no-hosts --no-resolv
            --pid-file=/var/lib/neutron/dhcp/d7435322-bf42-4'.<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">Program terminated with
            signal SIGSEGV, Segmentation fault.<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">#0  0x0000151e5168b0be
            in free () from /usr/lib64/libc.so.6<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">(gdb) bt<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">#0  0x0000151e5168b0be
            in free () from /usr/lib64/libc.so.6<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">#1  0x00005651025a08f0
            in dhcp_netid_free (nid=0xc08b255501ae7f00) at <a class="moz-txt-link-freetext" href="option.c:1022">option.c:1022</a><o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">#2  dhcp_netid_list_free
            (netid=0x0) at <a class="moz-txt-link-freetext" href="option.c:1053">option.c:1053</a><o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">#3  dhcp_config_free
            (config=0x565104124bc0) at <a class="moz-txt-link-freetext" href="option.c:1071">option.c:1071</a><o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">#4  0x00005651025aa011
            in clear_dynamic_conf () at <a class="moz-txt-link-freetext" href="option.c:5204">option.c:5204</a><o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">#5  reread_dhcp () at
            <a class="moz-txt-link-freetext" href="option.c:5245">option.c:5245</a><o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">#6  0x00005651025b2c53
            in clear_cache_and_reload (now=1722067132) at <a class="moz-txt-link-freetext" href="dnsmasq.c:1699">dnsmasq.c:1699</a><o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">#7  0x00005651025960ac
            in async_event (now=1722067132, pipe=15) at <a class="moz-txt-link-freetext" href="dnsmasq.c:1449">dnsmasq.c:1449</a><o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">#8  main
            (argc=<optimized out>, argv=<optimized out>) at
            <a class="moz-txt-link-freetext" href="dnsmasq.c:1192">dnsmasq.c:1192</a><o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">(gdb)<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">I also reproduced the
            issue on the latest dnsmasq.<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">I created multiple
            namespaces and ran dnsmasq in each namespace. The dnsmasq
            run parameters are as follows: (The path varies according to
            the dnsmasq process parameter.)<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">dnsmasq --no-hosts
            --no-resolv
--pid-file=/var/lib/neutron/dhcp/d7435322-bf42-48a6-b95d-015e2953ff5f/pid
--dhcp-hostsfile=/var/lib/neutron/dhcp/d7435322-bf42-48a6-b95d-015e2953ff5f/host
--addn-hosts=/var/lib/neutron/dhcp/d7435322-bf42-48a6-b95d-015e2953ff5f/addn_hosts
--dhcp-optsfile=/var/lib/neutron/dhcp/d7435322-bf42-48a6-b95d-015e2953ff5f/opts
--dhcp-leasefile=/var/lib/neutron/dhcp/d7435322-bf42-48a6-b95d-015e2953ff5f/leases
            --dhcp-match=<a class="moz-txt-link-freetext" href="set:ipxe,175">set:ipxe,175</a> --dhcp-userclass=<a class="moz-txt-link-freetext" href="set:ipxe6,iPXE">set:ipxe6,iPXE</a>
            --local-service --bind-dynamic --enable-ra
            --ra-param=tap75e693e7-82,0,0
--dhcp-range=<a class="moz-txt-link-freetext" href="set:subnet-bcf0c6db-49ad-42e4-9651-a98c1d7ede7e,fc52:152:42:100::,ra-stateless,64,infinite">set:subnet-bcf0c6db-49ad-42e4-9651-a98c1d7ede7e,fc52:152:42:100::,ra-stateless,64,infinite</a>
            --dhcp-lease-max=16777216
            --conf-file=/etc/neutron/dnsmasq.conf
            --domain=openstacklocal<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">The issue does not
            reproduce the issue before the committe 10d8b5f001, and it
            does not reproduce the issue when I rollback 10d8b5f001 in
            the latest version.<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">Commit 10d8b5f001
            removes duplicate code and replaces free (list->list)
            with dhcp_netid_free(tmplist->list).<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">Before:<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">clear_dynamic_conf<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">         for (list =
            configs->netid; list; list = tmplist)<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">             {<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">              
            free(list->list);<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">               tmplist =
            list->next;<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">              
            free(list);<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">             }<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">NOW:<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">clear_dynamic_conf<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">        
            dhcp_config_free<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">                  
            dhcp_netid_list_free<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">                           
            while (netid)<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">                           
            {<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">                                    
            struct dhcp_netid_list *tmplist = netid;<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">                                    
            netid = netid->next;<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">                                    
            dhcp_netid_free(tmplist->list);<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">                                    
            free(tmplist);<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">                           
            }<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">Recurrence operation:<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">The following method may
            be used to reproduce the problem.<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">Keep adding new stuff to
            the optsfile and reload dnsmasq. This problem recurs when
            about 300 contents are added.<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">However, this problem
            does not recur on each host.<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">There is another strange
            phenomenon. When I add logs as follow, the problem cannot be
            reproduced:<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">diff --git
            a/src/option.c b/src/option.c<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">index f4ff7c0..958b761
            100644<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">--- a/src/option.c<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">+++ b/src/option.c<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">@@ -1329,6 +1329,7 @@
            static void dhcp_netid_free(struct dhcp_netid *nid)<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">     {<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">       struct dhcp_netid
            *tmp = nid;<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">       nid =
            nid->next;<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">+      my_syslog(MS_DHCP
            | LOG_INFO, "=====tmp->net=%p\n", tmp->net);<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">      
            free(tmp->net);<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">       free(tmp);<o:p></o:p></span></p>
        <p class="MsoNormal"><span lang="EN-US">     }<o:p></o:p></span></p>
      </div>
      <br>
      <fieldset class="moz-mime-attachment-header"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
Dnsmasq-discuss mailing list
<a class="moz-txt-link-abbreviated" href="mailto:Dnsmasq-discuss@lists.thekelleys.org.uk">Dnsmasq-discuss@lists.thekelleys.org.uk</a>
<a class="moz-txt-link-freetext" href="https://lists.thekelleys.org.uk/cgi-bin/mailman/listinfo/dnsmasq-discuss">https://lists.thekelleys.org.uk/cgi-bin/mailman/listinfo/dnsmasq-discuss</a>
</pre>
    </blockquote>
  </body>
</html>