<html><body><div style="color:#000; background-color:#fff; font-family:arial, helvetica, sans-serif;font-size:10pt"><div><span>Hi Charles,</span></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal;"><span><br></span></div><div style="font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal;"><span style="color: rgb(0, 0, 0);">In the function where Daniel just made the fix for the memory leak (</span><span style="font-family: monospace; font-size: 12px; white-space: pre;">int pv_get_mcd_value() </span><span style="color: rgb(0, 0, 0); background-color: transparent;">) , just before existing it with 0  , we added  something like the following :</span></div><div style="font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal; color: rgb(0, 0,
 0);"><span style="color: rgb(0, 0, 0); background-color: transparent;"><br></span></div><div style="font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal; color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 0); background-color: transparent;">if (mcd_memory) {</span></div><div style="font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal; color: rgb(0, 0, 0);"><br></div><div style="font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal; color: rgb(0, 0, 0);">       pkg_free(return_value); </div><div style="font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal; color: rgb(0, 0, 0);"><br></div><div style="font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style:
 normal; color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 0); background-color: transparent;">}  else {</span></div><div style="font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal; color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 0); background-color: transparent;"><br></span></div><div style="font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal; color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 0); background-color: transparent;"><span class="Apple-tab-span" style="white-space:pre">        </span>free(return_value); </span></div><div style="font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal; color: rgb(0, 0, 0);"><span style="color: rgb(0, 0, 0); background-color: transparent;">}</span></div><div><br></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family:
 arial, helvetica, sans-serif; background-color: transparent; font-style: normal;">It looks like it does not leak anymore, but please-double check if we are free-ing it in the right place. </div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal;"><br></div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal;">Regards,</div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style: normal;">Dragos</div><div style="color: rgb(0, 0, 0); font-size: 13px; font-family: arial, helvetica, sans-serif; background-color: transparent; font-style:
 normal;"><br></div>  <div style="font-family: arial, helvetica, sans-serif; font-size: 10pt;"> <div style="font-family: 'times new roman', 'new york', times, serif; font-size: 12pt;"> <div dir="ltr"> <hr size="1">  <font size="2" face="Arial"> <b><span style="font-weight:bold;">From:</span></b> Charles Chance <charles.chance@sipcentric.com><br> <b><span style="font-weight: bold;">To:</span></b> Daniel-Constantin Mierla <miconda@gmail.com> <br><b><span style="font-weight: bold;">Cc:</span></b> sr-dev <sr-dev@lists.sip-router.org> <br> <b><span style="font-weight: bold;">Sent:</span></b> Thursday, October 3, 2013 7:27 PM<br> <b><span style="font-weight: bold;">Subject:</span></b> Re: [sr-dev] memory leak in memcached module<br> </font> </div> <div class="y_msg_container"><br><div id="yiv1603112794"><div dir="ltr">I can take a look this evening. Assuming nobody has already started?</div>
<div dir="ltr">Best,</div>
<div dir="ltr">Charles<br>
</div>
<div class="yiv1603112794gmail_quote">On 2 Oct 2013 20:23, "Daniel-Constantin Mierla" <<a rel="nofollow" ymailto="mailto:miconda@gmail.com" target="_blank" href="mailto:miconda@gmail.com">miconda@gmail.com</a>> wrote:<br><blockquote class="yiv1603112794gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hello,<br>
<br>
there is (still) a memory leak in memcached module, discovered on a report by Dragos Oancea.<br>
<br>
The pkg usage logs are like:<br>
<br>
0(24328) NOTICE: qm_status:    19010. N  address=0x7fb23683bc98 frag=0x7fb23683bc68 size=8 used=1<br>
 0(24328) NOTICE: qm_status:           alloc'd from memcached: ../../parser/../ut.h: pkg_str_dup(733)<br>
 0(24328) NOTICE: qm_status:          start check=f0f0f0f0, end check= c0c0c0c0, abcdefed<br>
 0(24328) NOTICE: qm_status:    19011. N  address=0x7fb23683bd00 frag=0x7fb23683bcd0 size=48 used=1<br>
 0(24328) NOTICE: qm_status:           alloc'd from memcached: memcached.c: mcd_malloc(127)<br>
 0(24328) NOTICE: qm_status:          start check=f0f0f0f0, end check= c0c0c0c0, abcdefed<br>
 0(24328) NOTICE: qm_status:    19012. N  address=0x7fb23683bd90 frag=0x7fb23683bd60 size=8 used=1<br>
 0(24328) NOTICE: qm_status:           alloc'd from memcached: ../../parser/../ut.h: pkg_str_dup(733)<br>
 0(24328) NOTICE: qm_status:          start check=f0f0f0f0, end check= c0c0c0c0, abcdefed<br>
 0(24328) NOTICE: qm_status:    19013. N  address=0x7fb23683bdf8 frag=0x7fb23683bdc8 size=48 used=1<br>
 0(24328) NOTICE: qm_status:           alloc'd from memcached: memcached.c: mcd_malloc(127)<br>
 0(24328) NOTICE: qm_status:          start check=f0f0f0f0, end check= c0c0c0c0, abcdefed<br>
 0(24328) NOTICE: qm_status:    19014. N  address=0x7fb23683be88 frag=0x7fb23683be58 size=8 used=1<br>
 0(24328) NOTICE: qm_status:           alloc'd from memcached: memcached.c: mcd_malloc(127)<br>
 0(24328) NOTICE: qm_status:          start check=f0f0f0f0, end check= c0c0c0c0, abcdefed<br>
 0(24328) NOTICE: qm_status:    19015. N  address=0x7fb23683bef0 frag=0x7fb23683bec0 size=16 used=1<br>
 0(24328) NOTICE: qm_status:           alloc'd from memcached: ../../parser/../ut.h: pkg_str_dup(733)<br>
 0(24328) NOTICE: qm_status:          start check=f0f0f0f0, end check= c0c0c0c0, abcdefed<br>
 0(24328) NOTICE: qm_status:    19016. N  address=0x7fb23683bf60 frag=0x7fb23683bf30 size=8 used=1<br>
 0(24328) NOTICE: qm_status:           alloc'd from memcached: memcached.c: mcd_malloc(127)<br>
 0(24328) NOTICE: qm_status:          start check=f0f0f0f0, end check= c0c0c0c0, abcdefed<br>
 0(24328) NOTICE: qm_status:    19017. N  address=0x7fb23683bfc8 frag=0x7fb23683bf98 size=24 used=1<br>
 0(24328) NOTICE: qm_status:           alloc'd from memcached: ../../parser/../ut.h: pkg_str_dup(733)<br>
 0(24328) NOTICE: qm_status:          start check=f0f0f0f0, end check= c0c0c0c0, abcdefed<br>
