Hello,
I pushed a fix to kamailio master branch that should solve it -- last commits to acc module. If you can give it a try and report results, would be appreciated.
Cheers, Daniel
On 03/10/14 17:00, Igor Potjevlesch wrote:
Hello Daniel,
I’m just seeing that 4.2 is scheduled for 15th October.
I can wait until this date.
Regards,
Igor.
*De :*Igor Potjevlesch [mailto:igor.potjevlesch@gmail.com] *Envoyé :* jeudi 2 octobre 2014 18:43 *À :* miconda@gmail.com *Cc :* 'Kamailio (SER) - Users Mailing List' *Objet :* RE: [SR-Users] Crash Kamailio 4.1.4
Hello,
Thank you for your time on this issue.
I understand that I can define “db_extra” like:
modparam("acc", "db_extra",
"src_user=$fU;username=$Au;src_domain=$fd;src_ip=$si;src_pai=*$avp(s:pai)*;"
"dst_ouser=$tU;dst_user=$rU;dst_domain=$rd")
Instead of:
modparam("acc", "db_extra",
"src_user=$fU;username=$Au;src_domain=$fd;src_ip=$si;*src_pai=$ai*;"
"dst_ouser=$tU;dst_user=$rU;dst_domain=$rd")
And, in the request_route
request_route {
#Store PAI in AVP for accounting*
$avp(s:pai)=$ai;*
# per request initial checks
route(REQINIT);
[…]
}
I can put this fix while waiting for 4.2.
Regards,
Igor.
*De :*Daniel-Constantin Mierla [mailto:miconda@gmail.com] *Envoyé :* jeudi 2 octobre 2014 10:17 *À :* Igor Potjevlesch *Cc :* 'Kamailio (SER) - Users Mailing List' *Objet :* Re: [SR-Users] Crash Kamailio 4.1.4
Hello,
not really troubleshooting, as I got traveling, but I thought a bit of it, also from performances point of view.
As it was related to parallel processing of 1xx/2xx sip responses that you are accounting, I think the safest solutions would be:
- clone the message locally to acc if it is the tm (share memory)
- do synchronized access to tm data inside the acc (use locks there)
Instead of using locks or other workarounds in tm (lower performances in all cases), better do it on the part doing parallel access out of tm. Acc is doing some particular processing -- it uses a callback for a reply to access the response, so it is quite specific to it.
If you want to be safe side immediately, store the PAI in an avp inside request_route and use that avp for accounting.
A solution will be there before 4.2 is out.
Cheers, Daniel
On 02/10/14 09:50, Igor Potjevlesch wrote:
Hello Daniel, Have you had the opportunity to look at this? Thank you for your feedback. Regards, Igor. *De :*Daniel-Constantin Mierla [mailto:miconda@gmail.com] *Envoyé :* mercredi 24 septembre 2014 09:00 *À :* Igor Potjevlesch *Cc :* 'Kamailio \(SER\) - Users Mailing List' *Objet :* Re: [SR-Users] Crash Kamailio 4.1.4 Hello, so it is still related to PAI header -- I will have more time to look at it by end of the week. Cheers, Daniel On 23/09/14 19:16, Igor Potjevlesch wrote: Hello Daniel, Patching has been done in the same time than the upgrade to 4.1.5. A new crash occurred in pvapi.c (in addition of my other recent post “Crash Kamailio 4.1.5”). Here is the result of a “bt full”: #0 0x000000000049580e in pv_get_strval (msg=0x7f14efe24ea8, param=0x7f14fb65d058, res=0x7fff6c6b7430, sval=0x22) at pvapi.c:521 No locals. #1 0x00007f14f9677f2b in pv_get_pai (msg=0x7f14efe24ea8, param=0x7f14fb65d058, res=0x7fff6c6b7430) at pv_core.c:1026 idxf = 0 idx = 0 pai_body = 0x7f14fb679d38 pai_uri = 0xa i = 0 cur_id = 0 __FUNCTION__ = "pv_get_pai" #2 0x0000000000499594 in pv_get_spec_value (msg=0x7f14efe24ea8, sp=0x7f14fb65d040, value=0x7fff6c6b7430) at pvapi.c:1266 ret = 0 __FUNCTION__ = "pv_get_spec_value" #3 0x00007f14f7d3481d in extra2strar (extra=0x7f14fb65d030, rq=0x7f14efe24ea8, val_arr=0x7f14f7f41e30, int_arr=0x7f14f7f4237c, type_arr=0x7f14f7f424e7 "\002\002\002\002") at acc_extra.c:261 value = {rs = {s = 0x0, len = 0}, ri = 0, flags = 0} n = 4 r = 0 __FUNCTION__ = "extra2strar" #4 0x00007f14f7d2c3e3 in acc_db_request (rq=0x7f14efe24ea8) at acc.c:474 m = 7 n = -270381400 i = 6 t = 0x414cc0 __FUNCTION__ = "acc_db_request" #5 0x00007f14f7d36bc8 in acc_onreply (t=0x7f14efe525b8, req=0x7f14efe24ea8, reply=0x7f14fb670c48, code=200) at acc_logic.c:471 new_uri_bk = {s = 0x7f14efe25590 "sip:ABCDEFGHIJ@<IP_GW>oTE sINVITE sip:ABCDEFGHIJ@sip.fqdn.tldSIP/2.0\r\nVia: SIP/2.0/UDP <IP_UAC>:5060;branch=z9hG4bK5f32deec\r\nMax-Forwards: 69\r\nFrom: \"KLMNOPQRST\" <sip:KLMNOPQRST@sip.fqdn."..., len = 19} br = 0 hdr = 0x7f14f7d3dc20 __FUNCTION__ = "acc_onreply" #6 0x00007f14f7d3730a in tmcb_func (t=0x7f14efe525b8, type=512, ps=0x7fff6c6b76b0) at acc_logic.c:573 __FUNCTION__ = "tmcb_func" #7 0x00007f14f9f3146c in run_trans_callbacks_internal (cb_lst=0x7f14efe52628, type=512, trans=0x7f14efe525b8, params=0x7fff6c6b76b0) at t_hooks.c:290 cbp = 0x7f14ee4c81b0 backup_from = 0x934630 backup_to = 0x934638 backup_dom_from = 0x934640 backup_dom_to = 0x934648 backup_uri_from = 0x934620 backup_uri_to = 0x934628 backup_xavps = 0x934760 __FUNCTION__ = "run_trans_callbacks_internal" #8 0x00007f14f9f3167e in run_trans_callbacks_with_buf (type=512, rbuf=0x7f14efe52678, req=0x7f14efe24ea8, repl=0x7f14fb670c48, flags=183) at t_hooks.c:336 params = {req = 0x7f14efe24ea8, rpl = 0x7f14fb670c48, param = 0x7f14ee4c81c0, code = 200, flags = 183, branch = 0, t_rbuf = 0x7f14efe52678, dst = 0x7f14efe526c8, send_buf = { s = 0x7f14efd7c408 "SIP/2.0 200 OK\r\nVia: SIP/2.0/UDP <IP_UAC>:5060;rport=5060;branch=z9hG4bK5f32deec\r\nCall-ID: 7846f7332ce6a7db4484c3d06ce1c387@sip.fqdn.tld\r\nFrom <mailto:7846f7332ce6a7db4484c3d06ce1c387@sip.fqdn.tld%5Cr%5CnFrom>: \"KLMNOPQRST\" <sip:KLMNOPQRST@sip.fqdn.tld> <sip:KLMNOPQRST@sip.fqdn.tld>"..., len = 980}} trans = 0x7f14efe525b8 #9 0x00007f14f9f63bfa in relay_reply (t=0x7f14efe525b8, p_msg=0x7f14fb670c48, branch=0, msg_status=183, cancel_data=0x7fff6c6b7a10, do_put_on_wait=1) at t_reply.c:2001 relay = 0 save_clone = 0 buf = 0x7f14fb67e740 "SIP/2.0 183 Session Progress\r\nVia: SIP/2.0/UDP <IP_UAC>:5060;rport=5060;branch=z9hG4bK5f32deec\r\nCall-ID: 7846f7332ce6a7db4484c3d06ce1c387@sip.fqdn.tld\r\nFrom <mailto:7846f7332ce6a7db4484c3d06ce1c387@sip.fqdn.tld%5Cr%5CnFrom>: \"KLMNOPQRST\" <sip:KLMNOPQRST@tru"... res_len = 777 relayed_code = 183 relayed_msg = 0x7f14fb670c48 reply_bak = 0x414cc0 bm = {to_tag_val = {s = 0x7f14efe53b50 "", len = -79437808}} totag_retr = 0 reply_status = RPS_PROVISIONAL uas_rb = 0x7f14efe52678 to_tag = 0x0 reason = {s = 0x800000001 <Address 0x800000001 out of bounds>, len = 1} onsend_params = {req = 0x200924970, rpl = 0x7f14f9f83f90, param = 0x414cc0, code = 1818984640, flags = 3, branch = 0, t_rbuf = 0x0, dst = 0x7f14fb670e40, send_buf = {s = 0x7fff6c6b7830 "`xkl\377\177", len = -101469275}} __FUNCTION__ = "relay_reply" #10 0x00007f14f9f660ab in reply_received (p_msg=0x7f14fb670c48) at t_reply.c:2499 msg_status = 183 last_uac_status = 183 ack = 0x40 <Address 0x40 out of bounds> ack_len = 0 branch = 0 reply_status = -77092928 onreply_route = 1 cancel_data = {cancel_bitmap = 0, reason = {cause = 0, u = {text = {s = 0x0, len = 9586205}, e2e_cancel = 0x0, packed_hdrs = {s = 0x0, len = 9586205}}}} uac = 0x7f14efe52720 t = 0x7f14efe525b8 lack_dst = {send_sock = 0x7f14fb584420, to = {s = {sa_family = 57360, sa_data = "C\373\024\177\000\000\000F#\000\000\000\000"}, sin = {sin_family = 57360, sin_port = 64323, sin_addr = {s_addr = 32532}, sin_zero = "\000F#\000\000\000\000"}, sin6 = { sin6_family = 57360, sin6_port = 64323, sin6_flowinfo = 32532, sin6_addr = {__in6_u = {__u6_addr8 = "\000F#\000\000\000\000\000\020\341C\373\024\177\000", __u6_addr16 = {17920, 35, 0, 0, 57616, 64323, 32532, 0}, __u6_addr32 = {2311680, 0, 4215529744, 32532}}}, sin6_scope_id = 4215529744}}, id = 32532, proto = 96 '`', send_flags = {f = 64 '@', blst_imask = 103 'g'}} backup_user_from = 0x934630 backup_user_to = 0x934638 backup_domain_from = 0x934640 backup_domain_to = 0x934648 backup_uri_from = 0x934620 backup_uri_to = 0x934628 backup_xavps = 0x934760 replies_locked = 1 branch_ret = 0 prev_branch = 1818983120 blst_503_timeout = 32767 hf = 0x7f14fb670c68 onsend_params = {req = 0x7fff6c6b7a90, rpl = 0x550bb0, param = 0x234540, code = 0, flags = 3, branch = 0, t_rbuf = 0x7f14fb43e380, dst = 0x7f14fb674030, send_buf = {s = 0x7fff6c6b7a90 "`G\223", len = 5538065}} ctx = {rec_lev = 0, run_flags = 0, last_retcode = 0, jmp_env = {{__jmpbuf = {139728093908544, 1898006658898931560, 4279488, 140735012372672, 0, 0, 1898006658936680296, -1897762211976106136}, __mask_was_saved = 0, __saved_mask = {__val = {9586373, 1365809186688, 124554051613, 9586450, 139728093947840, 9587056, 9586211, 361695345073193192, 9586309, 9586288, 4217874320, 139728093947840, 139728093942016, 139728093908544, 4279488, 140735012372672}}}}} __FUNCTION__ = "reply_received" #11 0x000000000045d853 in do_forward_reply (msg=0x7f14fb670c48, mode=0) at forward.c:777 new_buf = 0x0 dst = {send_sock = 0x0, to = {s = {sa_family = 0, sa_data = '\000' <repeats 13 times>}, sin = {sin_family = 0, sin_port = 0, sin_addr = {s_addr = 0}, sin_zero = "\000\000\000\000\000\000\000"}, sin6 = {sin6_family = 0, sin6_port = 0, sin6_flowinfo = 0, sin6_addr = {__in6_u = {__u6_addr8 = '\000' <repeats 15 times>, __u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0}, __u6_addr32 = {0, 0, 0, 0}}}, sin6_scope_id = 0}}, id = 0, proto = 0 '\000', send_flags = {f = 0 '\000', blst_imask = 0 '\000'}} new_len = 32532 r = 1 s = 0x370fb670c50 <Address 0x370fb670c50 out of bounds> len = 0 __FUNCTION__ = "do_forward_reply" #12 0x000000000045e114 in forward_reply (msg=0x7f14fb670c48) at forward.c:860 No locals. #13 0x00000000004a5903 in receive_msg (buf=0x924600 "SIP/2.0 183 Session Progress\r\nVia: SIP/2.0/UDP <IP_KAMAILIO>;branch=z9hG4bKca48.51c2c569361ea0fedd9c6c70c21b5eed.0;received=<IP_KAMAILIO>\r\nVia: SIP/2.0/UDP <IP_UAC>:5060;rport=5060;branch=z9hG4bK5f32d"..., len=880, rcv_info=0x7fff6c6b7d90) at receive.c:273 msg = 0x7f14fb670c48 ctx = {rec_lev = 8868984, run_flags = 0, last_retcode = 0, jmp_env = {{__jmpbuf = {0, 0, 0, 263853236176, 1, 0, 171719254808, 9586112}, __mask_was_saved = 1818983832, __saved_mask = {__val = {139728091862768, 12884901899, 139728091862768, 4279488, 140735012372672, 140735012371728, 5477982, 0, 139727728366976, 50195, 171356018048, 9586112, 140735012371856, 140735012371776, 5474817, 4279488}}}}} ret = 32532 inb = {s = 0x924600 "SIP/2.0 183 Session Progress\r\nVia: SIP/2.0/UDP <IP_KAMAILIO>;branch=z9hG4bKca48.51c2c569361ea0fedd9c6c70c21b5eed.0;received=<IP_KAMAILIO>\r\nVia: SIP/2.0/UDP <IP_UAC>:5060;rport=5060;branch=z9hG4bK5f32d"..., len = 880} __FUNCTION__ = "receive_msg" #14 0x000000000053c9c4 in udp_rcv_loop () at udp_server.c:536 len = 880 buf = "SIP/2.0 183 Session Progress\r\nVia: SIP/2.0/UDP <IP_KAMAILIO>;branch=z9hG4bKca48.51c2c569361ea0fedd9c6c70c21b5eed.0;received=<IP_KAMAILIO>\r\nVia: SIP/2.0/UDP <IP_UAC>:5060;rport=5060;branch=z9hG4bK5f32d"... tmp = 0x9245c0 "10.143.1.10" from = 0x7f14fb5add70 fromlen = 16 ri = {src_ip = {af = 2, len = 4, u = {addrl = {403182777, 139728091862768}, addr32 = {403182777, 0, 4215789296, 32532}, addr16 = {5305, 6152, 0, 0, 55024, 64327, 32532, 0}, addr = "\271\024\b\030\000\000\000\000\360\326G\373\024\177\000"}}, dst_ip = {af = 2, len = 4, u = {addrl = {67638457, 0}, addr32 = {67638457, 0, 0, 0}, addr16 = {5305, 1032, 0, 0, 0, 0, 0, 0}, addr = "\271\024\b\004", '\000' <repeats 11 times>}}, src_port = 5060, dst_port = 5060, proto_reserved1 = 0, proto_reserved2 = 0, src_su = {s = { sa_family = 2, sa_data = "\023Ĺ\024\b\030\000\000\000\000\000\000\000"}, sin = {sin_family = 2, sin_port = 50195, sin_addr = {s_addr = 403182777}, sin_zero = "\000\000\000\000\000\000\000"}, sin6 = {sin6_family = 2, sin6_port = 50195, sin6_flowinfo = 403182777, sin6_addr = {__in6_u = {__u6_addr8 = '\000' <repeats 15 times>, __u6_addr16 = {0, 0, 0, 0, 0, 0, 0, 0}, __u6_addr32 = {0, 0, 0, 0}}}, sin6_scope_id = 0}}, bind_address = 0x7f14fb47d588, proto = 1 '\001'} __FUNCTION__ = "udp_rcv_loop" #15 0x000000000046d447 in main_loop () at main.c:1617 i = 13 pid = 0 si = 0x7f14fb47d588 si_desc = "udp receiver child=13 sock=<IP_KAMAILIO>:5060\000\373\024\177\000\000\b$P\373\024\177\000\000\036\205^\000\000\000\000\000\000w^\000\000\000\000\000\000\244\303v\000\000\000\000\300LA\000\000\000\000\000\300\200kl\377\177", '\000' <repeats 19 times>, "\177kl\377\177\000\000\020\245K\000\000\000\000" nrprocs = 15 __FUNCTION__ = "main_loop" #16 0x000000000047054f in main (argc=7, argv=0x7fff6c6b80c8) at main.c:2545 cfg_stream = 0xf42010 c = -1 r = 0 tmp = 0x7fff6c6b8f70 "" tmp_len = 0 port = 0 proto = 0 options = 0x5e0a58 ":f:cm:M:dVIhEeb:l:L:n:vKrRDTN:W:w:t:u:g:P:G:SQ:O:a:A:" ret = -1 seed = 3572644655 rfd = 4 debug_save = 0 debug_flag = 0 dont_fork_cnt = 0 n_lst = 0x3d6f60fb88 p = 0x5caba0 "H\211l$\330L\211d$\340H\215-O\244*" __FUNCTION__ = "main" Let me know if you need further information. Regards, Igor.
http://www.linkedin.com/in/miconda