[Home]

Summary:ASTERISK-07641: Mixmonitor crashes as soon as it is invoked
Reporter:jmls (jmls)Labels:
Date Opened:2006-08-31 14:30:09Date Closed:2006-09-03 12:22:56
Priority:CriticalRegression?No
Status:Closed/CompleteComponents:Applications/app_mixmonitor
Versions:Frequency of
Occurrence
Related
Issues:
Environment:Attachments:( 0) btfull-20060831-2025.txt
Description:With the following dialplan, Mixmonitor crashes asterisk

exten => 7704,1,Answer()
exten => 7704,n,MixMonitor(${UNIQUEID}.gsm)
exten => 7704,n,SayDigits(123)
exten => 7704,n,Hangup()

I get as far as "one" before * dies.

bt full attached
Comments:By: jmls (jmls) 2006-08-31 14:31:20

damn damn damn - didn't get to change the version before my fat gingers hit the button.

It's svn trunk r41611. Sorry.

By: Anthony LaMantia (alamantia) 2006-08-31 15:45:24

ok closing this issue.

By: Jason Parker (jparker) 2006-09-01 02:31:29

Reopened per request on asterisk-dev mailing list.

By: Anthony LaMantia (alamantia) 2006-09-01 10:03:33

I have not been able to reproduce the problem on my system, which is running the latest trunk,
is this crash happening for you each time MixMonitor() is invoked or only with the dialplan excerpt above

if you have any more information that can assist in debugging this issue it would be appreciated

By: jmls (jmls) 2006-09-01 10:17:28

I am running on SVN-trunk-r41651, with NO OPTIMIZATIONS set in compiler options.

With this dialplan:

exten => 7704,1,Answer()
exten => 7704,n,MixMonitor(${UNIQUEID}.gsm)
exten => 7704,n,Wait(5)
exten => 7704,n,Hangup()

asterisk does *not* crash

With this dialplan:

exten => 7704,1,Answer()
exten => 7704,n,MixMonitor(${UNIQUEID}.gsm)
exten => 7704,n,Playback(vm-review)
exten => 7704,n,Hangup()

asterisk *does* crash

By: Joshua C. Colp (jcolp) 2006-09-01 10:51:37

I was unable to reproduce this issue as well on my own system, quite interesting.

By: jmls (jmls) 2006-09-01 11:07:23

this is installed on a test rig, a dell 2850 with 2GB ram and 2x3 ghz processors with 2x73Gb hw raid 1 disks, 2 builtin network cards and a remote access card.

And no users except me ;)

I've just checked, and I think that HT was enabled (Logical processor=>Yes). I've disabled that, will recompile and post the results.

By: jmls (jmls) 2006-09-01 11:15:48

Hmm. also had selinux enabled. Disabling that and rebooting before i do anything else.

By: jmls (jmls) 2006-09-01 11:27:53

nope. HT turned off, selinux turned off. recompiled with trunk SVN-trunk-r41689.

-- Executing [7704@from-sip:1] Answer("SIP/7708-085a0cb0", "") in new stack
   -- Executing [7704@from-sip:2] MixMonitor("SIP/7708-085a0cb0", "1157123710.0.gsm") in new stack
   -- Executing [7704@from-sip:3] Playback("SIP/7708-085a0cb0", "vm-review") in new stack
 == Begin MixMonitor Recording SIP/7708-085a0cb0
   -- Playing 'vm-review' (language 'en')
quebec*CLI>
Disconnected from Asterisk server
/usr/sbin/safe_asterisk: line 110: 11867 Segmentation fault      (core dumped) nice -n $PRIORITY ${ASTSBINDIR}/asterisk ${CLIARGS} ${ASTARGS} >&/dev/${TTY} </dev/${TTY}
Asterisk ended with exit status 139
Asterisk exited on signal 11.
Automatically restarting Asterisk.

By: jmls (jmls) 2006-09-01 11:59:02

I've compared the latest cores, and they both match up to the bt full that I attached to this report. Channel.c at line 4210, on all three