<br>
The one related to pkg_str_dup() should be fixed by the commit:<br>
<br>
- <a rel="nofollow" target="_blank" href="http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=6faf12653c1db9f011b1826061824c831bda3f58">http://git.sip-router.org/cgi-<u></u>bin/gitweb.cgi/sip-router/?a=<u></u>commit;h=<u></u>6faf12653c1db9f011b1826061824c<u></u>831bda3f58</a><br>

<br>
The other one is related to mcd_malloc(), which I guess it is due to the function that returns the value from memchache, memcached_get() used in  pv_get_mcd_value_helper() -- the returned object has to be freed by calling code, according to:<br>

<br>
- <a rel="nofollow" target="_blank" href="http://docs.libmemcached.org/memcached_get.html">http://docs.libmemcached.org/<u></u>memcached_get.html</a><br>
<br>
Since the libmemcached was initialized with wrappers around pkg malloc/free, I expect the respective free function has to be used to free the result.<br>
<br>
Can any of memcached devs check my commit and investigate further the second leak?<br>
<br>
Cheers,<br>
Daniel<br>
<br>
-- <br>
Daniel-Constantin Mierla - <a rel="nofollow" target="_blank" href="http://www.asipto.com/">http://www.asipto.com</a><br>
<a rel="nofollow" target="_blank" href="http://twitter.com/#!/miconda">http://twitter.com/#!/miconda</a> - <a rel="nofollow" target="_blank" href="http://www.linkedin.com/in/miconda">http://www.linkedin.com/in/<u></u>miconda</a><br>
Kamailio Advanced Trainings - Berlin, Nov 25-28; Miami, Nov 18-20, 2013<br>
  - more details about Kamailio trainings at <a rel="nofollow" target="_blank" href="http://www.asipto.com/">http://www.asipto.com</a> -<br>
<br>
<br>
______________________________<u></u>_________________<br>
sr-dev mailing list<br>
<a rel="nofollow" ymailto="mailto:sr-dev@lists.sip-router.org" target="_blank" href="mailto:sr-dev@lists.sip-router.org">sr-dev@lists.sip-router.org</a><br>
<a rel="nofollow" target="_blank" href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev">http://lists.sip-router.org/<u></u>cgi-bin/mailman/listinfo/sr-<u></u>dev</a><br>
</blockquote></div>

<br>
<font face="Helvetica, Arial, sans-serif"><font size="2"><span style="font-size:10pt;"><a rel="nofollow" target="_blank" href="http://www.sipcentric.com/" title="blocked::http://www.sipcentric.com/">www.sipcentric.com</a><br>
            <br>
            Follow us on twitter <a rel="nofollow" target="_blank" href="http://twitter.com/sipcentric" title="blocked::http://twitter.com/sipcentric">@sipcentric</a><br>
            <br>
            <font color="gray">Sipcentric Ltd.
                Company registered in England & Wales no. 7365592.</font> <font color="gray">Registered
                office: Unit 10 iBIC, Birmingham Science Park, Holt Court South, Birmingham B7 4EJ.</font></span></font></font></div><br>_______________________________________________<br>sr-dev mailing list<br><a ymailto="mailto:sr-dev@lists.sip-router.org" href="mailto:sr-dev@lists.sip-router.org">sr-dev@lists.sip-router.org</a><br><a href="http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev" target="_blank">http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-dev</a><br><br><br></div> </div> </div>  </div></body></html>