astobj2: assert on invalid ref and backtrace cleanup

If a reference count goes negative, instead of
just logging that fact, be more helpful with a
backtrace and an assert that will DO_CRASH.

This patch also removes the duplicate ao2_bt()
function and cleans up extraneous usage of the
ast_log_backtrace() call.

Review: https://reviewboard.asterisk.org/r/3765/



git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@418963 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Scott Griepentrog
2014-07-18 17:55:38 +00:00
parent f91989d44e
commit 0a99e4099b
5 changed files with 7 additions and 33 deletions

View File

@@ -1759,14 +1759,14 @@ void ast_log_backtrace(void)
}
if ((strings = ast_bt_get_symbols(bt->addresses, bt->num_frames))) {
ast_debug(1, "Got %d backtrace record%c\n", bt->num_frames, bt->num_frames != 1 ? 's' : ' ');
ast_verbose("Got %d backtrace record%c\n", bt->num_frames, bt->num_frames != 1 ? 's' : ' ');
for (i = 3; i < bt->num_frames - 2; i++) {
ast_debug(1, "#%d: [%p] %s\n", i - 3, bt->addresses[i], strings[i]);
ast_verbose("#%d: [%p] %s\n", i - 3, bt->addresses[i], strings[i]);
}
ast_std_free(strings);
} else {
ast_debug(1, "Could not allocate memory for backtrace\n");
ast_verbose("Could not allocate memory for backtrace\n");
}
ast_bt_destroy(bt);
#else