[Home]

Summary:ASTERISK-26460: audiohooks: Crash when processing interpolated frame
Reporter:James Sharp (jpsharp)Labels:
Date Opened:2016-10-11 18:03:17Date Closed:
Priority:MajorRegression?
Status:Open/NewComponents:Core/General
Versions:13.11.2 Frequency of
Occurrence
Frequent
Related
Issues:
Environment:Linux Asterisk2 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt20-1+deb8u3 (2016-01-17) x86_64 GNU/LinuxAttachments:
Description:Asterisk repeatedly crashes when combining volume adjustements using the VOLUME function and jitterbuffer in ConfBridge
Comments:By: Asterisk Team (asteriskteam) 2016-10-11 18:03:18.352-0500

Thanks for creating a report! The issue has entered the triage process. That means the issue will wait in this status until a Bug Marshal has an opportunity to review the issue. Once the issue has been reviewed you will receive comments regarding the next steps towards resolution.

A good first step is for you to review the [Asterisk Issue Guidelines|https://wiki.asterisk.org/wiki/display/AST/Asterisk+Issue+Guidelines] if you haven't already. The guidelines detail what is expected from an Asterisk issue report.

Then, if you are submitting a patch, please review the [Patch Contribution Process|https://wiki.asterisk.org/wiki/display/AST/Patch+Contribution+Process].

By: Rusty Newton (rnewton) 2016-10-11 18:14:16.940-0500

Thank you for taking the time to report this bug and helping to make Asterisk better. Unfortunately, we cannot work on this bug because your description did not include enough information. Please read over the Asterisk Issue Guidelines [1] which discusses the information necessary for your issue to be resolved and the format that information needs to be in. We would be grateful if you would then provide a more complete description of the problem. At a minimum, we need:

1. The specific steps or actions you took that caused you to encounter the problem.
2. The behavior you expected and the location of documentation that led you to that expectation.
3. The behavior you actually encountered.

To demonstrate the issue in detail, please include Asterisk log files generated per the instructions on the wiki [2]. If applicable, please ensure that protocol-level trace debugging is enabled, e.g., 'sip set debug on' if the issue involves chan_sip, and configuration information such as dialplan and channel configuration.

Thanks!

[1] https://wiki.asterisk.org/wiki/display/AST/Asterisk+Issue+Guidelines

[2] https://wiki.asterisk.org/wiki/display/AST/Collecting+Debug+Information



By: Rusty Newton (rnewton) 2016-10-11 18:14:34.666-0500

Thank you for the crash report. However, we need more information to investigate the crash. Please provide:

1. A backtrace generated from a core dump using the instructions provided on the Asterisk wiki [1].
2. Specific steps taken that lead to the crash.
3. All configuration information necesary to reproduce the crash.

Thanks!

[1]: https://wiki.asterisk.org/wiki/display/AST/Getting+a+Backtrace



By: James Sharp (jpsharp) 2016-10-11 23:36:54.481-0500

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@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@entry=0x7fc26879ad98,
   swap=swap@entry=0x0, features=features@entry=0x7fc1b96d0608,
   tech_args=tech_args@entry=0x7fc1b96d0630, flags=flags@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@entry=0x7fc26879ad98, app=app@entry=0x24cbbd0,
   data=data@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.