[Home]

Summary:ASTERISK-25723: crash on dial with option p or P (privacy mode)
Reporter:Tzafrir Cohen (tzafrir)Labels:
Date Opened:2016-01-24 11:47:22.000-0600Date Closed:2016-01-24 11:51:44.000-0600
Priority:MajorRegression?
Status:Closed/CompleteComponents:Applications/app_dial
Versions:13.6.0 13.7.0 Frequency of
Occurrence
Related
Issues:
duplicatesASTERISK-25691 Crash occurs when screening mode (Dial's 'p' argument) is enabled and callee rejects a call or hangs up.
Environment:Tested on Centos 7 with Asterisk 13.6 and on Debian Testing with 13.7.0-rc2 and git branch 13 (fcb6c1737d586d5e574d3c2f865157a9632979a7).Attachments:
Description:I use default settings (as far as I can tell) and the following dialplan:

In order to reproduce I need to call from one extension to another and in the target extension either reject (press 2 or whatever) or just wait for a timeout.

At this point Asterisk crashes.

{code}
[test]
exten => 1000,1,Dial(SIP/1000,30,p)
exten => 1001,1,Dial(SIP/1001,30,p)
; For times where I don't have an extra phone:
exten => 1002,1,Dial(Local/test@test,30,p)
exten => test,1,Answer
same => n,Echo
{code}

Trace:

{code}
*CLI>     -- <Local/test@test-00000000;1> Playing 'vm-sorry.gsm' (language 'en')
   -- <Local/test@test-00000000;1> Playing 'priv-callpending.gsm' (language 'en')                                                                              
   -- <Local/test@test-00000000;1> Playing 'priv-callerintros/1001.slin' (language 'en')                                                                      
   -- <Local/test@test-00000000;1> Playing 'screen-callee-options.gsm' (language 'en')                                                                        
   -- <Local/test@test-00000000;1> Playing 'vm-sorry.gsm' (language 'en')      
   -- <Local/test@test-00000000;1> Playing 'priv-callpending.gsm' (language 'en')                                                                              
   -- <Local/test@test-00000000;1> Playing 'priv-callerintros/1001.slin' (language 'en')                                                                      
   -- <Local/test@test-00000000;1> Playing 'screen-callee-options.gsm' (language 'en')                                                                        
   -- <Local/test@test-00000000;1> Playing 'vm-sorry.gsm' (language 'en')      
[Jan 24 18:41:31] NOTICE[13875][C-00000000]: app_dial.c:1855 do_privacy: privacy: no valid response from the callee. Sending the caller to voicemail, the callee isn't responding                                                              
 == Spawn extension (test, test, 2) exited non-zero on 'Local/test@test-00000000;2'                                                                            
*** Error in `/home/tzafrir/Proj/Alioth/pkg-voip-git/asterisk/asterisk/live/usr/sbin/asterisk': free(): invalid size: 0x00007efe30003d70 ***                    
Aborted (core dumped)                                                          
{code}

Backtrace (From Git branch 13 on Debian):
{code}
#0  0x00007fb66f3d9657 in __GI_raise (sig=sig@entry=6)
   at ../sysdeps/unix/sysv/linux/raise.c:55
#1  0x00007fb66f3daa2a in __GI_abort () at abort.c:89
#2  0x00007fb66f417bb3 in __libc_message (do_abort=do_abort@entry=1,
   fmt=fmt@entry=0x7fb66f5105f8 "*** Error in `%s': %s: 0x%s ***\n")
   at ../sysdeps/posix/libc_fatal.c:175
#3  0x00007fb66f41d00e in malloc_printerr (action=1,
   str=0x7fb66f50c787 "free(): invalid pointer", ptr=<optimized out>)
   at malloc.c:4965
#4  0x00007fb66f41d7eb in _int_free (av=<optimized out>, p=<optimized out>,
   have_lock=0) at malloc.c:3834
#5  0x00000000004e6db1 in ast_datastore_free (
   datastore=datastore@entry=0x7fb64800a9e0) at datastore.c:77
#6  0x00000000005b5c1b in remove_dial_masquerade (peer=0x7fb648003938)
   at stasis_channels.c:1708
#7  ast_channel_publish_dial_forward (forwarded=0x0, forward=0x0,
   dialstatus=0x7fb5eb028638 "ANSWER", dialstring=0x0, peer=0x7fb648003938,
   caller=<optimized out>) at stasis_channels.c:404
#8  ast_channel_publish_dial (caller=caller@entry=0x7fb64400a3d8,
   peer=peer@entry=0x7fb648003938, dialstring=dialstring@entry=0x0,
   dialstatus=dialstatus@entry=0x7fb5eb028638 "ANSWER")
   at stasis_channels.c:424
#9  0x00007fb615530215 in dial_exec_full (chan=0x7fb64400a3d8,
   data=<optimized out>, peerflags=peerflags@entry=0x7fb5eb028780,
   continue_exec=continue_exec@entry=0x0) at app_dial.c:2730
#10 0x00007fb615530d26 in dial_exec (chan=<optimized out>,
   data=<optimized out>) at app_dial.c:3138
#11 0x000000000056fb5d in pbx_exec (c=c@entry=0x7fb64400a3d8,
   app=app@entry=0x2137f80,
   data=data@entry=0x7fb5eb028c50 "Local/test@test,30,p") at pbx_app.c:485
#12 0x0000000000564b16 in pbx_extension_helper (c=c@entry=0x7fb64400a3d8,
   context=0x7fb64400ad90 "test", exten=exten@entry=0x7fb64400ade0 "1002",
   priority=priority@entry=1, label=label@entry=0x0,
   callerid=callerid@entry=0x7fb64400bd90 "1001", action=E_SPAWN,
   found=0x7fb5eb02acec, combined_find_spawn=1, con=0x0) at pbx.c:2834
#13 0x0000000000566f71 in ast_spawn_extension (combined_find_spawn=1,
   found=0x7fb5eb02acec, callerid=0x7fb64400bd90 "1001", priority=1,
   exten=0x7fb64400ade0 "1002", context=<optimized out>, c=0x7fb64400a3d8)
   at pbx.c:4056
#14 __ast_pbx_run (c=c@entry=0x7fb64400a3d8, args=args@entry=0x0) at pbx.c:4231
#15 0x000000000056844b in pbx_thread (data=data@entry=0x7fb64400a3d8)
   at pbx.c:4551
#16 0x00000000005d552a in dummy_start (data=<optimized out>) at utils.c:1237
#17 0x00007fb67044c284 in start_thread (arg=0x7fb5eb02b700)
   at pthread_create.c:333
#18 0x00007fb66f48e74d in clone ()
   at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

(gdb) frame 5
#5  0x00000000004e6db1 in ast_datastore_free (
   datastore=datastore@entry=0x7fb64800a9e0) at datastore.c:77
77                      ast_free((void *) datastore->uid);
(gdb) print datastore->uid
$1 = 0x7fb648000920 ""
{code}
Comments:By: Asterisk Team (asteriskteam) 2016-01-24 11:47:24.081-0600

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].