[asterisk-bugs] [JIRA] (ASTERISK-26460) audiohooks: Crash when processing interpolated frame

Richard Mudgett (JIRA) noreply at issues.asterisk.org
Wed Oct 12 10:48:01 CDT 2016


    [ https://issues.asterisk.org/jira/browse/ASTERISK-26460?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=232656#comment-232656 ] 

Richard Mudgett edited comment on ASTERISK-26460 at 10/12/16 10:47 AM:
-----------------------------------------------------------------------

Apparently this has come up before, but this is the first official bug report I've seen for it.  See here on asterisk-bugs   http://lists.digium.com/pipermail/asterisk-users/2015-July/287077.html

My backtrace is as follows:
{noformat}
#0  ast_slinear_saturated_multiply (value=<synthetic pointer>, input=0x0)
    at /usr/src/asterisk-13.11.2/include/asterisk/utils.h:369
#1  ast_frame_adjust_volume (f=f at entry=0x7fc268b24160, adjustment=4) at frame.c:665
#2  0x00007fc22b4c2463 in volume_callback (audiohook=<optimized out>, chan=<optimized out>,
    frame=0x7fc268b24160, direction=AST_AUDIOHOOK_DIRECTION_READ) at func_volume.c:146
#3  0x00000000004643e2 in audio_audiohook_write_list (frame=0x7fc268b24160,
    direction=AST_AUDIOHOOK_DIRECTION_READ, audiohook_list=0x7fc268861c50, chan=<optimized out>)
    at audiohook.c:1031
#4  ast_audiohook_write_list (chan=<optimized out>, audiohook_list=0x7fc268861c50,
    direction=AST_AUDIOHOOK_DIRECTION_READ, frame=0x7fc268b24160) at audiohook.c:1093
#5  0x00000000004bb2f7 in __ast_read (chan=0x7fc26879ad98, dropaudio=0) at channel.c:4198
#6  0x0000000000480188 in bridge_handle_trip (bridge_channel=<optimized out>)
    at bridge_channel.c:2416
#7  bridge_channel_wait (bridge_channel=<optimized out>) at bridge_channel.c:2586
#8  bridge_channel_internal_join (bridge_channel=0x7fc268a48948) at bridge_channel.c:2732
#9  0x000000000046b7a6 in ast_bridge_join (bridge=0x7fc2681422c8, chan=chan at entry=0x7fc26879ad98,
    swap=swap at entry=0x0, features=features at entry=0x7fc1b96d0608,
    tech_args=tech_args at entry=0x7fc1b96d0630, flags=flags at entry=(unknown: 0)) at bridge.c:1700
#10 0x00007fc22e96eb98 in confbridge_exec (chan=0x7fc26879ad98, data=<optimized out>)
    at app_confbridge.c:1886
#11 0x0000000000576d2e in pbx_exec (c=c at entry=0x7fc26879ad98, app=app at entry=0x24cbbd0,
    data=data at entry=0x7fc1b96d0ba0 "69063503,predictive_bridge,predictive_customer,")
    at pbx_app.c:485
#12 0x000000000056beac in pbx_extension_helper (c=0x7fc26879ad98,
    context=0x7fc26879b750 "new-dialer-amd", exten=0x7fc26879b7a0 "6307939783", priority=26,
    label=<optimized out>, callerid=<optimized out>, action=E_SPAWN, found=0x7fc1b96d2c3c,
    combined_find_spawn=1, con=0x0) at pbx.c:2834
#13 0x000000000056e011 in ast_spawn_extension (combined_find_spawn=<optimized out>,
    found=<optimized out>, callerid=<optimized out>, priority=<optimized out>,
    exten=<optimized out>, context=<optimized out>, c=<optimized out>) at pbx.c:4060
#14 __ast_pbx_run (c=0x7fc26879ad98, args=0x140) at pbx.c:4235
#15 0x000000000056f7ca in ast_pbx_run_args (args=<optimized out>, c=<optimized out>) at pbx.c:4603
#16 ast_pbx_run (c=<optimized out>) at pbx.c:4612
#17 pbx_outgoing_exec (data=0x7fc26839ad68) at pbx.c:7379
#18 0x00000000005dd66a in dummy_start (data=<optimized out>) at utils.c:1235
#19 0x00007fc2f5bd50a4 in start_thread (arg=0x7fc1b96d3700) at pthread_create.c:309
#20 0x00007fc2f4c8487d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111
{noformat}


The issue is the same as what is seen in the forum posting:
{noformat}
#0  ast_slinear_saturated_multiply (value=<synthetic pointer>, input=0x0)
    at /usr/src/asterisk-13.11.2/include/asterisk/utils.h:369
369		res = (int) *input * *value;

(gdb) print *f
$4 = {frametype = AST_FRAME_VOICE, subclass = {integer = 0, format = 0x2310490,
    frame_ending = 0}, datalen = 0, samples = 160, mallocd = 1, mallocd_hdr_len = 530,
  offset = 64, src = 0x7fc268b24228 "func_jitterbuffer interpolation", data = {ptr = 0x0,
    uint32 = 0, pad = "\000\000\000\000\000\000\000"}, delivery = {tv_sec = 1476225149,
    tv_usec = 723471}, frame_list = {next = 0x0}, flags = 0, ts = 0, len = 0, seqno = 0}
{noformat}

This is what I have in my dialplan for volume:
{noformat}
same => n,Set(VOLUME(RX)=2)
same => n,Set(VOLUME(TX)=2)
{noformat}
This then feeds into a two-party ConfBridge with jitterbuffers enabled on both legs, but the volume Set() is only on one leg.




was (Author: jpsharp):
Apparently this has come up before, but this is the first official bug report I've seen for it.  See here on asterisk-bugs   http://lists.digium.com/pipermail/asterisk-users/2015-July/287077.html

