Hello Daniel,
I tried with git master branch and it works only for a simple event-route script where avp(msg) is not modified as below:
# event route event_route[network:msg] {
xlog("L_INFO", " Event_Route \n"); if (is_incoming()) { xlog("L_INFO", "Received message '$mb' \n"); $avp(msg) = $mb; xinfo("avp(msg) = $avp(msg)"); } else { xlog("L_INFO", "Sending message '$mb' \n"); $avp(msg) = $mb; xinfo("avp(msg) = $avp(msg)"); } }
Then I tried it using this script as an example to set the message to send out:
# event route event_route[network:msg] {
xlog("L_INFO", " Event_Route \n"); if (is_incoming()) { xlog("L_INFO", "Received message '$mb' \n"); $avp(msg) = $mb; xinfo("avp(msg) = $avp(msg)"); } else { xlog("L_INFO", "Sending message '$mb' \n"); $avp(msg) = $mb; xinfo("var(x)= $var(x)"); $var(x)="a=3gOoBTC" + "\r" + "\n"; $avp(msg) = $(avp(msg){s.replace,$var(x),}); avp_print(); } }
Examining the attached log I saw that for each INVITE retransmission (handled by another processor-pid) the avp (msg) is not freed and is accumulated. So I modified the script to delete the avp(msg) before using it and that fixed the issue.
2) Delete avp(msg) before using it
# event route event_route[network:msg] {
xlog("L_INFO", " Event_Route \n"); if (is_incoming()) { xlog("L_INFO", "Received message '$mb' \n"); $avp(msg) = $mb; xinfo("avp(msg) = $avp(msg)"); } else { xlog("L_INFO", "Sending message '$mb' \n"); $(avp(msg)[*]) = $null; <---------------------------------------------- $avp(msg) = $mb; xinfo("var(x)= $var(x)"); $var(x)="a=3gOoBTC" + "\r" + "\n"; $avp(msg) = $(avp(msg){s.replace,$var(x),}); avp_print(); } }
This workaround also fixed the issue in the original 5.8.2 version.
Regards,
Vanderlei
________________________________ De: Daniel-Constantin Mierla miconda@gmail.com Enviado: quarta-feira, 10 de julho de 2024 07:05 Para: Kamailio (SER) - Users Mailing List sr-users@lists.kamailio.org Cc: Vanderlei Torres Batistela v.batistela@hotmail.com Assunto: Re: [SR-Users] Possible Kamailio memmory leak - version 5.8.2
Hello,
I couldn't spot any error message in the log file that you attached, have you taken it when you encountered the problem?
Anyhow, I am not familiar with the implementation of the event_route[network:msg], but the shm info indicates the leak to be related to avp, so I pushed a patch to destroy the nio_msg_avp avp after event route execution. Can you try with git master branch and see if works ok?
Cheers, Daniel
On 02.07.24 16:24, Vanderlei Torres Batistela via sr-users wrote: Hello all,
I am using a very simple scritp with corex module enabled . Normal calls works fine, but a scenario where INVITE does not receive response and the call is released with SIP 408 (request timeout) leads to memmory leak. I verified it making a lot of calls with this scenario and printing the shared memory (using kamcmd core.shmmem) . Its ocurred with modparam("corex", "nio_intercept", 1). If I modify to modparam("corex", "nio_intercept", 0) the memmory leak does not ocurr anymore. The problem also occurs in another scenario where the SIP Cancel message is not responded to.
My script has this event route
# event route event_route[network:msg] {
xlog("L_INFO", "Dentro do Event_Route \n"); if (is_incoming()) { xlog("L_INFO", "Received message '$mb' \n"); $avp(msg) = $mb; xinfo("avp(msg) = $avp(msg)"); } else { xlog("L_INFO", "Sending message '$mb' \n"); $avp(msg) = $mb; }; }
Test done wtih 4000 calls:
[root@labcom070 kamailio]# kamctl stats shmem { "jsonrpc": "2.0", "result": [ "shmem:fragments = 900", "shmem:free_size = 6180368", "shmem:max_used_size = 66980272", "shmem:real_used_size = 60928496", "shmem:total_size = 67108864", "shmem:used_size = 54884944" ], "id": 393115 }
[root@labcom070 kamailio]# kamcmd mod.stats all shm Module: core { create_avp(178): 52257504 counters_prefork_init(211): 53760 cfg_clone_str(132): 112 cfg_shmize(221): 832 main_loop(1381): 16 init_pt(104): 16 init_pt(103): 16 init_pt(102): 6224 cfg_register_ctx(47): 96 init_tcp(5197): 8192 init_tcp(5191): 32768 init_tcp(5182): 16 init_tcp(5175): 16 init_tcp(5167): 16 init_tcp(5161): 16 init_tcp(5149): 16 init_avps(92): 16 init_avps(91): 16 init_dst_blocklist(435): 16384 init_dst_blocklist(427): 16 timer_alloc(494): 96 init_dns_cache(368): 16 init_dns_cache(359): 16384 init_dns_cache(351): 16 init_dns_cache(343): 16 init_timer(264): 16 init_timer(263): 16384 init_timer(262): 16 init_timer(261): 16 init_timer(250): 16 init_timer(218): 16 init_timer(207): 278544 init_timer(206): 16 init_timer(194): 16 cfg_child_cb_new(832): 64 sr_cfg_init(371): 16 sr_cfg_init(364): 16 sr_cfg_init(356): 16 sr_cfg_init(344): 16 sr_cfg_init(332): 16 ksr_shutdown_phase_init(123): 16 rpc_hash_add(118): 16 qm_shm_lock_init(1463): 16 Total: 52687808 }
I attached my kamailio script used and a log with one call using the command "kamcmd corex.shm_summary" with modparam("corex", "nio_intercept", 1) and modparam("corex", "nio_intercept", 0)
Regards,
Vanderlei
__________________________________________________________ Kamailio - Users Mailing List - Non Commercial Discussions To unsubscribe send an email to sr-users-leave@lists.kamailio.orgmailto:sr-users-leave@lists.kamailio.org Important: keep the mailing list in the recipients, do not reply only to the sender! Edit mailing list options or unsubscribe:
-- Daniel-Constantin Mierla (@ asipto.com) twitter.com/miconda -- linkedin.com/in/miconda Kamailio Consultancy, Training and Development Services -- asipto.com