[Home]

Summary:ASTERISK-13783: Using | symbol instead of ','s in call file causes segfault when using RetryDial
Reporter:Alexander Fisher (ajfisher)Labels:
Date Opened:2009-03-19 09:25:17Date Closed:2011-06-07 14:00:25
Priority:CriticalRegression?No
Status:Closed/CompleteComponents:Applications/app_dial
Versions:Frequency of
Occurrence
Related
Issues:
Environment:Attachments:( 0) 20090322__bug14704.diff.txt
Description:The following call file causes asterisk 1.6.0.6 to segfault.  NB. $NUMBER isn't really a variable.  I've just sanitized.  Platform is 32bit Centos 5.2, but I think that's irrelevant.

Channel: SIP/provider/$NUMBER
RetryTime: 5
MaxRetries: 5
Context: default
Application: RetryDial
Data: please-wait|5|5|SIP/provider/$NUMBER|60
Account: testAccount

Using commas works as expected, but a segfault is an over reaction! :)

****** ADDITIONAL INFORMATION ******

Program terminated with signal 11, Segmentation fault.
#0  0x00b3912b in ____strtol_l_internal () from /lib/libc.so.6
(gdb) bt
#0  0x00b3912b in ____strtol_l_internal () from /lib/libc.so.6
#1  0x00b38e8f in __strtol_internal () from /lib/libc.so.6
#2  0x00a5edd7 in retrydial_exec (chan=0x8acb2a0, data=0x8ad0af0) at /usr/include/stdlib.h:336
#3  0x080e6ea4 in pbx_exec (c=0x8acb2a0, app=0xb7c17fb8, data=0x8ad0af0) at pbx.c:942
#4  0x080ed41c in ast_pbx_run_app (data=0x8ad09f0) at pbx.c:7218
ASTERISK-1  0x080ed879 in ast_pbx_outgoing_app (type=0x8accc50 "SIP", format=64, data=0x8accd50, timeout=45000, app=0x8acce50 "RetryDial",
   appdata=0x8accf50 "please-wait|5|5|SIP/provider/$NUMBER|60", reason=0xb782b348, sync=2, cid_num=0x8acd0f4 "", cid_name=0x8acd1f4 "", vars=0x0,
   account=0x8acd2f4 "testAccount", locked_channel=0x0) at pbx.c:7263
ASTERISK-2  0x0074f458 in attempt_thread (data=0x8accb38) at pbx_spool.c:341
ASTERISK-3  0x081319cb in dummy_start (data=0x8acdfa0) at utils.c:861
ASTERISK-4  0x00c5645b in start_thread () from /lib/libpthread.so.0
ASTERISK-5  0x00bdce5e in clone () from /lib/libc.so.6
(gdb)

(gdb) bt full
#0  0x00b3912b in ____strtol_l_internal () from /lib/libc.so.6
No symbol table info available.
#1  0x00b38e8f in __strtol_internal () from /lib/libc.so.6
No symbol table info available.
#2  0x00a5edd7 in retrydial_exec (chan=0x8acb2a0, data=0x8ad0af0) at /usr/include/stdlib.h:336
       context = <value optimized out>
       sleep = <value optimized out>
       loops = <value optimized out>
       res = <value optimized out>
       peerflags = {flags = 0}
       args = {argc = 1, argv = 0xb782b1fc, announce = 0xb782b190 "please-wait|5|5|SIP/provider/$NUMBER|60", sleep = 0x0, retries = 0x0, dialdata = 0x0}
       __PRETTY_FUNCTION__ = "retrydial_exec"
#3  0x080e6ea4 in pbx_exec (c=0x8acb2a0, app=0xb7c17fb8, data=0x8ad0af0) at pbx.c:942
       res = <value optimized out>
       u = (struct ast_module_user *) 0x8acbd98
       saved_c_appl = 0x0
       saved_c_data = 0x0
#4  0x080ed41c in ast_pbx_run_app (data=0x8ad09f0) at pbx.c:7218
       app = (struct ast_app *) 0xb7c17fb8
       __PRETTY_FUNCTION__ = "ast_pbx_run_app"
ASTERISK-1  0x080ed879 in ast_pbx_outgoing_app (type=0x8accc50 "SIP", format=64, data=0x8accd50, timeout=45000, app=0x8acce50 "RetryDial",
   appdata=0x8accf50 "please-wait|5|5|SIP/provider/$NUMBER|60", reason=0xb782b348, sync=2, cid_num=0x8acd0f4 "", cid_name=0x8acd1f4 "", vars=0x0,
   account=0x8acd2f4 "testAccount", locked_channel=0x0) at pbx.c:7263
---Type <return> to continue, or q <return> to quit---
       chan = (struct ast_channel *) 0x8acb2a0
       res = <value optimized out>
       cdr_res = <value optimized out>
       oh = {context = 0x0, exten = 0x0, priority = 0, cid_num = 0x0, cid_name = 0x0, account = 0x8acd2f4 "testAccount", vars = 0x0, parent_channel = 0x0}
       __PRETTY_FUNCTION__ = "ast_pbx_outgoing_app"
       __func__ = "ast_pbx_outgoing_app"
ASTERISK-2  0x0074f458 in attempt_thread (data=0x8accb38) at pbx_spool.c:341
       o = <value optimized out>
       res = <value optimized out>
       reason = <value optimized out>
       __PRETTY_FUNCTION__ = "attempt_thread"
ASTERISK-3  0x081319cb in dummy_start (data=0x8acdfa0) at utils.c:861
       __cancel_buf = {__cancel_jmp_buf = {{__cancel_jmp_buf = {145467984, 0, -1216169072, -1216171080, -1910425315, 833655753}, __mask_was_saved = 0}},
 __pad = {0xb782b470, 0x0, 0xc64ff4, 0xc4aff4}}
       __cancel_arg = (void *) 0xb782bb90
       not_first_call = <value optimized out>
       ret = <value optimized out>
ASTERISK-4  0x00c5645b in start_thread () from /lib/libpthread.so.0
No symbol table info available.
ASTERISK-5  0x00bdce5e in clone () from /lib/libc.so.6
No symbol table info available.
Comments:By: Tilghman Lesher (tilghman) 2009-03-22 02:52:15

Patch uploaded and ready for testing.  In the future, please enable DONT_OPTIMIZE when reporting with a backtrace, as it makes figuring out where the problem actually lies much easier.

By: Tilghman Lesher (tilghman) 2009-03-26 17:41:29

Hello?  Testing?  Bueller?

By: Tilghman Lesher (tilghman) 2009-04-03 13:33:42

No response from reporter.