[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