[asterisk-commits] dlee: branch dlee/ASTERISK-22455-deadlock r398420 - /team/dlee/ASTERISK-22455...
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Thu Sep 5 12:32:45 CDT 2013
Author: dlee
Date: Thu Sep 5 12:32:43 2013
New Revision: 398420
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=398420
Log:
Address review feedback.
* Error if waiting on an unlocked mutex
* Fill in backtrace when coming out of a wait
Modified:
team/dlee/ASTERISK-22455-deadlock/main/lock.c
Modified: team/dlee/ASTERISK-22455-deadlock/main/lock.c
URL: http://svnview.digium.com/svn/asterisk/team/dlee/ASTERISK-22455-deadlock/main/lock.c?view=diff&rev=398420&r1=398419&r2=398420
==============================================================================
--- team/dlee/ASTERISK-22455-deadlock/main/lock.c (original)
+++ team/dlee/ASTERISK-22455-deadlock/main/lock.c Thu Sep 5 12:32:43 2013
@@ -548,6 +548,10 @@
__dump_backtrace(<->backtrace[ROFFSET], canlog);
#endif
DO_THREAD_CRASH;
+ } else if (lt->reentrancy <= 0) {
+ __ast_mutex_logger("%s line %d (%s): attempted to wait on an unlocked mutex '%s'\n",
+ filename, lineno, func, mutex_name);
+ DO_THREAD_CRASH;
}
/* Waiting on a condition completely suspends a recursive mutex,
@@ -583,6 +587,7 @@
ast_reentrancy_unlock(lt);
#ifdef HAVE_BKTR
+ bt = <->backtrace[ROFFSET];
ast_store_lock_info(AST_MUTEX, filename, lineno, func, mutex_name, t, bt);
#else
ast_store_lock_info(AST_MUTEX, filename, lineno, func, mutex_name, t);
@@ -636,6 +641,10 @@
__dump_backtrace(<->backtrace[ROFFSET], canlog);
#endif
DO_THREAD_CRASH;
+ } else if (lt->reentrancy <= 0) {
+ __ast_mutex_logger("%s line %d (%s): attempted to wait on an unlocked mutex '%s'\n",
+ filename, lineno, func, mutex_name);
+ DO_THREAD_CRASH;
}
/* Waiting on a condition completely suspends a recursive mutex,
@@ -671,6 +680,7 @@
ast_reentrancy_unlock(lt);
#ifdef HAVE_BKTR
+ bt = <->backtrace[ROFFSET];
ast_store_lock_info(AST_MUTEX, filename, lineno, func, mutex_name, t, bt);
#else
ast_store_lock_info(AST_MUTEX, filename, lineno, func, mutex_name, t);
More information about the asterisk-commits
mailing list