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.tld SIP/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: \"KLMNOPQRST\" <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: \"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.

 

 



-- 
Daniel-Constantin Mierla
http://twitter.com/#!/miconda - http://www.linkedin.com/in/miconda