[OpenSIPS-Users] segfault in codecs.c during call back

Bobby Smith bobby.smith at gmail.com
Mon Feb 14 17:29:33 CET 2011


We're currently seeing some crashing around the same area of code even after
applying the patch fix from trunk:

#0  0x00002b5a5bbfa0f6 in stream_process (msg=0x7a2f38, str1=0x0, str2=0x0,
re=0x7994e8, op=1, desc=3) at codecs.c:524
524 temp = payload->rtp_enc.s[payload->rtp_enc.len];
(gdb) list
519 match = 0;
520
521 if( description == DESC_REGEXP ||description == DESC_REGEXP_COMPLEMENT )
522 {
523 /* try to match a regexp */
524 temp = payload->rtp_enc.s[payload->rtp_enc.len];
525 payload->rtp_enc.s[payload->rtp_enc.len] = 0;
526 match = regexec( re, payload->rtp_enc.s, 1, &pmatch, 0) == 0;
527 payload->rtp_enc.s[payload->rtp_enc.len] = temp;
528 }
(gdb) info locals
payload = 0x79d030
lmp = 0x7a6c58
depl = <value optimized out>
match = 8022576
cur = 0x1 <Address 0x1 out of bounds>
buff = 0x7a0e98 "pstn=500"
temp = -88 '\250'
ret = 0
i = <value optimized out>
pmatch = {rm_so = 5, rm_eo = 0}
__FUNCTION__ = "stream_process"


#0  0x00002b5a5bbfa0f6 in stream_process (msg=0x7a2f38, str1=0x0, str2=0x0,
re=0x7994e8, op=1, desc=3) at codecs.c:524
        payload = 0x79d030
        lmp = 0x7a6c58
        depl = <value optimized out>
        match = 8022576
        cur = 0x1 <Address 0x1 out of bounds>
        buff = 0x7a0e98 "pstn=500"
        temp = -88 '\250'
        ret = 0
        i = <value optimized out>
        pmatch = {rm_so = 5, rm_eo = 0}
        __FUNCTION__ = "stream_process"
#1  do_for_all_streams (msg=0x7a2f38, str1=0x0, str2=0x0, re=0x7994e8, op=1,
desc=3) at codecs.c:408
        cur_cell = 0x7a6a30
        cur_session = 0x79b7f0
        rez = <value optimized out>
        __FUNCTION__ = "do_for_all_streams"
#2  0x00002b5a5bbfa785 in codec_delete_except_re (msg=0x0, str1=0x7a6a30 "")
at codecs.c:748
No locals.
#3  0x000000000040e978 in do_action (a=0x799828, msg=0x7a2f38) at
action.c:1045
        val_s = {s = 0x6a <Address 0x6a out of bounds>, len = 331625791}
        aux = {s = 0x521b8f "", len = 5381007}
        ret = <value optimized out>
        v = <value optimized out>
        to = <value optimized out>
        p = <value optimized out>
        tmp = <value optimized out>
        new_uri = <value optimized out>
        end = <value optimized out>
        crt = <value optimized out>
        len = <value optimized out>

(gdb) print payload
$4 = (sdp_payload_attr_t *) 0x79d030
(gdb) print *payload
$5 = {next = 0x79a9e8, payload_num = 1, rtp_payload = {s = 0x7592d8 "8 18
101\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8 P\r\na=nortpproxy:yes\r\n", len =
1}, rtp_enc = {s = 0x759303 "P\r\na=nortpproxy:yes\r\n", len = -7705347},
  rtp_clock = {s = 0x1 <Address 0x1 out of bounds>, len = 7705347},
rtp_params = {s = 0x0, len = 0}, sendrecv_mode = {s = 0x0, len = 0}, ptime =
{s = 0x0, len = 0}, fmtp_string = {s = 0x0, len = 0}}
(gdb) print *payload->rtp_enc
Structure has no component named operator*.
(gdb) print payload->rtp_enc
$6 = {s = 0x759303 "P\r\na=nortpproxy:yes\r\n", len = -7705347}
(gdb) print payload->rtp_enc.s
$7 = 0x759303 "P\r\na=nortpproxy:yes\r\n"
(gdb) print payload->rtp_enc.s
$8 = 0x759303 "P\r\na=nortpproxy:yes\r\n"
(gdb) print rtp_enc.len
No symbol "rtp_enc" in current context.
(gdb) print payload->rtp_enc
$9 = {s = 0x759303 "P\r\na=nortpproxy:yes\r\n", len = -7705347}
(gdb) print payload->rtp_enc.len
$10 = -7705347
(gdb)


I will comment that part of the SDP is truncated, and it looks like the
nortpproxy:yes string is appended after that:

(gdb) print val_s.s
$12 = 0x759004 "973f4230367e88d0c06ccd6f70e8ed72 at 10.2.1.43\r\nCSeq: 32621
INVITE\r\nFrom: \"WASHINGTON   DC\"
<sip:1234567890 at 10.2.1.43>;tag=3383745851297549218022\r\nTo:
<sip:18042181197 at external.com>\r\nVia: SIP/2.0/UDP
4.2.2.3;branch=z9hG4bKf86.d04be483.0\r\nVia: SIP/2.0/UDP
10.2.1.43:5060;branch=z9hG4bK1735452086568519500666701297549218024\r\nMax-Forwards:
68\r\nContact: \"Foo\"
<sip:1234567890 at 10.2.1.43:5060>;transport=udp\r\nContent-Type:
application/sdp\r\nAllow: INVITE, OPTIONS, BYE, CANCEL, ACK, REFER, NOTIFY,
INFO, PRACK\r\nUser-Agent: Foo/6.2.0.30\r\nContent-Length:
207\r\n\r\nv=0\r\no=Foo 1297549218020 1297549218020 IN IP4
10.2.1.43\r\ns=SIP Media Capabilities\r\nc=IN IP4 4.2.2.1\r\nt=0
0\r\nm=audio 25560 RTP/AVP 0 8 18 101\r\na=rtpmap:0 PCMU/8000\r\na=rtpmap:8
P\r\na=nortpproxy:yes\r\n"

