summaryrefslogtreecommitdiff
path: root/main/utils.c
diff options
context:
space:
mode:
authorRichard Mudgett <rmudgett@digium.com>2014-04-04 17:57:46 +0000
committerRichard Mudgett <rmudgett@digium.com>2014-04-04 17:57:46 +0000
commit9be438299d47e71a36d252ea55d5432ac751504f (patch)
tree2a59d59bca780d66e241901f477c630a17ded9b2 /main/utils.c
parent73f337d97be6600f283a6149a7dfd107fb3a66e3 (diff)
Add some asserts that were handy when looking for a stasis cache problem.
* Assert if a channel is destroyed but has the snapshot staging flag set. In this case the final channel destruction snapshot would never get taken. * Assert if what we just got out of the stasis cache is not what we were looking for. This assert would have saved several days searching for a bug and a lot of my hair. * Assert if the music on hold message posts could not find the associated channel. A crash will happen later when manager tries to send the MOH AMI message. This assert catches the problem when the stasis message is posted instead of by the thread processing the defective message. * Always generate a backtrace when an ast_assert() fails. Review: https://reviewboard.asterisk.org/r/3411/ ........ Merged revisions 411701 from http://svn.asterisk.org/svn/asterisk/branches/12 git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@411702 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'main/utils.c')
-rw-r--r--main/utils.c5
1 files changed, 5 insertions, 0 deletions
diff --git a/main/utils.c b/main/utils.c
index 3d8e4c261..c3bf5d032 100644
--- a/main/utils.c
+++ b/main/utils.c
@@ -52,6 +52,7 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#include "asterisk/sha1.h"
#include "asterisk/cli.h"
#include "asterisk/linkedlists.h"
+#include "asterisk/astobj2.h"
#define AST_API_MODULE /* ensure that inlinable API functions will be built in this module if required */
#include "asterisk/strings.h"
@@ -2523,6 +2524,10 @@ void __ast_assert_failed(int condition, const char *condition_str, const char *f
condition_str, condition);
fprintf(stderr, "FRACK!, Failed assertion %s (%d) at line %d in %s of %s\n",
condition_str, condition, line, function, file);
+
+ /* Generate a backtrace for the assert */
+ ao2_bt();
+
/*
* Give the logger a chance to get the message out, just in case
* we abort(), or Asterisk crashes due to whatever problem just