[Home]

Summary:ASTERISK-20433: Asterisk exceeds allowed stack during RTCP read on openwrt with uclibc / eglibc during feature code blind transfer and LOW_MEMORY option
Reporter:sun bing (hoowa)Labels:
Date Opened:2012-09-16 07:08:07Date Closed:2018-01-02 08:30:32.000-0600
Priority:MajorRegression?
Status:Closed/CompleteComponents:Resources/res_features Resources/res_rtp_asterisk
Versions:1.8.10.1 Frequency of
Occurrence
Constant
Related
Issues:
Environment:test1: openwrt r33444, ramips, kernel 3.3.8, uclibc 0.9.33.2, asterisk-1.8.10.1 test2: openwrt r33444, x86(virtualbox), kernel 3.3.8, eglibc 2.1.5, asterisk-1.8.10.1 test3: openwrt r33444, ramips, kernel 3.3.8, uclibc 0.9.33.2, asterisk-1.8.15.1 test4: openwrt r33444, ramips, kernel 2.6.35, uclibc 0.9.33.2, asterisk-1.8.4.4 test5: openwrt 10.3.1, brcm63xx, kernel 2.6.32.10, uclibc 0.9.30.1, asterisk-1.6.2Attachments:( 0) backtrace_fromdesc.txt
( 1) backtrace.txt
Description:sip.conf:
[8001]
type=friend
secret=123456
host=dynamic
context=default

[8002]
type=friend
secret=123456
host=dynamic
context=default

extensions.conf
exten => _8X.,1,dial(SIP/${EXTEN},40,Tt)

test follow:
make call from 8001 to 8002, after answer, press # to blind transfer, system will segementation fault after playback.

test result:
test1 segementation fault
test2 segementation fault
test3 segementation fault
test4 segementation fault
test5 works fine!!! not segfault!!!

background information: in uclibc 0.9.33.2 has an NTPL implement



i test with gdb in test2(x86):
Unknown RTP codec 126 received from '172.16.0.99:49580'
Unknown RTP codec 126 received from '172.16.0.99:49580'
Unknown RTP codec 126 received from '172.16.0.99:49580'
DTMF begin '#' received on SIP/8002-00000001
DTMF begin passthrough '#' on SIP/8002-00000001
DTMF end '#' received on SIP/8002-00000001, duration 120 ms
DTMF end accepted with begin '#' on SIP/8002-00000001
DTMF end passthrough '#' on SIP/8002-00000001
   -- Started music on hold, class 'default', on SIP/8001-00000000
   -- Stopped music on hold on SIP/8002-00000001
   -- <SIP/8002-00000001> Playing 'pbx-transfer.alaw' (language 'en')
[New LWP 14314]


Comments:By: sun bing (hoowa) 2012-09-16 07:16:36.302-0500

IAX client with features blind transfer works fine on any test, because  iax2 does not use res_rtp_asterisk?????

By: Richard Mudgett (rmudgett) 2012-09-17 12:12:27.620-0500

Thank you for your bug report. In order to move your issue forward, we require a backtrace[1] from the core file produced after the crash. Also, be sure you have DONT_OPTIMIZE enabled in menuselect within the Compiler Flags section, then:

make install

After enabling, reproduce the crash, and then execute the backtrace[1] instructions. When complete, attach that file to this issue report.

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

The backtrace that you have pasted to the issue is showing an optimized build with no symbols.  Please recreate the crash with a non-optimized build.

By: Rusty Newton (rnewton) 2012-09-17 13:48:47.465-0500

Additionally to rmudgett's comment, please remember to attach the backtrace as a file , per the [issue guidelines|https://wiki.asterisk.org/wiki/display/AST/Asterisk+Issue+Guidelines]

By: sun bing (hoowa) 2012-09-18 10:00:08.563-0500

hi guys, to enable backtrace i am working all days, very hard to get it, but i was done :-)

i run this command to get this file:
{
root@OpenWrt:/tmp# gdb -se "/usr/sbin/asterisk" -ex "bt full" -ex "thread apply all bt" --batch -c asterisk.1533.11.1347979943.core > backtrace.txt
95      /ssd/agliepbx/wrtt17-2/build_dir/target-i386_uClibc-0.9.33.2/asterisk-1.8.10.1/include/asterisk/netsock2.h: No such file or directory.
Cannot access memory at address 0xb69adb3c
root@OpenWrt:/tmp#
}

test box enviroments:
building host :  centos 6.2 i386
system: openwrt trunk r33444
target: x86 i486
runenv: virtualbox
gcc: 4.6-linaro
libc: uclibc-0.9.33.2 with uclibc native thread
asterisk: 1.8.10.1


client:
eyebeam 1.5

sip:
8001-->8002 and press # to blind transfer



By: sun bing (hoowa) 2012-09-18 10:01:34.419-0500

i was attached backtrace.txt

By: Rusty Newton (rnewton) 2012-09-19 19:52:44.385-0500

removed segfault spill from desc and added as an attachment

By: sun bing (hoowa) 2012-11-24 05:35:31.011-0600

hello guys.

i am try to complie asterisk without "LOW_MEMORY" and asterisk works fine!!!!!!!!!!!

By: sun bing (hoowa) 2013-01-31 23:51:36.269-0600

i found way to fix the bug

By: sun bing (hoowa) 2013-01-31 23:55:07.552-0600

[edit] - inline patch removed by mjordan (see comment below)

By: Matt Jordan (mjordan) 2013-02-01 03:58:50.883-0600

Patches cannot be accepted inline in comments.

Please attach your patch in unified diff format to this issue after signing a license contributor agreement. Thanks!

By: sun bing (hoowa) 2013-02-01 06:47:43.274-0600

please tell me where i can know "unified diff format"?
and "signing a license contributor agreement"?

thank you

By: Matt Jordan (mjordan) 2013-02-01 10:41:34.955-0600

* [Unified diff format|http://en.wikipedia.org/wiki/Diff#Unified_format]
* The license contributor agreement can be signed by clicking the "Sign a License Agreement" button in Jira.

By: Joshua C. Colp (jcolp) 2017-12-19 07:57:41.483-0600

Did you do as Matt asked in regards to submitting a change?

By: Asterisk Team (asteriskteam) 2018-01-02 08:30:33.019-0600

Suspended due to lack of activity. This issue will be automatically re-opened if the reporter posts a comment. If you are not the reporter and would like this re-opened please create a new issue instead. If the new issue is related to this one a link will be created during the triage process. Further information on issue tracker usage can be found in the Asterisk Issue Guidlines [1].
[1] https://wiki.asterisk.org/wiki/display/AST/Asterisk+Issue+Guidelines