[SR-Users] Dispatcher Crash when all hosts are invalid

Daniel-Constantin Mierla miconda at gmail.com
Mon Dec 13 12:39:16 CET 2010


I did a fix for it several days ago, not sure you noticed it, since I 
was mostly unavailable to reply on mailing list. Here is the link:
http://git.sip-router.org/cgi-bin/gitweb.cgi/sip-router/?a=commit;h=0f5e21c668e46492fb9f9ec69e5b5aafe41bd272

If you can try the patch and report if it is working will be great. It 
is for master, but I will backport to stable banrches as well.

Btw, do you need use_default? I is something quite unmaintained (read 
untested together with latest additions), so my plan was to remove it 
since many people were confused by its necessity.

Cheers,
Daniel

On 12/3/10 9:54 PM, Eric Hiller wrote:
> Yes, I do.
>
> ------------------------------------------------------------------------
> Date: Fri, 3 Dec 2010 10:31:51 +0100
> From: miconda at gmail.com
> To: mrraptor98 at hotmail.com
> CC: sr-users at lists.sip-router.org
> Subject: Re: [SR-Users] Dispatcher Crash when all hosts are invalid
>
> Hello,
>
> do you have parameter use_default set to 1?
>
> Cheers,
> Daniel
>
> On 12/3/10 6:47 AM, Eric Hiller wrote:
>
>     Dispatcher crashes everytime guaranteed if there is a single dead
>     host kamailio exits with a core dump (see below). If there are two
>     dead hosts entire kamailio locks up (no core dump). Any ideas on
>     this one? The invalid flag is never marked in the DB btw.
>
>     Crashes at ds_select_dst having never reached "COMPLETED FIRST DST
>     LOOKUP"
>
>     # -------------------------  request routing logic -------------------
>     # main routing logic
>     # ------------------
>     route{
>             # initial checks
>             if (!mf_process_maxfwd_header("10")) {
>                     sl_send_reply("483","Too Many Hops");
>                     exit;
>             };
>             if (msg:len >=  2048 ) {
>                     sl_send_reply("513", "Message too big");
>                     exit;
>             };
>             xlog("[$TF] VALID RECV $rm\n     $fu ($si:$sp) to $ru\n");
>             $avp(orig_du) = $du;
>             if($(fU{s.select,1,-})){
>                     # from a user-formed message
>                     $avp(user) = $(fU{s.select,0,-});
>                     xlog("     USER $avp(user) DETECTED\n");
>             }
>             if(pv_isset("$avp(user)") && !ds_is_from_list()){
>                     # from client
>                     # route to client PBX
>                     if(method == "REGISTER"){
>                             route(3);
>                     } else {
>                             route(1);
>                     }
>             }
>             if(ds_is_from_list()){
>                     # from client, outbound from pbx
>                     xlog("     IS FROM PBX\n");
>                     if(is_e164($rU)){
>                             xlog("     IS E164");
>                             # all pbx-pbx traffic should be in user format
>                             # since this is pbx-non-pbx send it to gateway
>                             # gateway only takes E164
>                             route(2);
>                     }
>                     if($(rU{s.select,0,-})){
>                             # send directly from pbx to client
>                             route(4);
>                     }
>             }
>             if($si == "GATEWAY_IP_ADDRESS"){
>                     # lookup enum
>                     # route to appropriate pbx via DISPATCHER based on
>     user returned
>                     xlog("     CALL FROM GATEWAY\n");
>             }
>     }
>     route[1]{
>             route(3);
>             xlog("     ROUTED to $avp(user) PBX\n");
>             ds_select_dst($avp(user),"7");
>             xlog("     COMPLETED FIRST DST LOOKUP\n");
>             if($avp(orig_rd) == $rd){
>                     exec("kamctl dispatcher reload");
>                     ds_select_dst($avp(user),"9");
>             }
>             xlog("     host is now $rd; all is $ru || $du\n");
>             if($avp(orig_du) != $du){
>                     t_on_failure("1");
>                     if(!t_relay()){
>                             xlog("     T_RELAY() FAILED\n");
>                             sl_reply_error();
>                     }
>             } else {
>                     xlog("     RELOAD STILL YIELDED NOTHING\n");
>             }
>     }
>     route[2]{
>             xlog("     Sending to gateway...");
>             #$rd = "GATEWAY";
>     }
>     route[3]{
>             #register
>             if(!www_authorize("domain.net","subscriber")){
>                     www_challenge("domain.net","0");
>                     return;
>             } else {
>                     xlog("     AUTHENTICATED $avp(user)\n");
>                     save("location");
>                     return;
>             }
>     }
>     route[4]{
>             $rU = "2-1";
>             #$rd = "10.1.40.7";
>             #$rp = "16314";
>             lookup("location");
>             xlog("     ROUTING TO USER $rU\n");
>             forward();
>     }
>     failure_route[1]{
>             xlog("     FAILED FAILURE_ROUTE[1]\n");
>             if(t_any_timeout()){
>                     xlog("     MARKING DEAD HOST $du\n");
>                     ds_mark_dst();
>                     xlog("     TIMEOUT!\n");
>             }
>     }
>
>
>      0(2934) ERROR: <script>: [Thu Dec  2 20:15:34 2010] VALID RECV
>     REGISTER
>     sip:3-1 at domain.com (10.1.40.7:43899) to sip:domain.com
>      0(2934) ERROR: <script>:      USER 3 DETECTED
>      0(2934) ERROR: <script>:      ROUTED to 3 PBX
>      0(2934) ERROR: <script>: mark#1
>      0(2934) ERROR: <script>:      host is now domain.com; all is
>     sip:domain.com || sip:xxx.xxx.xxx.166:5060
>      0(2934) ERROR: <script>: [Thu Dec  2 20:15:35 2010] VALID RECV
>     REGISTER
>     sip:3-1 at domain.com (10.1.40.7:43899) to sip:domain.com
>      0(2934) ERROR: <script>:      USER 3 DETECTED
>      0(2934) ERROR: <script>:      ROUTED to 3 PBX
>      0(2934) ERROR: <script>: mark#1
>      0(2934) ERROR: <script>:      host is now domain.com; all is
>     sip:domain.com || sip:xxx.xxx.xxx.166:5060
>      1(2935) ERROR: <script>:      FAILED FAILURE_ROUTE[1]
>      1(2935) ERROR: <script>:      MARKING DEAD HOST
>     sip:xxx.xxx.xxx.166:5060
>      1(2935) ERROR: <script>:      TIMEOUT!
>      0(2934) ERROR: <script>: [Thu Dec  2 20:15:50 2010] VALID RECV
>     REGISTER
>     sip:3-1 at domain.com (10.1.40.7:29372) to sip:domain.com
>      0(2934) ERROR: <script>:      USER 3 DETECTED
>      0(2934) ERROR: <script>:      ROUTED to 3 PBX
>      0(2934) ERROR: <script>: mark#1
>      0(2934) ERROR: <script>:      host is now domain.com; all is
>     sip:domain.com || sip:xxx.xxx.xxx.165:5060
>      0(2934) ERROR: <script>: [Thu Dec  2 20:15:50 2010] VALID RECV
>     REGISTER
>     sip:3-1 at domain.com (10.1.40.7:29372) to sip:domain.com
>      0(2934) ERROR: <script>:      USER 3 DETECTED
>      0(2934) ERROR: <script>:      ROUTED to 3 PBX
>      0(2934) ERROR: <script>: mark#1
>      0(2934) ERROR: <script>:      host is now domain.com; all is
>     sip:domain.com || sip:xxx.xxx.xxx.165:5060
>      1(2935) ERROR: <script>:      FAILED FAILURE_ROUTE[1]
>      1(2935) ERROR: <script>:      MARKING DEAD HOST
>     sip:xxx.xxx.xxx.165:5060
>      1(2935) ERROR: <script>:      TIMEOUT!
>      0(2934) ERROR: <script>: [Thu Dec  2 20:15:55 2010] VALID RECV
>     REGISTER
>     sip:3-1 at domain.com (10.1.40.7:29373) to sip:domain.com
>      0(2934) ERROR: <script>:      USER 3 DETECTED
>      0(2934) ERROR: <script>:      ROUTED to 3 PBX
>
>
>     :::::Core file from crash with 1 invalid host:::::
>     Program terminated with signal 8, Arithmetic exception.
>     #0  0x0069e92b in ds_select_dst (msg=0x82ffb00, set=2, alg=7, mode=0)
>         at dispatch.c:1720
>     1720                            i = (i+1)%(idx->nr-1);
>
>
>
>     Thanks for any help on this one!
>     -Eric
>
>
>     _______________________________________________
>     SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
>     sr-users at lists.sip-router.org  <mailto:sr-users at lists.sip-router.org>
>     http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users
>
>
> -- 
> Daniel-Constantin Mierla
> Kamailio (OpenSER) Advanced Training
> Jan 24-26, 2011, Irvine, CA, USA
> http://www.asipto.com
>
>
> _______________________________________________
> SIP Express Router (SER) and Kamailio (OpenSER) - sr-users mailing list
> sr-users at lists.sip-router.org
> http://lists.sip-router.org/cgi-bin/mailman/listinfo/sr-users

-- 
Daniel-Constantin Mierla
Kamailio (OpenSER) Advanced Training
Jan 24-26, 2011, Irvine, CA, USA
http://www.asipto.com

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.sip-router.org/pipermail/sr-users/attachments/20101213/4cb84d13/attachment-0001.htm>


More information about the sr-users mailing list