mirror of
https://github.com/asterisk/asterisk.git
synced 2025-10-19 03:07:59 +00:00
A new feature thanks to the fine folks at Switchvox!
If a deadlock is detected, then the typical lock information will be printed along with a backtrace of the stack for the offending threads. Use of this requires compiling with DETECT_DEADLOCKS and having glibc installed. Furthermore, issuing the "core show locks" CLI command will print the normal lock information as well as a backtraces for each lock. This requires that DEBUG_THREADS is enabled and that glibc is installed. All the backtrace features may be disabled by running the configure script with --without-execinfo as an argument git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@118173 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -86,6 +86,21 @@ enum ast_lock_type {
|
||||
};
|
||||
#endif
|
||||
#if !defined(LOW_MEMORY)
|
||||
#ifdef HAVE_BKTR
|
||||
void ast_store_lock_info(enum ast_lock_type type, const char *filename,
|
||||
int line_num, const char *func, const char *lock_name, void *lock_addr, struct ast_bt *bt);
|
||||
void ast_store_lock_info(enum ast_lock_type type, const char *filename,
|
||||
int line_num, const char *func, const char *lock_name, void *lock_addr, struct ast_bt *bt)
|
||||
{
|
||||
/* not a lot to do in a standalone w/o threading! */
|
||||
}
|
||||
|
||||
void ast_remove_lock_info(void *lock_addr, struct ast_bt *bt);
|
||||
void ast_remove_lock_info(void *lock_addr, struct ast_bt *bt)
|
||||
{
|
||||
/* not a lot to do in a standalone w/o threading! */
|
||||
}
|
||||
#else
|
||||
void ast_store_lock_info(enum ast_lock_type type, const char *filename,
|
||||
int line_num, const char *func, const char *lock_name, void *lock_addr);
|
||||
void ast_store_lock_info(enum ast_lock_type type, const char *filename,
|
||||
@@ -94,14 +109,15 @@ void ast_store_lock_info(enum ast_lock_type type, const char *filename,
|
||||
/* not a lot to do in a standalone w/o threading! */
|
||||
}
|
||||
|
||||
void ast_mark_lock_acquired(void *);
|
||||
void ast_mark_lock_acquired(void *foo)
|
||||
void ast_remove_lock_info(void *lock_addr);
|
||||
void ast_remove_lock_info(void *lock_addr)
|
||||
{
|
||||
/* not a lot to do in a standalone w/o threading! */
|
||||
}
|
||||
#endif /* HAVE_BKTR */
|
||||
|
||||
void ast_remove_lock_info(void *lock_addr);
|
||||
void ast_remove_lock_info(void *lock_addr)
|
||||
void ast_mark_lock_acquired(void *);
|
||||
void ast_mark_lock_acquired(void *foo)
|
||||
{
|
||||
/* not a lot to do in a standalone w/o threading! */
|
||||
}
|
||||
|
Reference in New Issue
Block a user