[sr-dev] [Kamailio-Users] kamailio crashes

Panagiotis Skoulikaritis pskoul at algonet.gr
Wed Mar 10 15:30:11 CET 2010


Dear Marius

The scenario is as follows:

1.  A Call is placed by a sip subscriber "A"
2.  kamailio forwards the call to the asterisk server
3.  Asterisk plays an IVR message on the subscriber "A", creates a new 
call to a "virtual" number which is forwarded to the kamailio server, 
and plays an ivr to this leg as well when the call is answered, then it 
connects the two calls.
4.  Kamailio translates the "virtual" number to the pstn number of 
subscriber B


I have attached a picture of the above scenario.

The modules that are loaded are:

loadmodule "db_mysql.so"
loadmodule "mi_fifo.so"
loadmodule "mi_datagram.so"
loadmodule "sl.so"
loadmodule "tm.so"
loadmodule "rr.so"
loadmodule "pv.so"
loadmodule "maxfwd.so"
loadmodule "usrloc.so"
loadmodule "registrar.so"
loadmodule "textops.so"
loadmodule "uri_db.so"
loadmodule "siputils.so"
loadmodule "xlog.so"
loadmodule "acc.so"
loadmodule "dispatcher.so"
loadmodule "pdt.so"
loadmodule "dialplan.so"
loadmodule "siptrace.so"
loadmodule "dialog.so"
loadmodule "sqlops.so"
loadmodule "userblacklist.so"
loadmodule "htable.so"
loadmodule "uac.so"


The config that does all the routing is :

route[10] {

        xlog("alx ------- This is Route 10 -------");

        if($rU =~ "^.*%+")
        {
                xlog("alx ------- The number contains %23 ");
                $rU = $(rU{re.subst,/^(.*)%23(.*)/\1\2/});
                #$rU = $(rU{s.unescape.user}); #It changes the %23 to # !!
                xlog("alx ------- The perl  $rU ------- ");
        }

        if($rU =~ "^.*#+")
        {
                xlog("alx ------- The number contains #");
                $rU = $(rU{re.subst,/^(.*)#(.*)/\1\2/});
                #$rU = $(rU{s.unescape.user}); #It changes the %23 to # !!
                xlog("alx ------- The perl  $rU ------- ");
        }

        if(prefix2domain("2", "0")) {

                $var(dial_grp) = $(rd{s.select,0,.}{s.int}); # Dialplan 
group prefix for routing
                $var(num_pr) = $(rd{s.select,1,.}{s.int});  # The number 
of digits that prefix has
                $var(num_translation) = $(rd{s.select,2,.}{s.int});   # 
Called number translation
                $avp(s:port_translation) = $(rd{s.select,3,.}{s.int});   
# Port number translation
                #$var(test_var) = $(rd{s.select,4,.}{s.int});   # Future 
property

                $avp(s:cust_prefix) = $(rU{s.substr,0,$var(num_pr)});
                $rU = $(rU{s.substr,$var(num_pr),0});

        xlog("alx ------- The new rU is $rU and properties $rd -------");

        if($var(num_translation) == 1)
        {
                if($sht(a=>$rU)!=null){

                      $rU = $sht(a=>$rU);
                      xlog("alx ------- Translation Done. DST num=$rU  
----------");

                } else {
                        xlog("alx ------- Translation NOT Done  
----------");
                }


                        #xlog("alx ------- We have DST number 
translation for user fU $avp(s:frm_user_name)  ----------");
                        #if(dp_translate("31", "$rU/$rU"))
                        #{
                        #        xlog("alx ------- Translation Done. DST 
num=$rU ----------");
                        #} else {
                        #        xlog("alx ------- Translation NOT Done 
----------");
                        #}
        }

        if(dp_translate("$var(dial_grp)", "$rU/$rU"))
                {
                        xlog("alx ------- The $rU and with attributes 
:$avp(s:dest) -------\n");

                        $var(i) = 0;
                        while($(avp(s:dest){s.select,$var(i),.})!="#")
                        {
                                $avp(s:dstgrp) = 
$(avp(s:dest){s.select,$var(i),.}{s.int});
                                $var(i) = $var(i) + 1;
                                xlog("alx ------- The 
avp(s:dstgrp)=$avp(s:dstgrp) var(i)=$var(i) -------");
                        }

                        # backup the username so we can use different 
prefixes
                        $avp(s:user) = $rU;

                        # select destination from first group
                                if(ds_select_domain("$avp(s:dstgrp)", "4"))
                                {
                                        if($(ru{uri.param,prefix})!=null)
                                                {
                                                                $ru = 
"sip:" + $(ru{uri.param,prefix})  +  $avp(s:user) + "@" + $rd;

                                                } else {
                                                                $ru = 
"sip:" + $avp(s:user) + "@" + $rd;
                                                }
                                }

                                $avp(s:dstgrp) = null;
                                        xlog("alx ------- The final RURI 
is $ru ------- ");
                                        if($avp(s:port_translation) == 1)
                                        {
                                                rewriteport("5061");
                                        }
                                        t_on_failure("3");
                                        t_relay();
                                        exit;

                }




        }


}

Attached is the trace

Regards.

P.

marius zbihlei wrote:
> Panagiotis Skoulikaritis wrote:
>> Hello Daniel
>>
>> the kamailio version is 1.5.3
>>
>> Regards
>>
>> P.
> Hello,
>
> Can you give us more details like the sip message that generates the 
> coredump (or if every sip message received generates the core), if 
> your config does something more out of the ordinary(let's say exotic). 
> Can we reproduce it ?
>
> It would also be helpful if you specify the list of modules you have 
> loaded.
>
> Cheers,
> Marius
>>
>> Daniel-Constantin Mierla wrote:
>>> Hello,
>> http://lists.openser-project.org/cgi-bin/mailman/listinfo/users
>
-------------- next part --------------
An embedded and charset-unspecified text was scrubbed...
Name: kamailio trace-1.txt
URL: <http://lists.sip-router.org/pipermail/sr-dev/attachments/20100310/80ca1c35/attachment-0001.txt>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: call scenario.jpg
Type: image/jpeg
Size: 13430 bytes
Desc: not available
URL: <http://lists.sip-router.org/pipermail/sr-dev/attachments/20100310/80ca1c35/attachment-0001.jpg>


More information about the sr-dev mailing list