On Tue, Dec 21, 2010 at 10:14 PM, Bobby Smith <bobby.smith at gmail.com> wrote:

> Hi Bogdan,
>
> We currently have this patch installed and have been consistent for more
> than a couple of days now, so we're looking good.
>
> Thanks again for all your help.
>
> Regards,
> Bobby Smith
>
>
> On Tue, Dec 21, 2010 at 8:33 AM, Bogdan-Andrei Iancu <
> bogdan at voice-system.ro> wrote:
>
>> Hi Bobby,
>>
>> Could you confirm that the latest fixes on trunk (for codec ops) solved
>> your problem ?
>>
>>
>> Regards,
>> Bogdan
>>
>> Bobby Smith wrote:
>>
>>> The crash has happened again twice after this posting, in exactly the
>>> same place. Here's the bt of the latest core.
>>>
>>> I can make two observations:
>>>
>>> a) In the seven times we've experienced it so far, it's happened on
>>> either a NOTIFY (with message summary) or an OPTIONS (with no body) that
>>> hits the failure_route[softswitch] in the routing script here:
>>>
>>> http://pastebin.com/RmVVW8N7
>>>
>>> b) The text ops call we're using that seems to cause this is the
>>> codec_delete_except_re() function -- which we invoke twice, once initially,
>>> and once again in the failure route as it recurses back through the main
>>> route setup.
>>>
>>>  1.
>>>      failure_route[softswitch] {
>>>  2.
>>>
>>>      xlog("failure route[$ci] -- softswitch -- reached -- load
>>>      balancing $rm to a different destination, current destination is
>>>      $dd for $ci");
>>>  3.
>>>      if(t_was_cancelled()) {
>>>  4.
>>>      exit;
>>>  5.
>>>      }
>>>  6.
>>>  7.
>>>
>>>      if (t_check_status("[4-5][0-9][0-9]")) {
>>>  8.
>>>      lb_disable();
>>>  9.
>>>
>>>      xlog("failure route[$ci] -- load balancer picked new destination
>>>      for $rm, destination is $dd");
>>>  10.
>>>      route(main);
>>>  11.
>>>      exit;
>>>  12.
>>>      }
>>>  13.
>>>      }
>>>
>>>        1.
>>>        2.
>>>            route[filter_codecs] {
>>>        3.
>>>
>>>            if(has_body("application/sdp"))
>>>        4.
>>>            {
>>>        5.
>>>
>>>            codec_delete_except_re("PCMA|PCMU|telephone-event");
>>>        6.
>>>            }
>>>        7.
>>>
>>>            }
>>>
>>>
>>>
>>> #0 backup () at codecs.c:104
>>> 104 int n = old->len;
>>> (gdb) bt full
>>> #0 backup () at codecs.c:104
>>> l = 0x7a1df0
>>> old = 0x0
>>> n = <value optimized out>
>>> len = 1
>>> i = 0
>>> __FUNCTION__ = "backup"
>>> #1 0x00002aeb40aea0e1 in pre_route_callback (msg=0x2aeb406c5140,
>>> param=0x7a2c80) at codecs.c:169
>>> No locals.
>>> #2 0x000000000046d9be in exec_post_cb (msg=0x2aeb406c5140) at
>>> script_cb.c:198
>>> No locals.
>>> #3 exec_pre_route_cb (msg=0x2aeb406c5140) at script_cb.c:231
>>> No locals.
>>> #4 0x0000000000412153 in run_top_route (a=0x798070, msg=0x2aeb406c5140)
>>> at action.c:181
>>> bk_action_flags = 0
>>> bk_rec_lev = 0
>>> #5 0x00002aeb404b178f in run_failure_handlers (Trans=0x2aeb4250b070,
>>> new_code=<value optimized out>, branch=<value optimized out>,
>>> should_store=0x7fff50e2f7b8, should_relay=0x7fff50e2f7bc,
>>> cancel_bitmap=<value optimized out>,
>>> reply=0x79f740) at t_reply.c:613
>>> faked_req = {id = 1024, first_line = {type = 1, len = 53, u = {request =
>>> {method = {
>>> s = 0x2aeb4252f5a8 "OPTIONS sip:100 at internal-sip.mysipserver.com<mailto:
>>> sip%3A100 at internal-sip.mysipserver.com> SIP/2.0\r\nRecord-Route:
>>> <sip:4.2.2.245;lr=on;ftag=6364386232656635313363340131333138353238393233>\r\nVia:
>>> SIP/2.0/UDP 4.2.2.245;branch=z9hG4bK4721.cf"..., len = 7}, uri = {
>>> s = 0x2aeb4252f5b0 "sip:100 at internal-sip.mysipserver.com <mailto:
>>> sip%3A100 at internal-sip.mysipserver.com> SIP/2.0\r\nRecord-Route:
>>> <sip:4.2.2.245;lr=on;ftag=6364386232656635313363340131333138353238393233>\r\nVia:
>>> SIP/2.0/UDP 4.2.2.245;branch=z9hG4bK4721.cf01ae25.0"..., len = 35}, version
>>> = {
>>> s = 0x2aeb4252f5d4 "SIP/2.0\r\nRecord-Route:
>>> <sip:4.2.2.245;lr=on;ftag=6364386232656635313363340131333138353238393233>\r\nVia:
>>> SIP/2.0/UDP 4.2.2.245;branch=z9hG4bK4721.cf01ae25.0\r\nVia: SIP/2.0/UDP
>>> 217.73.175.1:5060 <http://217.73.175.1:5060>"..., len = 7}, method_value
>>> = 32}, reply = {version = {
>>> s = 0x2aeb4252f5a8 "OPTIONS sip:100 at internal-sip.mysipserver.com<mailto:
>>> sip%3A100 at internal-sip.mysipserver.com> SIP/2.0\r\nRecord-Route:
>>> <sip:4.2.2.245;lr=on;ftag=6364386232656635313363340131333138353238393233>\r\nVia:
>>> SIP/2.0/UDP 4.2.2.245;branch=z9hG4bK4721.cf"..., len = 7}, status = {
>>> s = 0x2aeb4252f5b0 "sip:100 at internal-sip.mysipserver.com <mailto:
>>> sip%3A100 at internal-sip.mysipserver.com> SIP/2.0\r\nRecord-Route:
>>> <sip:4.2.2.245;lr=on;ftag=6364386232656635313363340131333138353238393233>\r\nVia:
>>> SIP/2.0/UDP 4.2.2.245;branch=z9hG4bK4721.cf01ae25.0"..., len = 35}, reason =
>>> {
>>> s = 0x2aeb4252f5d4 "SIP/2.0\r\nRecord-Route:
>>> <sip:4.2.2.245;lr=on;ftag=6364386232656635313363340131333138353238393233>\r\nVia:
>>> SIP/2.0/UDP 4.2.2.245;branch=z9hG4bK4721.cf01ae25.0\r\nVia: SIP/2.0/UDP
>>> 217.73.175.1:5060 <http://217.73.175.1:5060>"..., len = 7}, statuscode =
>>> 32}}}, via1 = 0x2aeb4252f8a0, via2 = 0x2aeb4252fa18, headers =
>>> 0x2aeb4252f810, last_header = 0x2aeb4252ffd8, parsed_flag =
>>> 18446744073709551615, h_via1 = 0x2aeb4252f858, h_via2 = 0x2aeb4252f9d0,
>>>
>>> callid = 0x2aeb4252ff90, to = 0x2aeb4252fce8, cseq = 0x2aeb4252ff18, from
>>> = 0x2aeb4252fc10, contact = 0x2aeb4252fed0, maxforwards = 0x2aeb4252ffd8,
>>> route = 0x0, record_route = 0x2aeb4252f810, path = 0x0, content_type = 0x0,
>>> content_length = 0x2aeb4252fbc8, authorization = 0x0, expires = 0x0,
>>> proxy_auth = 0x0, supported = 0x0, proxy_require = 0x0, unsupported = 0x0,
>>> allow = 0x0, event = 0x0, accept = 0x2aeb4252fc58, accept_language = 0x0,
>>> organization = 0x0, priority = 0x0, subject = 0x0, user_agent =
>>> 0x2aeb4252fca0, content_disposition = 0x0, accept_disposition = 0x0,
>>> diversion = 0x0, rpid = 0x0, refer_to = 0x0, session_expires = 0x0, min_se =
>>> 0x0, ppi = 0x0,
>>> pai = 0x0, privacy = 0x0, sdp = 0x0, multi = 0x0, eoh = 0x2aeb4252f80a
>>> "\r\n", unparsed = 0x2aeb4252f80a "\r\n", rcv = {src_ip = {af = 2, len = 4,
>>> u = {addrl = {4113468365, 6}, addr32 = {4113468365, 0, 6, 0}, addr16 =
>>> {35789,
>>> 62766, 0, 0, 6, 0, 0, 0}, addr =
>>> "͋.\365\000\000\000\000\006\000\000\000\000\000\000"}}, dst_ip = {af = 2,
>>> len = 4, u = {addrl = {2519632845, 0}, addr32 = {2519632845, 0, 0, 0},
>>> addr16 = {35789, 38446, 0, 0, 0, 0, 0,
>>> 0}, addr = "͋.\226", '\000' <repeats 11 times>}}, src_port = 5060,
>>> dst_port = 5060, proto = 1, proto_reserved1 = 0, proto_reserved2 = 0, src_su
>>> = {s = {sa_family = 2,
>>> sa_data = "\023\304͋.\365\000\000\000\000\000\000\000"}, sin =
>>> {sin_family = 2, sin_port = 50195, sin_addr = {s_addr = 4113468365},
>>> sin_zero = "\000\000\000\000\000\000\000"}, sin6 = {sin6_family = 2,
>>> sin6_port = 50195, sin6_flowinfo = 4113468365, 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 = 0x799820},
>>>  buf = 0x2aeb4252f5a8 "OPTIONS sip:100 at internal-sip.mysipserver.com<mailto:
>>> sip%3A100 at internal-sip.mysipserver.com> SIP/2.0\r\nRecord-Route:
>>> <sip:4.2.2.245;lr=on;ftag=6364386232656635313363340131333138353238393233>\r\nVia:
>>> SIP/2.0/UDP 4.2.2.245;branch=z9hG4bK4721.cf"..., len = 612, new_uri = {s =
>>> 0x7a1930 "sip:100 at internal-sip.mysipserver.com <mailto:
>>> sip%3A100 at internal-sip.mysipserver.com>", len = 35}, dst_uri = {s = 0x0,
>>> len = 0}, parsed_uri_ok = 0, parsed_uri = {user = {
>>> s = 0x2aeb4252f5b4 "100 at internal-sip.mysipserver.com <mailto:
>>> 100 at internal-sip.mysipserver.com> SIP/2.0\r\nRecord-Route:
>>> <sip:4.2.2.245;lr=on;ftag=6364386232656635313363340131333138353238393233>\r\nVia:
>>> SIP/2.0/UDP 4.2.2.245;branch=z9hG4bK4721.cf01ae25.0\r\nVi"..., len = 3},
>>> passwd = {s = 0x0, len = 0}, host = {
>>> s = 0x2aeb4252f5b8 "internal-sip.mysipserver.com <
>>> http://internal-sip.mysipserver.com> SIP/2.0\r\nRecord-Route:
>>> <sip:4.2.2.245;lr=on;ftag=6364386232656635313363340131333138353238393233>\r\nVia:
>>> SIP/2.0/UDP 4.2.2.245;branch=z9hG4bK4721.cf01ae25.0\r\nVia: S"..., len =
>>> 27}, port = {s = 0x0, len = 0}, params = {s = 0x0, len = 0}, headers = {s =
>>> 0x0, len = 0}, port_no = 0, proto = 0, type = SIP_URI_T, transport = {s =
>>> 0x0, len = 0}, ttl = {s = 0x0, len = 0}, user_param = {s = 0x0,
>>>
>>> len = 0}, maddr = {s = 0x0, len = 0}, method = {s = 0x0, len = 0}, lr =
>>> {s = 0x0, len = 0}, r2 = {s = 0x0, len = 0}, transport_val = {s = 0x0, len =
>>> 0}, ttl_val = {s = 0x0, len = 0}, user_param_val = {s = 0x0, len = 0},
>>> maddr_val = {s = 0x0, len = 0}, method_val = {s = 0x0, len = 0}, lr_val =
>>> {s = 0x0, len = 0}, r2_val = {s = 0x0, len = 0}}, parsed_orig_ruri_ok = 0,
>>> parsed_orig_ruri = {user = {s = 0x0, len = 0}, passwd = {s = 0x0,
>>> len = 0}, host = {s = 0x0, len = 0}, port = {s = 0x0, len = 0}, params =
>>> {s = 0x0, len = 0}, headers = {s = 0x0, len = 0}, port_no = 0, proto = 0,
>>> type = ERROR_URI_T, transport = {s = 0x0, len = 0}, ttl = {s = 0x0,
>>> len = 0}, user_param = {s = 0x0, len = 0}, maddr = {s = 0x0, len = 0},
>>> method = {s = 0x0, len = 0}, lr = {s = 0x0, len = 0}, r2 = {s = 0x0, len =
>>> 0}, transport_val = {s = 0x0, len = 0}, ttl_val = {s = 0x0, len = 0},
>>> user_param_val = {s = 0x0, len = 0}, maddr_val = {s = 0x0, len = 0},
>>> method_val = {s = 0x0, len = 0}, lr_val = {s = 0x0, len = 0}, r2_val = {s =
>>> 0x0, len = 0}}, add_rm = 0x0, body_lumps = 0x0, reply_lump = 0x0,
>>> add_to_branch_s = '\000' <repeats 57 times>, add_to_branch_len = 0,
>>> hash_index = 4724, flags = 0, msg_flags = 32, set_global_address = {s = 0x0,
>>> len = 0}, set_global_port = {s = 0x0, len = 0}, force_send_socket = 0x0,
>>> path_vec = {s = 0x0, len = 0}, msg_cb = 0x0}
>>> __FUNCTION__ = "run_failure_handlers"
>>> #6 t_should_relay_response (Trans=0x2aeb4250b070, new_code=<value
>>> optimized out>, branch=<value optimized out>, should_store=0x7fff50e2f7b8,
>>> should_relay=0x7fff50e2f7bc, cancel_bitmap=<value optimized out>,
>>> reply=0x79f740)
>>> at t_reply.c:911
>>> branch_cnt = 1
>>> picked_code = <value optimized out>
>>> inv_through = <value optimized out>
>>> do_cancel = 0
>>> __FUNCTION__ = "t_should_relay_response"
>>> #7 0x00002aeb404b33a2 in relay_reply (t=0x7a1e00, p_msg=0x79f740,
>>> branch=1357051072, msg_status=404, cancel_bitmap=0x7a1df0) at t_reply.c:1125
>>> relay = <value optimized out>
>>> save_clone = <value optimized out>
>>> buf = <value optimized out>
>>> res_len = 0
>>> relayed_code = 404
>>> relayed_msg = <value optimized out>
>>> bm = {to_tag_val = {s = 0x7fff50e2f89c "", len = -1}}
>>> totag_retr = <value optimized out>
>>> reply_status = 32767
>>> uas_rb = <value optimized out>
>>> cb_s = {s = 0x79f740 "\377\003", len = 0}
>>> text = {s = 0x6e0000000b <Address 0x6e0000000b out of bounds>, len = 528}
>>> __FUNCTION__ = "relay_reply"
>>> #8 0x00002aeb404b4990 in reply_received (p_msg=0x79f740) at
>>> t_reply.c:1494
>>> msg_status = 404
>>> branch = 1357051072
>>> reply_status = <value optimized out>
>>> timer = <value optimized out>
>>> cancel_bitmap = 0
>>> uac = 0x2aeb4250b248
>>> t = 0x2aeb4250b070
>>> backup_list = 0x0
>>> __FUNCTION__ = "reply_received"
>>> #9 0x0000000000421ef4 in forward_reply (msg=0x79f740) at forward.c:561
>>> new_buf = <value optimized out>
>>> to = <value optimized out>
>>> new_len = <value optimized out>
>>> mod = 0x7849f8
>>> proto = <value optimized out>
>>> id = <value optimized out>
>>> send_sock = <value optimized out>
>>> len = <value optimized out>
>>> __FUNCTION__ = "forward_reply"
>>> #10 0x00000000004570c2 in receive_msg (
>>> buf=0x758f40 "SIP/2.0 404 Not Found\r\nVia: SIP/2.0/UDP
>>> 4.2.2.150;branch=z9hG4bK4721.ad8f7017.0;rport=5060\r\nVia: SIP/2.0/UDP
>>> 4.2.2.245;branch=z9hG4bK4721.cf01ae25.0\r\nVia: SIP/2.0/UDP
>>> 217.73.175.1:5060;recei"...,
>>> len=528, rcv_info=0x7fff50e2f980) at receive.c:200
>>> msg = 0x7a1e00
>>> __FUNCTION__ = "receive_msg"
>>> #11 0x000000000049be14 in udp_rcv_loop () at udp_server.c:492
>>> len = 528
>>> tmp = 0x13c4 <Address 0x13c4 out of bounds>
>>> from = <value optimized out>
>>> fromlen = 16
>>> ri = {src_ip = {af = 2, len = 4, u = {addrl = {3526265805, 8}, addr32 =
>>> {3526265805, 0, 8, 0}, addr16 = {35789, 53806, 0, 0, 8, 0, 0, 0}, addr =
>>> "͋.\322\000\000\000\000\b\000\000\000\000\000\000"}}, dst_ip = {af = 2, len
>>> = 4,
>>> u = {addrl = {2519632845, 0}, addr32 = {2519632845, 0, 0, 0}, addr16 =
>>> {35789, 38446, 0, 0, 0, 0, 0, 0}, addr = "͋.\226", '\000' <repeats 11
>>> times>}}, src_port = 5060, dst_port = 5060, proto = 1, proto_reserved1 = 0,
>>> proto_reserved2 = 0, src_su = {s = {sa_family = 2, sa_data =
>>> "\023\304͋.\322\000\000\000\000\000\000\000"}, sin = {sin_family = 2,
>>> sin_port = 50195, sin_addr = {s_addr = 3526265805},
>>> sin_zero = "\000\000\000\000\000\000\000"}, sin6 = {sin6_family = 2,
>>> sin6_port = 50195, sin6_flowinfo = 3526265805, 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 = 0x799820}
>>> p = 0x0
>>> buf = "SIP/2.0 404 Not Found\r\nVia: SIP/2.0/UDP
>>> 4.2.2.150;branch=z9hG4bK4721.ad8f7017.0;rport=5060\r\nVia: SIP/2.0/UDP
>>> 4.2.2.245;branch=z9hG4bK4721.cf01ae25.0\r\nVia: SIP/2.0/UDP
>>> 217.73.175.1:5060;recei"...
>>> __FUNCTION__ = "udp_rcv_loop"
>>> #12 0x000000000042a65d in main_loop (argc=3, argv=<value optimized out>)
>>> at main.c:818
>>> i = 3
>>> pid = <value optimized out>
>>> si = 0x0
>>> startup_done = 0x0
>>> chd_rank = 8
>>> __FUNCTION__ = "main_loop"
>>> #13 main (argc=3, argv=<value optimized out>) at main.c:1388
>>> cfg_log_stderr = <value optimized out>
>>> cfg_stream = 0xbc9e010
>>> c = <value optimized out>
>>> r = <value optimized out>
>>> tmp = 0x4fc457 "H\215\005\242\333#"
>>> tmp_len = <value optimized out>
>>> port = <value optimized out>
>>> proto = <value optimized out>
>>> ret = <value optimized out>
>>> seed = 2106089936
>>> rfd = <value optimized out>
>>> __FUNCTION__ = "main"
>>>
>>>
>>> n Tue, Dec 7, 2010 at 10:52 AM, Bobby Smith <bobby.smith at gmail.com<mailto:
>>> bobby.smith at gmail.com>> wrote:
>>>
>>>    Hi Bogdan,
>>>
>>>    http://pastebin.com/RmVVW8N7
>>>
>>>    If you look at calls to route(filter_codecs).
>>>
>>>    Also, the route(main) gets called on failure when a 4XX/5XX gets
>>>    returned from our softswitch for load balancing purposes. This
>>>    happens because the rtp proxies are on different hosts and we must
>>>    attempt to reproxy the call.
>>>
>>>    If there is a cleaner way to do this, I'd appreciate it, but for
>>>    the most part (except for the segfault) the above seems to work.
>>>
>>>    Regards,
>>>    Bobby Smith
>>>
>>>    On Tue, Dec 7, 2010 at 6:57 AM, Bogdan-Andrei Iancu
>>>    <bogdan at voice-system.ro <mailto:bogdan at voice-system.ro>> wrote:
>>>
>>>        Hi Bobby,
>>>
>>>        in what kind of routes do you use codec related ops ?
>>>
>>>        Regards,
>>>        Bogdan
>>>
>>>        Bobby Smith wrote:
>>>
>>>            On revision 7081 (opensips trunk), we've run into a couple
>>>            of situations where cores were generated from a segfault.
>>>            They both look the same, contents attached.
>>>
>>>
>>>            #0 backup () at codecs.c:104
>>>            104 int n = old->len;
>>>            (gdb) bt full
>>>            #0 backup () at codecs.c:104
>>>            l = 0x79d8b0
>>>            old = 0x0
>>>            n = <value optimized out>
>>>            len = 1
>>>            i = 0
>>>            __FUNCTION__ = "backup"
>>>            #1 0x00002b0d01fb00e1 in pre_route_callback
>>>            (msg=0x2b0d01b8b140, param=0x79caf0) at codecs.c:169
>>>            No locals.
>>>            #2 0x000000000046d9be in exec_post_cb (msg=0x2b0d01b8b140)
>>>            at script_cb.c:198
>>>            No locals.
>>>            #3 exec_pre_route_cb (msg=0x2b0d01b8b140) at script_cb.c:231
>>>            No locals.
>>>            #4 0x0000000000412153 in run_top_route (a=0x794e70,
>>>            msg=0x2b0d01b8b140) at action.c:181
>>>            bk_action_flags = 0
>>>            bk_rec_lev = 0
>>>            #5 0x00002b0d0197777f in run_failure_handlers
>>>            (Trans=0x2b0d03954950, new_code=<value optimized out>,
>>>            branch=<value optimized out>, should_store=0x7fff00703b58,
>>>            should_relay=0x7fff00703b5c, cancel_bitmap=<value
>>>            optimized out>,
>>>            reply=0x796cc0) at t_reply.c:613
>>>            faked_req = {id = 6, first_line = {type = 1, len = 53, u =
>>>            {request = {method = {
>>>            s = 0x2b0d0395bb00 "OPTIONS
>>>            sip:100 at internal-sip.mycompany.com
>>>            <mailto:sip%3A100 at internal-sip.mycompany.com>
>>>            <mailto:sip%3A100 at internal-sip.mycompany.com
>>>            <mailto:sip%253A100 at internal-sip.mycompany.com>>
>>>
>>>            SIP/2.0\r\nRecord-Route:
>>>
>>>  <sip:4.2.46.245;lr=on;ftag=6364386232656635313363340133363632373934353030>\r\nVia:
>>>            SIP/2.0/UDP 4.2.46.245;branch=z9hG4bK8702.83"..., len =
>>>            7}, uri = {
>>>            s = 0x2b0d0395bb08 "sip:100 at internal-sip.mycompany.com
>>>            <mailto:sip%3A100 at internal-sip.mycompany.com>
>>>            <mailto:sip%3A100 at internal-sip.mycompany.com
>>>            <mailto:sip%253A100 at internal-sip.mycompany.com>>
>>>
>>>            SIP/2.0\r\nRecord-Route:
>>>
>>>  <sip:4.2.46.245;lr=on;ftag=6364386232656635313363340133363632373934353030>\r\nVia:
>>>            SIP/2.0/UDP 4.2.46.245;branch=z9hG4bK8702.83cfa2a.0\r"...,
>>>            len = 35}, version = {
>>>            s = 0x2b0d0395bb2c "SIP/2.0\r\nRecord-Route:
>>>
>>>  <sip:4.2.46.245;lr=on;ftag=6364386232656635313363340133363632373934353030>\r\nVia:
>>>            SIP/2.0/UDP
>>>            4.2.46.245;branch=z9hG4bK8702.83cfa2a.0\r\nVia:
>>>            SIP/2.0/UDP 109.104.88.29:5064 <http://109.104.88.29:5064>
>>>            <http://109.104.88.29:5064>"..., len = 7}, method_value =
>>>            32}, reply = {version = {
>>>            s = 0x2b0d0395bb00 "OPTIONS
>>>            sip:100 at internal-sip.mycompany.com
>>>            <mailto:sip%3A100 at internal-sip.mycompany.com>
>>>            <mailto:sip%3A100 at internal-sip.mycompany.com
>>>            <mailto:sip%253A100 at internal-sip.mycompany.com>>
>>>
>>>            SIP/2.0\r\nRecord-Route:
>>>
>>>  <sip:4.2.46.245;lr=on;ftag=6364386232656635313363340133363632373934353030>\r\nVia:
>>>            SIP/2.0/UDP 4.2.46.245;branch=z9hG4bK8702.83"..., len =
>>>            7}, status = {
>>>            s = 0x2b0d0395bb08 "sip:100 at internal-sip.mycompany.com
>>>            <mailto:sip%3A100 at internal-sip.mycompany.com>
>>>            <mailto:sip%3A100 at internal-sip.mycompany.com
>>>            <mailto:sip%253A100 at internal-sip.mycompany.com>>
>>>
>>>            SIP/2.0\r\nRecord-Route:
>>>
>>>  <sip:4.2.46.245;lr=on;ftag=6364386232656635313363340133363632373934353030>\r\nVia:
>>>            SIP/2.0/UDP 4.2.46.245;branch=z9hG4bK8702.83cfa2a.0\r"...,
>>>            len = 35}, reason = {
>>>            s = 0x2b0d0395bb2c "SIP/2.0\r\nRecord-Route:
>>>
>>>  <sip:4.2.46.245;lr=on;ftag=6364386232656635313363340133363632373934353030>\r\nVia:
>>>            SIP/2.0/UDP
>>>            4.2.46.245;branch=z9hG4bK8702.83cfa2a.0\r\nVia:
>>>            SIP/2.0/UDP 109.104.88.29:5064 <http://109.104.88.29:5064>
>>>            <http://109.104.88.29:5064>"..., len = 7}, statuscode =
>>>            32}}}, via1 = 0x2b0d0395bdf8, via2 = 0x2b0d0395bf70,
>>>            headers = 0x2b0d0395bd68, last_header = 0x2b0d0395c530,
>>>            parsed_flag = 18446744073709551615, h_via1 =
>>>            0x2b0d0395bdb0, h_via2 = 0x2b0d0395bf28,
>>>
>>>            callid = 0x2b0d0395c4e8, to = 0x2b0d0395c240, cseq =
>>>            0x2b0d0395c470, from = 0x2b0d0395c168, contact =
>>>            0x2b0d0395c428, maxforwards = 0x2b0d0395c530, route = 0x0,
>>>            record_route = 0x2b0d0395bd68, path = 0x0, content_type = 0x0,
>>>            content_length = 0x2b0d0395c120, authorization = 0x0,
>>>            expires = 0x0, proxy_auth = 0x0, supported = 0x0,
>>>            proxy_require = 0x0, unsupported = 0x0, allow = 0x0, event
>>>            = 0x0, accept = 0x2b0d0395c1b0, accept_language = 0x0,
>>>            organization = 0x0, priority = 0x0, subject = 0x0,
>>>            user_agent = 0x2b0d0395c1f8, content_disposition = 0x0,
>>>            accept_disposition = 0x0, diversion = 0x0, rpid = 0x0,
>>>            refer_to = 0x0, session_expires = 0x0, min_se = 0x0, ppi =
>>>            0x0,
>>>            pai = 0x0, privacy = 0x0, sdp = 0x0, multi = 0x0, eoh =
>>>            0x2b0d0395bd63 "\r\n", unparsed = 0x2b0d0395bd63 "\r\n",
>>>            rcv = {src_ip = {af = 2, len = 4, u = {addrl =
>>>            {4113468365, 7}, addr32 = {4113468365, 0, 7, 0}, addr16 =
>>>            {35789,
>>>            62766, 0, 0, 7, 0, 0, 0}, addr =
>>>            "Í.\365\000\000\000\000\a\000\000\000\000\000\000"}},
>>>            dst_ip = {af = 2, len = 4, u = {addrl = {2519632845, 0},
>>>            addr32 = {2519632845, 0, 0, 0}, addr16 = {35789, 38446, 0,
>>>            0, 0, 0, 0,
>>>            0}, addr = "Í.\226", '\000' <repeats 11 times>}}, src_port
>>>            = 5060, dst_port = 5060, proto = 1, proto_reserved1 = 0,
>>>            proto_reserved2 = 0, src_su = {s = {sa_family = 2,
>>>            sa_data = "\023\304Í.\365\000\000\000\000\000\000\000"},
>>>            sin = {sin_family = 2, sin_port = 50195, sin_addr =
>>>            {s_addr = 4113468365}, sin_zero =
>>>            "\000\000\000\000\000\000\000"}, sin6 = {sin6_family = 2,
>>>            sin6_port = 50195, sin6_flowinfo = 4113468365, 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 = 0x795ca0},
>>>            buf = 0x2b0d0395bb00 "OPTIONS
>>>            sip:100 at internal-sip.mycompany.com
>>>            <mailto:sip%3A100 at internal-sip.mycompany.com>
>>>            <mailto:sip%3A100 at internal-sip.mycompany.com
>>>            <mailto:sip%253A100 at internal-sip.mycompany.com>>
>>>
>>>            SIP/2.0\r\nRecord-Route:
>>>
>>>  <sip:4.2.46.245;lr=on;ftag=6364386232656635313363340133363632373934353030>\r\nVia:
>>>            SIP/2.0/UDP 4.2.46.245;branch=z9hG4bK8702.83"..., len =
>>>            613, new_uri = {s = 0x79c4f0
>>>            "sip:100 at internal-sip.mycompany.com
>>>            <mailto:sip%3A100 at internal-sip.mycompany.com>
>>>            <mailto:sip%3A100 at internal-sip.mycompany.com
>>>            <mailto:sip%253A100 at internal-sip.mycompany.com>>", len =
>>>
>>>            35}, dst_uri = {s = 0x0, len = 0}, parsed_uri_ok = 0,
>>>            parsed_uri = {user = {
>>>            s = 0x2b0d0395bb0c "100 at internal-sip.mycompany.com
>>>            <mailto:100 at internal-sip.mycompany.com>
>>>            <mailto:100 at internal-sip.mycompany.com
>>>            <mailto:100 at internal-sip.mycompany.com>>
>>>            SIP/2.0\r\nRecord-Route:
>>>
>>>  <sip:4.2.46.245;lr=on;ftag=6364386232656635313363340133363632373934353030>\r\nVia:
>>>            SIP/2.0/UDP
>>>            4.2.46.245;branch=z9hG4bK8702.83cfa2a.0\r\nVia"..., len =
>>>            3}, passwd = {s = 0x0, len = 0}, host = {
>>>            s = 0x2b0d0395bb10 "internal-sip.mycompany.com
>>>            <http://internal-sip.mycompany.com>
>>>            <http://internal-sip.mycompany.com>
>>>            SIP/2.0\r\nRecord-Route:
>>>
>>>  <sip:4.2.46.245;lr=on;ftag=6364386232656635313363340133363632373934353030>\r\nVia:
>>>            SIP/2.0/UDP
>>>            4.2.46.245;branch=z9hG4bK8702.83cfa2a.0\r\nVia: SI"...,
>>>            len = 27}, port = {s = 0x0, len = 0}, params = {s = 0x0,
>>>            len = 0}, headers = {s = 0x0, len = 0}, port_no = 0, proto
>>>            = 0, type = SIP_URI_T, transport = {s = 0x0, len = 0}, ttl
>>>            = {s = 0x0, len = 0}, user_param = {s = 0x0,
>>>
>>>            len = 0}, maddr = {s = 0x0, len = 0}, method = {s = 0x0,
>>>            len = 0}, lr = {s = 0x0, len = 0}, r2 = {s = 0x0, len =
>>>            0}, transport_val = {s = 0x0, len = 0}, ttl_val = {s =
>>>            0x0, len = 0}, user_param_val = {s = 0x0, len = 0},
>>>            maddr_val = {s = 0x0, len = 0}, method_val = {s = 0x0, len
>>>            = 0}, lr_val = {s = 0x0, len = 0}, r2_val = {s = 0x0, len
>>>            = 0}}, parsed_orig_ruri_ok = 0, parsed_orig_ruri = {user =
>>>            {s = 0x0, len = 0}, passwd = {s = 0x0,
>>>            len = 0}, host = {s = 0x0, len = 0}, port = {s = 0x0, len
>>>            = 0}, params = {s = 0x0, len = 0}, headers = {s = 0x0, len
>>>            = 0}, port_no = 0, proto = 0, type = ERROR_URI_T,
>>>            transport = {s = 0x0, len = 0}, ttl = {s = 0x0,
>>>            len = 0}, user_param = {s = 0x0, len = 0}, maddr = {s =
>>>            0x0, len = 0}, method = {s = 0x0, len = 0}, lr = {s = 0x0,
>>>            len = 0}, r2 = {s = 0x0, len = 0}, transport_val = {s =
>>>            0x0, len = 0}, ttl_val = {s = 0x0, len = 0},
>>>            user_param_val = {s = 0x0, len = 0}, maddr_val = {s = 0x0,
>>>            len = 0}, method_val = {s = 0x0, len = 0}, lr_val = {s =
>>>            0x0, len = 0}, r2_val = {s = 0x0, len = 0}}, add_rm = 0x0,
>>>            body_lumps = 0x0, reply_lump = 0x0,
>>>            add_to_branch_s = '\000' <repeats 57 times>,
>>>            add_to_branch_len = 0, hash_index = 8312, flags = 0,
>>>            msg_flags = 32, set_global_address = {s = 0x0, len = 0},
>>>            set_global_port = {s = 0x0, len = 0}, force_send_socket = 0x0,
>>>            path_vec = {s = 0x0, len = 0}, msg_cb = 0x0}
>>>            __FUNCTION__ = "run_failure_handlers"
>>>            #6 t_should_relay_response (Trans=0x2b0d03954950,
>>>            new_code=<value optimized out>, branch=<value optimized
>>>            out>, should_store=0x7fff00703b58,
>>>            should_relay=0x7fff00703b5c, cancel_bitmap=<value
>>>            optimized out>, reply=0x796cc0)
>>>            at t_reply.c:911
>>>            branch_cnt = 1
>>>            picked_code = <value optimized out>
>>>            inv_through = <value optimized out>
>>>            do_cancel = 0
>>>            __FUNCTION__ = "t_should_relay_response"
>>>            #7 0x00002b0d01979392 in relay_reply (t=0x79c678,
>>>            p_msg=0x796cc0, branch=7354464, msg_status=404,
>>>            cancel_bitmap=0x79d8b0) at t_reply.c:1125
>>>            relay = <value optimized out>
>>>
>>>            l = 0x79d8b0save_clone = <value optimized out>
>>>            buf = <value optimized out>
>>>            res_len = 0
>>>            relayed_code = 404
>>>            relayed_msg = <value optimized out>
>>>            bm = {to_tag_val = {s = 0x7fff00703c3c "", len = -1}}
>>>            totag_retr = <value optimized out>
>>>            reply_status = RPS_ERROR
>>>            uas_rb = <value optimized out>
>>>            cb_s = {s = 0x796cc0 "\005", len = 7704384}
>>>            text = {s = 0x500000000796cc0 <Address 0x500000000796cc0
>>>            out of bounds>, len = 528}
>>>            __FUNCTION__ = "relay_reply"
>>>            #8 0x00002b0d0197a980 in reply_received (p_msg=0x796cc0)
>>>            at t_reply.c:1494
>>>            msg_status = 404
>>>            branch = 7354464
>>>            reply_status = <value optimized out>
>>>            timer = <value optimized out>
>>>            cancel_bitmap = 0
>>>            uac = 0x2b0d03954b28
>>>            t = 0x2b0d03954950
>>>            backup_list = 0x0
>>>            __FUNCTION__ = "reply_received"
>>>            #9 0x0000000000421e98 in forward_reply (msg=0x796cc0) at
>>>            forward.c:561
>>>            new_buf = <value optimized out>
>>>            to = <value optimized out>
>>>            new_len = <value optimized out>
>>>            mod = 0x7849f8
>>>            proto = <value optimized out>
>>>            id = <value optimized out>
>>>            send_sock = <value optimized out>
>>>            len = <value optimized out>
>>>            __FUNCTION__ = "forward_reply"
>>>            #10 0x00000000004570c2 in receive_msg (
>>>            buf=0x758f40 "SIP/2.0 404 Not Found\r\nVia: SIP/2.0/UDP
>>>            4.2.46.150;branch=z9hG4bK8702.d1287257.0;rport=5060\r\nVia:
>>>            SIP/2.0/UDP
>>>            4.2.46.245;branch=z9hG4bK8702.83cfa2a.0\r\nVia:
>>>            SIP/2.0/UDP 109.104.88.29:5064;recei"...,
>>>            len=528, rcv_info=0x7fff00703d20) at receive.c:200
>>>            msg = 0x79c678
>>>            __FUNCTION__ = "receive_msg"
>>>            #11 0x000000000049be14 in udp_rcv_loop () at udp_server.c:492
>>>            len = 528
>>>            tmp = 0x13c4 <Address 0x13c4 out of bounds>
>>>            from = <value optimized out>
>>>            fromlen = 16
>>>            ri = {src_ip = {af = 2, len = 4, u = {addrl = {3526265805,
>>>            6}, addr32 = {3526265805, 0, 6, 0}, addr16 = {35789,
>>>            53806, 0, 0, 6, 0, 0, 0}, addr =
>>>            "Í.\322\000\000\000\000\006\000\000\000\000\000\000"}},
>>>            dst_ip = {af = 2,
>>>            len = 4, u = {addrl = {2519632845, 0}, addr32 =
>>>            {2519632845, 0, 0, 0}, addr16 = {35789, 38446, 0, 0, 0, 0,
>>>            0, 0}, addr = "Í.\226", '\000' <repeats 11 times>}},
>>>            src_port = 5060, dst_port = 5060, proto = 1,
>>>            proto_reserved1 = 0, proto_reserved2 = 0, src_su = {s =
>>>            {sa_family = 2, sa_data =
>>>            "\023\304Í.\322\000\000\000\000\000\000\000"}, sin =
>>>            {sin_family = 2, sin_port = 50195, sin_addr = {s_addr =
>>>            3526265805},
>>>            sin_zero = "\000\000\000\000\000\000\000"}, sin6 =
>>>            {sin6_family = 2, sin6_port = 50195, sin6_flowinfo =
>>>            3526265805, 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 = 0x795ca0}
>>>            p = 0x0
>>>            buf = "SIP/2.0 404 Not Found\r\nVia: SIP/2.0/UDP
>>>            4.2.46.150;branch=z9hG4bK8702.d1287257.0;rport=5060\r\nVia:
>>>            SIP/2.0/UDP
>>>            4.2.46.245;branch=z9hG4bK8702.83cfa2a.0\r\nVia:
>>>            SIP/2.0/UDP 109.104.88.29:5064;recei"...
>>>            __FUNCTION__ = "udp_rcv_loop"
>>>            #12 0x000000000042a65d in main_loop (argc=3, argv=<value
>>>            optimized out>) at main.c:818
>>>            i = 1
>>>            pid = <value optimized out>
>>>            si = 0x0
>>>            startup_done = 0x0
>>>            chd_rank = 6
>>>            __FUNCTION__ = "main_loop"
>>>            #13 main (argc=3, argv=<value optimized out>) at main.c:1388
>>>            cfg_log_stderr = <value optimized out>
>>>            cfg_stream = 0xf8d0010
>>>            c = <value optimized out>
>>>            r = <value optimized out>
>>>
>>>            old = 0x0
>>>            n = <value optimized out>
>>>            len = 1
>>>            i = 0
>>>            __FUNCTION__ = "backup"
>>>
>>>  ------------------------------------------------------------------------
>>>
>>>            _______________________________________________
>>>            Users mailing list
>>>            Users at lists.opensips.org <mailto:Users at lists.opensips.org>
>>>
>>>            http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>
>>>
>>>
>>>        --         Bogdan-Andrei Iancu
>>>        OpenSIPS Bootcamp
>>>        15 - 19 November 2010, Edison, New Jersey, USA
>>>        www.voice-system.ro <http://www.voice-system.ro>
>>>
>>>
>>>        _______________________________________________
>>>        Users mailing list
>>>        Users at lists.opensips.org <mailto:Users at lists.opensips.org>
>>>
>>>        http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>
>>>
>>>
>>> ------------------------------------------------------------------------
>>>
>>> _______________________________________________
>>> Users mailing list
>>> Users at lists.opensips.org
>>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>>
>>>
>>
>>
>> --
>> Bogdan-Andrei Iancu
>> OpenSIPS Event - expo, conf, social, bootcamp
>> 2 - 4 February 2011, ITExpo, Miami,  USA
>>
>> www.voice-system.ro
>>
>>
>> _______________________________________________
>> Users mailing list
>> Users at lists.opensips.org
>> http://lists.opensips.org/cgi-bin/mailman/listinfo/users
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.opensips.org/pipermail/users/attachments/20110214/82462637/attachment-0001.htm>


More information about the Users mailing list