[Home]

Summary:ASTERISK-13719: "ael reload" crashes Asterisk every time
Reporter:Tobias Ã…hlander (tobiasa)Labels:
Date Opened:2009-03-10 04:05:20Date Closed:2011-06-07 14:00:26
Priority:CriticalRegression?No
Status:Closed/CompleteComponents:PBX/pbx_ael
Versions:Frequency of
Occurrence
Related
Issues:
Environment:Attachments:( 0) gdb.txt
Description:I have this strange problem whenever I try to make an "ael reload" from the Asterisk CLI. The command gives the following result and crashes:

voip-1*CLI> ael reload
Disconnected from Asterisk server
Executing last minute cleanups
Asterisk ending (0).
root@voip-1:/etc/asterisk#

As far as I can see, aelparse can't find any errors in my configuration, following output is from aelparse:

root@voip-1:/etc/asterisk# aelparse -n -q
LOG: lev:4 file:ael2_parse  line:543 func: main  29 contexts, 18 extensions, 532 priorities
root@voip-1:/etc/asterisk#

I've narrowed the error down to three contexts with a bunch of ifTime()-statements. If I delete or make the following contexts empty "ael reload" works just like it should.

I'm running Asterisk 1.4.22, but I've tried 1.4.23.1 and 1.4 SVN and seen the same behaviour in that. 1.6 SVN doesn't seem to have this issue.

Also, if I connect to the console (asterisk -vvvvvc) in any of the 1.4 versions and do an "ael reload", it works, so it seems to only be on "remote" connections (asterisk -vvvvvr)

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

context contexta {

 _X. => {
   NoOp(Check where to send the call);
   ifTime(0:00-4:59|mon-fri|*|*) {
     Playback(prompts/SwitchClosedRT_);
   } else ifTime(5:00-6:29|mon-fri|*|*) {
     jump ${EXTEN}@context1;
   } else ifTime(6:30-18:59|mon-thu|*|*) {
     jump ${EXTEN}@context2;
   } else ifTime(6:30-21:59|fri|*|*) {
     jump ${EXTEN}@context2;
   } else ifTime(19:00-23:59|mon-thu|*|*) {
     jump ${EXTEN}@context1;
   } else ifTime(22:00-23:59|fri|*|*) {
     jump ${EXTEN}@context1;
   } else ifTime(0:00-9:59|sat|*|*) {
     jump ${EXTEN}@context1;
   } else ifTime(10:00-21:59|sat|*|*) {
     jump ${EXTEN}@context2;
   } else ifTime(22:00-23:59|sat|*|*) {
     jump ${EXTEN}@context1;
   } else ifTime(0:00-9:59|sun|*|*) {
     jump ${EXTEN}@context1;
   } else ifTime(10:00-18:59|sun|*|*) {
     jump ${EXTEN}@context2;
   } else ifTime(19:00-23:59|sun|*|*) {
     jump ${EXTEN}@context1;
   } else {
     NoOp(something's wrong);
   }
 }

}

context contextb {

 _X. => {
   NoOp(Check where to send the call);
   ifTime(0:00-6:29|mon-fri|*|*) {
     Playback(prompts/SwitchClosed_);
     VoiceMail(1000|s);
   } else ifTime(6:30-17:59|mon-fri|*|*) {
     jump ${EXTEN}@context2;
   } else ifTime(18:00-23:59|mon-fri|*|*) {
     Playback(prompts/SwitchClosed_);
     VoiceMail(1000|s);
   } else ifTime(0:00-23:59|sat|*|*) {
     Playback(prompts/SwitchClosed_);
     VoiceMail(1000|s);
   } else ifTime(0:00-9:59|sun|*|*) {
     Playback(prompts/SwitchClosed_);
     VoiceMail(1000|s);
   } else ifTime(10:00-17:59|sun|*|*) {
     jump ${EXTEN}@context2;
   } else ifTime(18:00-23:59|sun|*|*) {
     Playback(prompts/SwitchClosed_);
     VoiceMail(1000|s);
   } else {
     NoOp(something's wrong);
   }
 }

}

context contextc {

 _X. => {
   NoOp(Check where to send the call);
   ifTime(0:00-6:29|mon-thu|*|*) {
     Playback(prompts/SwitchClosed_);
     VoiceMail(1000|s);
   } else ifTime(6:30-18:59|mon-thu|*|*) {
     jump ${EXTEN}@context2;
   } else ifTime(19:00-23:59|mon-thu|*|*) {
     Playback(prompts/SwitchClosed_);
     VoiceMail(1000|s);
   } else ifTime(0:00-6:29|fri|*|*) {
     Playback(prompts/SwitchClosed_);
     VoiceMail(1000|s);
   } else ifTime(6:30-21:59|fri|*|*) {
     jump ${EXTEN}@context2;
   } else ifTime(22:00-23:59|fri|*|*) {
     Playback(prompts/SwitchClosed_);
     VoiceMail(1000|s);
   } else ifTime(0:00-9:59|sat|*|*) {
     Playback(prompts/SwitchClosed_);
     VoiceMail(1000|s);
   } else ifTime(10:00-21:59|sat|*|*) {
     jump ${EXTEN}@context2;
   } else ifTime(22:00-23:59|sat|*|*) {
     Playback(prompts/SwitchClosed_);
     VoiceMail(1000|s);
   } else ifTime(0:00-9:59|sun|*|*) {
     Playback(prompts/SwitchClosed_);
     VoiceMail(1000|s);
   } else ifTime(10:00-18:59|sun|*|*) {
     jump ${EXTEN}@context2;
   } else ifTime(19:00-23:59|sun|*|*) {
     Playback(prompts/SwitchClosed_);
     VoiceMail(1000|s);
   } else {
     NoOp(something's wrong);
   }
 }

}
Comments:By: Joshua C. Colp (jcolp) 2009-03-12 09:07:31

I have tried to reproduce this but failed. Can you please get a backtrace of the crash by following the instructions in doc/backtrace.txt? Thanks.

By: Tobias Ã…hlander (tobiasa) 2009-03-13 02:43:06

I've attached the gdb.txt from gdb output. Hope it helps :)

Thanks

By: Leif Madsen (lmadsen) 2009-04-09 11:58:26

Looks like the backtrace doesn't have DONT_OPTIMIZE enabled. Can you enable DONT_OPTIMIZE in the Compiler Flags of menuselect, then 'make install' Asterisk, and reproduce the issue? Then attach the backtrace as a file to this issue.
thanks!

By: Leif Madsen (lmadsen) 2009-06-10 12:40:32

Closed due to lack of response from the reporter. If you can provide the requested information, please reopen this issue and attach the information. Thanks!