<h3>Description</h3>
<p>Setting string values via <code>cfg_rpc</code> leaves old strings in SHM.</p>
<h4>Reproduction</h4>
<p>Set some string value to e.g. <code>tm.ac_extra_hdrs</code>:</p>
<div class="highlight highlight-source-shell"><pre>x=10
<span class="pl-k">while</span> [ <span class="pl-smi">$x</span> <span class="pl-k">-gt</span> 0 ] <span class="pl-k">;</span> <span class="pl-k">do</span>
sudo kamctl rpc cfg.sets tm ac_extra_hdrs das<span class="pl-smi">$x</span> <span class="pl-k">></span>/dev/null
sleep 0.001
x=<span class="pl-s"><span class="pl-pds">$((</span>x <span class="pl-k">-</span> <span class="pl-c1">1</span><span class="pl-pds">))</span></span>
<span class="pl-k">done</span></pre></div>
<h4>Debugging Data</h4>
<p>After running above snippet four times:</p>
<pre><code>sudo kamcmd cfg.set_now_int core mem_dump_shm 1
grep "^Oct 4 15:11:4.* qm_status:.*alloc'd" /var/log/syslog | cut -d: -f6- | sort | uniq -c | sort -n | grep core/cfg/cfg
1 alloc'd from core: core/cfg/cfg_struct.c: cfg_shmize(217)
1 alloc'd from core: core/cfg/cfg_struct.c: sr_cfg_init(322)
1 alloc'd from core: core/cfg/cfg_struct.c: sr_cfg_init(334)
1 alloc'd from core: core/cfg/cfg_struct.c: sr_cfg_init(346)
1 alloc'd from core: core/cfg/cfg_struct.c: sr_cfg_init(353)
1 alloc'd from core: core/cfg/cfg_struct.c: sr_cfg_init(360)
2 alloc'd from core: core/cfg/cfg_ctx.c: cfg_register_ctx(47)
3 alloc'd from core: core/cfg/cfg_struct.c: cfg_clone_global(625)
39 alloc'd from core: core/cfg/cfg_ctx.c: cfg_set_now(559)
40 alloc'd from core: core/cfg/cfg_struct.c: cfg_child_cb_new(828)
42 alloc'd from core: core/cfg/cfg_struct.c: cfg_clone_str(130)
sudo kamcmd mod.stats core shm|grep \\bcfg_
cfg_clone_global(625): 1392
cfg_set_now(559): 624
cfg_clone_str(130): 384
cfg_shmize(217): 696
cfg_register_ctx(47): 64
cfg_child_cb_new(828): 2560
</code></pre>
<p>memory values from cfg_clone_str addresses:</p>
<pre><code>grep -B1 'Oct 4 15:11:4.*cfg_clone_str' /var/log/syslog|sed '/address=/!d' | cut -d: -f6-
55. N address=0x7f1310eab7f8 frag=0x7f1310eab7c0 size=40 used=1
56. N address=0x7f1310eab888 frag=0x7f1310eab850 size=24 used=1
62. N address=0x7f1310ec7b10 frag=0x7f1310ec7ad8 size=8 used=1
65. N address=0x7f1310ec7ca0 frag=0x7f1310ec7c68 size=8 used=1
68. N address=0x7f1310ec7e30 frag=0x7f1310ec7df8 size=8 used=1
69. N address=0x7f1310ec7ea0 frag=0x7f1310ec7e68 size=8 used=1
72. N address=0x7f1310ec8030 frag=0x7f1310ec7ff8 size=8 used=1
75. N address=0x7f1310ec81c0 frag=0x7f1310ec8188 size=8 used=1
78. N address=0x7f1310ec8350 frag=0x7f1310ec8318 size=8 used=1
81. N address=0x7f1310ec84e0 frag=0x7f1310ec84a8 size=8 used=1
84. N address=0x7f1310ec8670 frag=0x7f1310ec8638 size=8 used=1
87. N address=0x7f1310ec8800 frag=0x7f1310ec87c8 size=8 used=1
90. N address=0x7f1310ec8990 frag=0x7f1310ec8958 size=8 used=1
93. N address=0x7f1310ec8b20 frag=0x7f1310ec8ae8 size=8 used=1
96. N address=0x7f1310ec8cb0 frag=0x7f1310ec8c78 size=8 used=1
99. N address=0x7f1310ec8e40 frag=0x7f1310ec8e08 size=8 used=1
103. N address=0x7f1310ec92f0 frag=0x7f1310ec92b8 size=8 used=1
106. N address=0x7f1310ec9480 frag=0x7f1310ec9448 size=8 used=1
109. N address=0x7f1310ec9610 frag=0x7f1310ec95d8 size=8 used=1
112. N address=0x7f1310ec97a0 frag=0x7f1310ec9768 size=8 used=1
115. N address=0x7f1310ec9930 frag=0x7f1310ec98f8 size=8 used=1
118. N address=0x7f1310ec9ac0 frag=0x7f1310ec9a88 size=8 used=1
121. N address=0x7f1310ec9c50 frag=0x7f1310ec9c18 size=8 used=1
124. N address=0x7f1310ec9de0 frag=0x7f1310ec9da8 size=8 used=1
127. N address=0x7f1310ec9f70 frag=0x7f1310ec9f38 size=8 used=1
131. N address=0x7f1310eca420 frag=0x7f1310eca3e8 size=8 used=1
134. N address=0x7f1310eca5b0 frag=0x7f1310eca578 size=8 used=1
137. N address=0x7f1310eca740 frag=0x7f1310eca708 size=8 used=1
140. N address=0x7f1310eca8d0 frag=0x7f1310eca898 size=8 used=1
144. N address=0x7f1310ecad80 frag=0x7f1310ecad48 size=8 used=1
147. N address=0x7f1310ecaf10 frag=0x7f1310ecaed8 size=8 used=1
150. N address=0x7f1310ecb0a0 frag=0x7f1310ecb068 size=8 used=1
153. N address=0x7f1310ecb230 frag=0x7f1310ecb1f8 size=8 used=1
156. N address=0x7f1310ecb3c0 frag=0x7f1310ecb388 size=8 used=1
159. N address=0x7f1310ecb550 frag=0x7f1310ecb518 size=8 used=1
162. N address=0x7f1310ecb6e0 frag=0x7f1310ecb6a8 size=8 used=1
165. N address=0x7f1310ecb870 frag=0x7f1310ecb838 size=8 used=1
168. N address=0x7f1310ecba00 frag=0x7f1310ecb9c8 size=8 used=1
172. N address=0x7f1310ecbeb0 frag=0x7f1310ecbe78 size=8 used=1
175. N address=0x7f1310ecc040 frag=0x7f1310ecc008 size=8 used=1
178. N address=0x7f1310ecc1d0 frag=0x7f1310ecc198 size=8 used=1
181. N address=0x7f1310ecc360 frag=0x7f1310ecc328 size=8 used=1
0x7f1310eab7f8: "trying -- your call is important to us"
0x7f1310eab888: "Server Internal Error"
0x7f1310ec7b10: "das10"
0x7f1310ec7ca0: "das9"
0x7f1310ec7e30: "das10"
0x7f1310ec7ea0: "das10"
0x7f1310ec8030: "das9"
0x7f1310ec81c0: "das9"
0x7f1310ec8350: "das8"
0x7f1310ec84e0: "das7"
0x7f1310ec8670: "das6"
0x7f1310ec8800: "das5"
0x7f1310ec8990: "das4"
0x7f1310ec8b20: "das3"
0x7f1310ec8cb0: "das2"
0x7f1310ec8e40: "das1"
0x7f1310ec92f0: "das10"
0x7f1310ec9480: "das9"
0x7f1310ec9610: "das8"
0x7f1310ec97a0: "das7"
0x7f1310ec9930: "das6"
0x7f1310ec9ac0: "das5"
0x7f1310ec9c50: "das4"
0x7f1310ec9de0: "das3"
0x7f1310ec9f70: "das2"
0x7f1310eca420: "das1"
0x7f1310eca5b0: "das8"
0x7f1310eca740: "das7"
0x7f1310eca8d0: "das6"
0x7f1310ecad80: "das5"
0x7f1310ecaf10: "das4"
0x7f1310ecb0a0: "das3"
0x7f1310ecb230: "das2"
0x7f1310ecb3c0: "das1"
0x7f1310ecb550: "das8"
0x7f1310ecb6e0: "das7"
0x7f1310ecb870: "das6"
0x7f1310ecba00: "das5"
0x7f1310ecbeb0: "das4"
0x7f1310ecc040: "das3"
0x7f1310ecc1d0: "das2"
0x7f1310ecc360: "das1"
</code></pre>
<h3>Additional Information</h3>
<ul>
<li><strong>Kamailio Version</strong> - output of <code>kamailio -v</code></li>
</ul>
<pre><code>/usr/sbin/kamailio -v
version: kamailio 5.2.4 (x86_64/linux)
flags: STATS: Off, USE_TCP, USE_TLS, USE_SCTP, TLS_HOOKS, USE_RAW_SOCKS, DISABLE_NAGLE, USE_MCAST, DNS_IP_HACK, SHM_MEM, SHM_MMAP, PKG_MALLOC, Q_MALLOC, F_MALLOC, TLSF_MALLOC, DBG_SR_MEMORY, USE_FUTEX, FAST_LOCK-ADAPTIVE_WAIT, USE_DNS_CACHE, USE_DNS_FAILOVER, USE_NAPTR, USE_DST_BLACKLIST, HAVE_RESOLV_RES
ADAPTIVE_WAIT_LOOPS=1024, MAX_RECV_BUFFER_SIZE 262144 MAX_URI_SIZE 1024, BUF_SIZE 65535, DEFAULT PKG_SIZE 8MB
poll method support: poll, epoll_lt, epoll_et, sigio_rt, select.
id: unknown
compiled with gcc 6.3.0
</code></pre>
<ul>
<li><strong>Operating System</strong>:</li>
</ul>
<pre><code>Debian 9.11
</code></pre>
<p style="font-size:small;-webkit-text-size-adjust:none;color:#666;">—<br />You are receiving this because you are subscribed to this thread.<br />Reply to this email directly, <a href="https://github.com/kamailio/kamailio/issues/2094?email_source=notifications&email_token=ABO7UZKXK4PVRDR2ZRD35WLQM5CKXA5CNFSM4I5QAI6KYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HPVY7LA">view it on GitHub</a>, or <a href="https://github.com/notifications/unsubscribe-auth/ABO7UZIT5LVAHVEB6MFSBPLQM5CKXANCNFSM4I5QAI6A">mute the thread</a>.<img src="https://github.com/notifications/beacon/ABO7UZPNNUVXMODE4WURP2LQM5CKXA5CNFSM4I5QAI6KYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HPVY7LA.gif" height="1" width="1" alt="" /></p>
<script type="application/ld+json">[
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"potentialAction": {
"@type": "ViewAction",
"target": "https://github.com/kamailio/kamailio/issues/2094?email_source=notifications\u0026email_token=ABO7UZKXK4PVRDR2ZRD35WLQM5CKXA5CNFSM4I5QAI6KYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HPVY7LA",
"url": "https://github.com/kamailio/kamailio/issues/2094?email_source=notifications\u0026email_token=ABO7UZKXK4PVRDR2ZRD35WLQM5CKXA5CNFSM4I5QAI6KYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HPVY7LA",
"name": "View Issue"
},
"description": "View this Issue on GitHub",
"publisher": {
"@type": "Organization",
"name": "GitHub",
"url": "https://github.com"
}
}
]</script>