(gdb) bt full
#0  0x08082a42 in ast_channel_spy_read_frame (spy=0x9e66568, samples=160) at channel.c:4210
       result = (struct ast_frame *) 0x0
       read_buf = {-2, 6}
       write_buf = {5, 13}
       read_frame = (struct ast_frame *) 0x32
       write_frame = (struct ast_frame *) 0x56272
       need_dup = 1157125252
       stack_read_frame = {frametype = AST_FRAME_VOICE, subclass = 64, datalen = 320, samples = 160, mallocd = 0,
 mallocd_hdr_len = 0, offset = 0, src = 0x0, data = 0xb77c8170, delivery = {tv_sec = 0, tv_usec = 0}, frame_list = {
   next = 0x0}, has_timing_info = 0, ts = 0, len = 0, seqno = 0}
       stack_write_frame = {frametype = AST_FRAME_VOICE, subclass = 64, datalen = 320, samples = 160, mallocd = 0,
 mallocd_hdr_len = 0, offset = 0, src = 0x0, data = 0xb77c8020, delivery = {tv_sec = 0, tv_usec = 0}, frame_list = {
   next = 0x0}, has_timing_info = 0, ts = 0, len = 0, seqno = 0}
#1  0x003f8684 in mixmonitor_thread (obj=0x9e66568) at app_mixmonitor.c:184
       next = (struct ast_frame *) 0x0
       write = 1
       mixmonitor = (struct mixmonitor *) 0x9e66568
       f = (struct ast_frame *) 0x0
#2  0x080e5e5b in dummy_start (data=0x9e61700) at utils.c:538
       _buffer = {__routine = 0x8067a09 <ast_unregister_thread>, __arg = 0xb77c8bb0, __canceltype = 0, __prev = 0x0}
       ret = (void *) 0x0
       a = {start_routine = 0x3f85ec <mixmonitor_thread>, data = 0x9e66568,
 name = 0x9e613a8 "mixmonitor_thread    started at [  315] app_mixmonitor.c launch_monitor_thread()"}
######################
(gdb) bt full
#0  0x08082a42 in ast_channel_spy_read_frame (spy=0x9dc7fa0, samples=160) at channel.c:4210
       result = (struct ast_frame *) 0x0
       read_buf = {40, 45}
       write_buf = {47, 32}
       read_frame = (struct ast_frame *) 0x32
       write_frame = (struct ast_frame *) 0x72e7
       need_dup = 1157125224
       stack_read_frame = {frametype = AST_FRAME_VOICE, subclass = 64, datalen = 320, samples = 160, mallocd = 0,
 mallocd_hdr_len = 0, offset = 0, src = 0x0, data = 0xb7679170, delivery = {tv_sec = 0, tv_usec = 0}, frame_list = {
   next = 0x0}, has_timing_info = 0, ts = 0, len = 0, seqno = 0}
       stack_write_frame = {frametype = AST_FRAME_VOICE, subclass = 64, datalen = 320, samples = 160, mallocd = 0,
 mallocd_hdr_len = 0, offset = 0, src = 0x0, data = 0xb7679020, delivery = {tv_sec = 0, tv_usec = 0}, frame_list = {
   next = 0x0}, has_timing_info = 0, ts = 0, len = 0, seqno = 0}
#1  0x00451684 in mixmonitor_thread (obj=0x9dc7fa0) at app_mixmonitor.c:184
       next = (struct ast_frame *) 0x0
       write = 1
       mixmonitor = (struct mixmonitor *) 0x9dc7fa0
       f = (struct ast_frame *) 0x0
#2  0x080e5e5b in dummy_start (data=0x9dbb670) at utils.c:538
       _buffer = {__routine = 0x8067a09 <ast_unregister_thread>, __arg = 0xb7679bb0, __canceltype = 0, __prev = 0x0}
       ret = (void *) 0x8e166c
       a = {start_routine = 0x4515ec <mixmonitor_thread>, data = 0x9dc7fa0,
 name = 0x9dc82b8 "mixmonitor_thread    started at [  315] app_mixmonitor.c launch_monitor_thread()"}

By: Joshua C. Colp (jcolp) 2006-09-03 12:22:55

Fixed in trunk as of revision 41864.