[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