[Home]

Summary:ASTERISK-03426: Crash on iax call to empty queue (probable cause is moh)
Reporter:rrozman (rrozman)Labels:
Date Opened:2005-02-03 06:08:29.000-0600Date Closed:2005-02-06 22:06:39.000-0600
Priority:CriticalRegression?No
Status:Closed/CompleteComponents:Core/General
Versions:Frequency of
Occurrence
Related
Issues:
Environment:Attachments:
Description:I've spotted weird crash of Asterisk cvs Stable. I have defined queue in queue.conf. then I have in dialplan :
exten => 51,1,Queue(prodaja)
Now when I call 51 from BT100, everything is OK, musiconhold plays, I hear
announcements. But asterisk constantly crashes with IAX clients calling this number (same
with Firefly, iaxcommclient, Iaxphone).
Also to notice, that moh plays ok in other situations from iax clients
(hold, transfer, conference).




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

queues.conf :

[prodaja]
music = default
announce = queue-markq
strategy = ringall
context = from-pstn
timeout = 15
retry = 5
maxlen = 0
announce-holdtime = no
announce-frequency = 30
announce-holdtime = yes
monitor-format = gsm|wav|wav49
monitor-join = yes
eventwhencalled = yes
member => Agent/1000
-------------------------------------------
Now when I call 51 from BT100, everything is OK, musiconhold plays, I hear
announcements...:

----------------------------------------------------------------------------
----
Asterisk CVS-v1-0-01/28/05-15:21:35, Copyright (C) 1999-2004 Digium.
Written by Mark Spencer <markster@digium.com>
=========================================================================
Connected to Asterisk CVS-v1-0-01/28/05-15:21:35 currently running on
centrala (pid = 28749)
   -- Remote UNIX connection
Verbosity was 3 and is now 11
centrala*CLI> MANAGER LOGIN MD5 127.0.0.1, admin, amp111
 == Parsing '/etc/asterisk/manager.conf': Found
 == Manager 'admin' logged on from 127.0.0.1
   -- Executing Queue("SIP/201-ec33", "prodaja") in new stack
   -- Started music on hold, class 'default', on SIP/201-ec33
   -- Stopped music on hold on SIP/201-ec33
   -- Playing 'queue-youarenext' (language 'si')
   -- Told SIP/201-ec33 in prodaja their queue position (which was 1)
   -- Playing 'queue-thankyou' (language 'si')
   -- Started music on hold, class 'default', on SIP/201-ec33
   -- Saved useragent "Grandstream BT100 1.0.5.18" for peer 201
   -- Stopped music on hold on SIP/201-ec33
   -- User disconnected when they almost made it
 == Spawn extension (from-internal, 51, 1) exited non-zero on
'SIP/201-ec33'
   -- Executing Macro("SIP/201-ec33", "hangupcall") in new stack
   -- Executing ResetCDR("SIP/201-ec33", "w") in new stack
   -- Executing NoCDR("SIP/201-ec33", "") in new stack
   -- Executing Wait("SIP/201-ec33", "5") in new stack
 == Spawn extension (macro-hangupcall, s, 3) exited non-zero on
'SIP/201-ec33' in macro 'hangupcall'
 == Spawn extension (from-internal, h, 1) exited non-zero on 'SIP/201-ec33'
centrala*CLI>
centrala:~ #
-------------------------------------------------------------

But asterisk constantly crashes with IAX clients calling this number (same
with Firefly, iaxcommclient, Iaxphone), I get:

------------------------------------------------------------
centrala:~ # asterisk -vvvvvvvvvvvrgc
 == Parsing '/etc/asterisk/asterisk.conf': Found
 == Parsing '/etc/asterisk/extconfig.conf': Found
Asterisk CVS-v1-0-01/28/05-15:21:35, Copyright (C) 1999-2004 Digium.
Written by Mark Spencer <markster@digium.com>
=========================================================================
Connected to Asterisk CVS-v1-0-01/28/05-15:21:35 currently running on
centrala (pid = 27854)
Verbosity was 3 and is now 11
   -- Accepting AUTHENTICATED call from 192.168.0.101, requested format =
1024, actual format = 8
   -- Executing Queue("IAX2/200@200/2", "prodaja") in new stack
centrala*CLI>
Disconnected from Asterisk server
/usr/sbin/safe_asterisk: line 40: 27854 Floating point exception(core
dumped) asterisk ${CLIARGS} ${ASTARGS} >&/dev/${TTY} </dev/${TTY}
Executing last minute cleanups
Asterisk ended with exit status 136
Asterisk exited on signal 8.
Automatically restarting Asterisk.
Asterisk cleanly ending (0).
----------------------------------------------------------------------
Comments:By: Brian West (bkw918) 2005-02-03 06:14:42.000-0600

what makes you think its moh why not do a backtrace on the core and get the real problem.  This could be hardware or memory issues but can't really tell till we get a real backtrace from you.

gdb /usr/sbin/asterisk core.pid  (should be in /tmp)

then "bt full"  attach the output of that and we'll see what is really up.

bkw

By: Brian West (bkw918) 2005-02-03 06:15:00.000-0600

by chance are you using format_mp3?

By: Brian West (bkw918) 2005-02-03 06:18:14.000-0600

Also post details about your platform (cpu and all that mess)

bkw

By: rrozman (rrozman) 2005-02-03 07:06:56.000-0600

Hi,

I cannot reproduce it anymore. now it just crashes
   -- Accepting AUTHENTICATED call from 193.77.90.224, requested format = 2, actual format = 2
   -- Executing GotoIf("IAX2/200@200/3", "1?2:4") in new stack
   -- Goto (from-internal,59,2)
   -- Executing Queue("IAX2/200@200/3", "podpora") in new stack
Ouch ... error while writing audio data: : Broken pipe
Ouch ... error while writing audio data: : Broken pipe
Junk at the beginning 49443303
Warning, flexibel rate not heavily tested!
Junk at the beginning 49443303
Warning, flexibel rate not heavily tested!
Floating point exception
asterisk@centrala:/home/marko> amportal start

and doesn't generate core.pid file. But did analyze older cores (10 of them) as bkw918 suggested and they all show:

#0  0x42bc7668 in calc_timestamp (p=0x810dc48, ts=Variable "ts" is not available.
) at chan_iax2.c:2896
2896                                    int diff = ms % (f->samples / 8);
(gdb) bt full
#0  0x42bc7668 in calc_timestamp (p=0x810dc48, ts=Variable "ts" is not available.
) at chan_iax2.c:2896
       tv = {tv_sec = 1107306826, tv_usec = 217991}
       ms = 17
       voice = 1
       genuine = 0
       delivery = (struct timeval *) 0x43e901a0
#1  0x42bc9377 in iax2_send (pvt=0x810dc48, f=0x43e90180, ts=Variable "ts" is not available.
)
   at chan_iax2.c:3091
       fh = Variable "fh" is not available.
(gdb)



Hope this will help,

regards,

Rob.

By: Kevin P. Fleming (kpfleming) 2005-02-03 09:31:12.000-0600

I thought the fix for this IAX samples computation bug already went into CVS (both HEAD and stable)...

By: Mark Spencer (markster) 2005-02-03 13:08:19.000-0600

This bug has already been fixed in CVS head.

By: Russell Bryant (russell) 2005-02-06 22:06:39.000-0600

fixed in 1.0