[asterisk-commits] jrose: trunk r406416 - in /trunk: CHANGES main/utils.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Fri Jan 24 16:34:27 CST 2014
Author: jrose
Date: Fri Jan 24 16:34:23 2014
New Revision: 406416
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=406416
Log:
Thread Debugging: Add LWP to core show locks output
This patch adds the LWP to core show locks output if it is available.
Review: https://reviewboard.asterisk.org/r/3142/
Modified:
trunk/CHANGES
trunk/main/utils.c
Modified: trunk/CHANGES
URL: http://svnview.digium.com/svn/asterisk/trunk/CHANGES?view=diff&rev=406416&r1=406415&r2=406416
==============================================================================
--- trunk/CHANGES (original)
+++ trunk/CHANGES Fri Jan 24 16:34:23 2014
@@ -72,6 +72,11 @@
-------------------------
* A new function, MIXMONITOR, has been added to allow access to individual
instances of MixMonitor on a channel.
+
+Debugging
+-------------------------
+ * Core Show Locks output now includes Thread/LWP ID if the platform
+ supports this feature.
------------------------------------------------------------------------------
--- Functionality changes from Asterisk 12.0.0 to Asterisk 12.1.0 ------------
Modified: trunk/main/utils.c
URL: http://svnview.digium.com/svn/asterisk/trunk/main/utils.c?view=diff&rev=406416&r1=406415&r2=406416
==============================================================================
--- trunk/main/utils.c (original)
+++ trunk/main/utils.c Fri Jan 24 16:34:23 2014
@@ -589,11 +589,11 @@
/*! This is the actual container of info for what locks this thread holds */
struct {
const char *file;
- int line_num;
const char *func;
const char *lock_name;
void *lock_addr;
int times_locked;
+ int line_num;
enum ast_lock_type type;
/*! This thread is waiting on this lock */
int pending:2;
@@ -607,6 +607,8 @@
* The index (num_locks - 1) has the info on the last one in the
* locks member */
unsigned int num_locks;
+ /*! The LWP id (which GDB prints) */
+ int lwp;
/*! Protects the contents of the locks member
* Intentionally not ast_mutex_t */
pthread_mutex_t lock;
@@ -1049,8 +1051,13 @@
}
if (!header_printed) {
- ast_str_append(&str, 0, "=== Thread ID: 0x%lx (%s)\n", (long) lock_info->thread_id,
- lock_info->thread_name);
+ if (lock_info->lwp != -1) {
+ ast_str_append(&str, 0, "=== Thread ID: 0x%lx LWP:%d (%s)\n",
+ (long) lock_info->thread_id, lock_info->lwp, lock_info->thread_name);
+ } else {
+ ast_str_append(&str, 0, "=== Thread ID: 0x%lx (%s)\n",
+ (long) lock_info->thread_id, lock_info->thread_name);
+ }
header_printed = 1;
}
@@ -1145,6 +1152,7 @@
return NULL;
lock_info->thread_id = pthread_self();
+ lock_info->lwp = ast_get_tid();
lock_info->thread_name = strdup(a.name);
pthread_mutexattr_init(&mutex_attr);
More information about the asterisk-commits
mailing list