[asterisk-bugs] [JIRA] (ASTERISK-27977) Crash at T38 call disconnection
Salah Ahmed (JIRA)
noreply at issues.asterisk.org
Thu Jul 19 15:23:54 CDT 2018
Salah Ahmed created ASTERISK-27977:
--------------------------------------
Summary: Crash at T38 call disconnection
Key: ASTERISK-27977
URL: https://issues.asterisk.org/jira/browse/ASTERISK-27977
Project: Asterisk
Issue Type: Information Request
Security Level: None
Components: Resources/res_pjsip_t38
Affects Versions: 13.20.0
Reporter: Salah Ahmed
Severity: Minor
Hello,
I am very new in this asterisk world, please pardon me if it wrong request.
Actually I am very confused during a study of a core dump, thats why I am requesting here to get some help.
Scenario:
This core was happened after a T38 successful call. I assumed it happened due to udptl packet read after call disconnection.
Back trace full,
===================
#0 0x000000000045dd5f in internal_ao2_traverse (self=0x7fae7063ecc0, flags=flags at entry=OBJ_SEARCH_KEY,
cb_fn=<optimized out>, arg=arg at entry=0x7fb08a396360, tag=tag at entry=0x0, file=file at entry=0x0,
line=0, func=0x0, type=AO2_CALLBACK_DEFAULT, data=0x0) at astobj2_container.c:354
match = 3
ret = 0x0
cb_default = 0x7fb11ad88dc0 <session_media_cmp>
node = 0x4
traversal_state = 0x7fadffeaaa60
orig_lock = AO2_LOCK_REQ_MUTEX
multi_container = 0x0
multi_iterator = 0x0
#1 0x000000000045e6f3 in __ao2_callback (arg=0x7fb08a396360, cb_fn=<optimized out>,
flags=OBJ_SEARCH_KEY, c=<optimized out>) at astobj2_container.c:455
No locals.
#2 __ao2_find (c=<optimized out>, arg=arg at entry=0x7fb08a396360, flags=flags at entry=OBJ_SEARCH_KEY)
at astobj2_container.c:496
arged = 0x7fb08a396360
#3 0x00007fb08a393aec in t38_framehook_read (session=0x7fae722a2ad0, session=0x7fae722a2ad0, f=0x0,
chan=0x7fae73b24150) at res_pjsip_t38.c:448
session_media = <optimized out>
#4 t38_framehook (chan=0x7fae73b24150, f=0x0, event=<optimized out>, data=<optimized out>)
at res_pjsip_t38.c:466
channel = <optimized out>
#5 0x000000000051cc2b in framehook_list_push_event (framehooks=0x7fae711f6f50, frame=0x0,
event=AST_FRAMEHOOK_EVENT_READ) at framehook.c:118
__list_head = 0x7fae711f6f58
__list_next = 0x0
__list_prev = <optimized out>
__list_current = 0x7fae70016be0
num = 0
framehook = 0x7fae70016be0
original_frame = 0x0
skip = 0x7fadffeaabe0
skip_size = <optimized out>
#6 0x00000000004bdd45 in __ast_read (chan=0x7fae73b24150, dropaudio=0) at channel.c:3973
cause = 0
__PRETTY_FUNCTION__ = "__ast_read"
#7 0x00000000004827c6 in bridge_handle_trip (bridge_channel=<optimized out>) at bridge_channel.c:2416
frame = 0x0
#8 bridge_channel_wait (bridge_channel=<optimized out>) at bridge_channel.c:2586
ms = -1
outfd = -99999
chan = 0x7fae73b24150
#9 bridge_channel_internal_join (bridge_channel=0x7fae70e8a560) at bridge_channel.c:2732
res = 0
channel_features = 0x0
swap = 0x7fae70e8a630
__PRETTY_FUNCTION__ = "bridge_channel_internal_join"
#10 0x000000000046c600 in bridge_channel_ind_thread (data=data at entry=0x7fae70e8a560) at bridge.c:1782
bridge_channel = 0x7fae70e8a560
chan = <optimized out>
__PRETTY_FUNCTION__ = "bridge_channel_ind_thread"
#11 0x00000000005e6dfa in dummy_start (data=<optimized out>) at utils.c:1238
__cancel_buf = {__cancel_jmp_buf = {{__cancel_jmp_buf = {140387192380000, -7728970672055937793,
0, 140387183878800, 19, 140385299642112, 7775132476379337983, -7728970105745206017},
__mask_was_saved = 0}}, __pad = {0x7fadffeaaef0, 0x0,
0x7fb13a9d4812 <__libc_thread_freeres+34>, 0x7fae7039e290}}
__cancel_arg = 0x7fadffeab700
__not_first_call = <optimized out>
ret = <optimized out>
a = {start_routine = 0x46c5e0 <bridge_channel_ind_thread>, data = 0x7fae70e8a560,
name = 0x7fae70bb9a60 "bridge_channel_ind_thread started at [ 1874] bridge.c bridge_impart_internal()"}
#12 0x00007fb13b688064 in start_thread (arg=0x7fadffeab700) at pthread_create.c:309
__res = <optimized out>
pd = 0x7fadffeab700
now = <optimized out>
unwind_buf = {cancel_jmp_buf = {{jmp_buf = {140385299642112, -7728970672055937793, 0,
140387183878800, 19, 140385299642112, 7775132476400309503, 7773029126418175231},
mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x0, 0x0}, data = {prev = 0x0,
cleanup = 0x0, canceltype = 0}}}
not_first_call = <optimized out>
pagesize_m1 = <optimized out>
sp = <optimized out>
freesize = <optimized out>
__PRETTY_FUNCTION__ = "start_thread"
#13 0x00007fb13a97062d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
===================
My confusions are,
1. In frame 3 session->media is NULL and in frame 1 __ao2_find method has a null check on c, then how its proceed further?
In Frame 3
(gdb) p session->media
$20 = (struct ao2_container *) 0x0
2. t38_framehook_read method takes 3 args but in frame 3 we have found in gdb it takes 4 value. how this is happen? Is this core file corrupted somehow?
3. Please advice me some idea how can I move forward on this core dump.
Please let me know if you need any info on it.
Thanks,
Rubel
--
This message was sent by Atlassian JIRA
(v6.2#6252)
More information about the asterisk-bugs
mailing list