My backtrace is as follows:

#0  ast_slinear_saturated_multiply (value=<synthetic pointer>, input=0x0)
    at /usr/src/asterisk-13.11.2/include/asterisk/utils.h:369
#1  ast_frame_adjust_volume (f=f at entry=0x7fc268b24160, adjustment=4) at frame.c:665
#2  0x00007fc22b4c2463 in volume_callback (audiohook=<optimized out>, chan=<optimized out>,
    frame=0x7fc268b24160, direction=AST_AUDIOHOOK_DIRECTION_READ) at func_volume.c:146
#3  0x00000000004643e2 in audio_audiohook_write_list (frame=0x7fc268b24160,
    direction=AST_AUDIOHOOK_DIRECTION_READ, audiohook_list=0x7fc268861c50, chan=<optimized out>)
    at audiohook.c:1031
#4  ast_audiohook_write_list (chan=<optimized out>, audiohook_list=0x7fc268861c50,
    direction=AST_AUDIOHOOK_DIRECTION_READ, frame=0x7fc268b24160) at audiohook.c:1093
#5  0x00000000004bb2f7 in __ast_read (chan=0x7fc26879ad98, dropaudio=0) at channel.c:4198
#6  0x0000000000480188 in bridge_handle_trip (bridge_channel=<optimized out>)
    at bridge_channel.c:2416
#7  bridge_channel_wait (bridge_channel=<optimized out>) at bridge_channel.c:2586
#8  bridge_channel_internal_join (bridge_channel=0x7fc268a48948) at bridge_channel.c:2732
#9  0x000000000046b7a6 in ast_bridge_join (bridge=0x7fc2681422c8, chan=chan at entry=0x7fc26879ad98,
    swap=swap at entry=0x0, features=features at entry=0x7fc1b96d0608,
    tech_args=tech_args at entry=0x7fc1b96d0630, flags=flags at entry=(unknown: 0)) at bridge.c:1700
#10 0x00007fc22e96eb98 in confbridge_exec (chan=0x7fc26879ad98, data=<optimized out>)
    at app_confbridge.c:1886
#11 0x0000000000576d2e in pbx_exec (c=c at entry=0x7fc26879ad98, app=app at entry=0x24cbbd0,
    data=data at entry=0x7fc1b96d0ba0 "69063503,predictive_bridge,predictive_customer,")
    at pbx_app.c:485
#12 0x000000000056beac in pbx_extension_helper (c=0x7fc26879ad98,
    context=0x7fc26879b750 "new-dialer-amd", exten=0x7fc26879b7a0 "6307939783", priority=26,
    label=<optimized out>, callerid=<optimized out>, action=E_SPAWN, found=0x7fc1b96d2c3c,
    combined_find_spawn=1, con=0x0) at pbx.c:2834
#13 0x000000000056e011 in ast_spawn_extension (combined_find_spawn=<optimized out>,
    found=<optimized out>, callerid=<optimized out>, priority=<optimized out>,
    exten=<optimized out>, context=<optimized out>, c=<optimized out>) at pbx.c:4060
#14 __ast_pbx_run (c=0x7fc26879ad98, args=0x140) at pbx.c:4235
#15 0x000000000056f7ca in ast_pbx_run_args (args=<optimized out>, c=<optimized out>) at pbx.c:4603
#16 ast_pbx_run (c=<optimized out>) at pbx.c:4612
#17 pbx_outgoing_exec (data=0x7fc26839ad68) at pbx.c:7379
#18 0x00000000005dd66a in dummy_start (data=<optimized out>) at utils.c:1235
#19 0x00007fc2f5bd50a4 in start_thread (arg=0x7fc1b96d3700) at pthread_create.c:309
#20 0x00007fc2f4c8487d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:111



The issue is the same as what is seen in the forum posting:

#0  ast_slinear_saturated_multiply (value=<synthetic pointer>, input=0x0)
    at /usr/src/asterisk-13.11.2/include/asterisk/utils.h:369
369		res = (int) *input * *value;

(gdb) print *f
$4 = {frametype = AST_FRAME_VOICE, subclass = {integer = 0, format = 0x2310490,
    frame_ending = 0}, datalen = 0, samples = 160, mallocd = 1, mallocd_hdr_len = 530,
  offset = 64, src = 0x7fc268b24228 "func_jitterbuffer interpolation", data = {ptr = 0x0,
    uint32 = 0, pad = "\000\000\000\000\000\000\000"}, delivery = {tv_sec = 1476225149,
    tv_usec = 723471}, frame_list = {next = 0x0}, flags = 0, ts = 0, len = 0, seqno = 0}


This is what I have in my dialplan for volume:

same => n,Set(VOLUME(RX)=2)
same => n,Set(VOLUME(TX)=2)

This then feeds into a two-party ConfBridge with jitterbuffers enabled on both legs, but the volume Set() is only on one leg.



> audiohooks: Crash when processing interpolated frame
> ----------------------------------------------------
>
>                 Key: ASTERISK-26460
>                 URL: https://issues.asterisk.org/jira/browse/ASTERISK-26460
>             Project: Asterisk
>          Issue Type: Bug
>      Security Level: None
>          Components: Core/General
>    Affects Versions: 13.11.2
>         Environment: Linux Asterisk2 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u3 (2016-01-17) x86_64 GNU/Linux
>            Reporter: James Sharp
>            Assignee: Unassigned
>
> Asterisk repeatedly crashes when combining volume adjustements using the VOLUME function and jitterbuffer in ConfBridge



--
This message was sent by Atlassian JIRA
(v6.2#6252)



More information about the asterisk-bugs mailing list