[asterisk-dev] asterisk going down failing on res_features.c atxtransfer

Dov Bigio dovb at terra.com.br
Wed Apr 12 07:00:01 MST 2006


Hello all,

I have the following situation that is making my Asterisk to go down.

I have several queues defined on my system, and for an agent to transfer a client from a queue to the other, he uses atxfer = 1, define on features.conf.
The problem is that I need the agent to be able to pull the call back, in case there is a long waiting queue for the transferred extension.
Since I didn't find a way to do this, I implemented a system with two queues (queue0 and queue1).

So, the agent is calling to a customer, dials 1 + queue0-extension and enter the 0 queue. If is a waiting line, he goes to a menu that allows him to hang up (and thus return to the client) or to wait on the queue, thus going to queue1.

I have this working pretty well for several queues in the company (billing, support, support levels 1, 2 and 3, etc.). BUT, sometimes, Asterisk goes down.

I looked at the core file generated by safe_asterisk on /tmp, using gdb and found the following information.

I am not a C specialist, but when checking on line 1442 of res_features.c I realized the the problem is when res=1 and it tries to call ast_frfree(f).

I can give more details in case someone is available and willing to help...

#0  0x00331239 in free () from /lib/tls/libc.so.6
(gdb) bt full
#0  0x00331239 in free () from /lib/tls/libc.so.6
No symbol table info available.
#1  0x0805a641 in ast_frfree (fr=0x3f5cd8) at frame.c:277
No locals.
#2  0x0014f2ac in ast_bridge_call (chan=0x9473048, peer=0x95dd658, config=0xb6d493f0) at res_features.c:1442
        featurecode = 0x305ef902 <Address 0x305ef902 out of bounds>
        sense = 2
        other = (struct ast_channel *) 0x9473048
        f = (struct ast_frame *) 0xb6d493f0
        who = (struct ast_channel *) 0x95dd658
        chan_featurecode = '\0' <repeats 11 times>
        peer_featurecode = "1\000\000\000\000\000\000\000\000\000\000"
        res = -1
        hasfeatures = 0
        hadfeatures = 0
        aoh = (struct ast_option_header *) 0x3f3570
        start = {tv_sec = 0, tv_usec = 0}
        backup_config = {features_caller = {flags = 0}, features_callee = {flags = 0}, start_time = {tv_sec = 0,
    tv_usec = 0}, feature_timer = 0, timelimit = 0, play_warning = 0, warning_freq = 0, warning_sound = 0x0,
  end_sound = 0x0, start_sound = 0x0, firstpass = 0, flags = 0}
        monitor_exec = 0x305ef8fa <Address 0x305ef8fa out of bounds>
#3  0x0022b1e3 in try_calling (qe=0x6dc18e0, options=0x6dc18e0 "HzT\tfila", announceoverride=0x6dc1a5d "", url=0x6dc1a5c "",
    go_on=0x95dd658) at app_queue.c:2273
        res2 = 155660360
        cur = (struct member *) 0x0
        outgoing = (struct localuser *) 0x0
        tmp = (struct localuser *) 0x95dd658
        to = 11731
        restofit = '\0' <repeats 16 times>, "\b\030Ü\006Ø\\?\000´£\022\000´£\022\000è©\"\tä\030Ü\006H0G\t\003]\022\000H0G\t\234¡\022\000è©\"\t)k\005\b8õ\020\bx[\\\tì \022\000T5#"
        oldexten = "s", '\0' <repeats 78 times>
        oldcontext = "macro-filagrupo1", '\0' <repeats 63 times>
        queuename = "suporte1", '\0' <repeats 247 times>
        newnum = 0x9473048 "Transfered/SIP/200.234.208.250-098da6c8<ZOMBIE>"
        monitorfilename = 0x6dc18e0 "HzT\tfila"
        peer = (struct ast_channel *) 0x95dd658
        which = (struct ast_channel *) 0x9473048
        lpeer = (struct localuser *) 0x95dd658
        member = (struct member *) 0x9549618
        res = 0
        bridge = 157144664
        numbusies = 16
        x = 68
        announce = 0x0


Thank you very much!!!
Dov
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.digium.com/pipermail/asterisk-dev/attachments/20060412/513f7ce5/attachment.htm


More information about the asterisk-dev mailing list