From 0a78fea2ac488295e1efbe1adb162275af2ffa4b Mon Sep 17 00:00:00 2001 From: Russell Bryant Date: Wed, 18 Oct 2006 02:41:36 +0000 Subject: [PATCH] Don't attempt to access private data members of the pthread_mutex_t object, because this does not work on all linux systems. Instead, just access the reentrancy field in the ast_mutex_info struct when DEBUG_THREADS is enabled. If DEBUG_CHANNEL_LOCKS is enabled, the developer probably has DEBUG_THREADS on as well. (issue #8139, me) git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@45441 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- main/channel.c | 28 ++++++---------------------- 1 file changed, 6 insertions(+), 22 deletions(-) diff --git a/main/channel.c b/main/channel.c index 4bb49603cb..fb0d7464c0 100644 --- a/main/channel.c +++ b/main/channel.c @@ -4468,17 +4468,9 @@ int ast_channel_unlock(struct ast_channel *chan) res = ast_mutex_unlock(&chan->lock); if (option_debug > 2) { - /* Try to find counter if possible on your platform - I've only found out how to do this on Linux - DEBUG_THREADS changes the lock structure - */ -#ifdef __linux__ - int count = 0; #ifdef DEBUG_THREADS - if ((count = chan->lock.mutex.__data.__count)) -#else - if ((count = chan->lock.__data.__count)) -#endif + int count = 0; + if ((count = chan->lock.reentrancy)) ast_log(LOG_DEBUG, ":::=== Still have %d locks (recursive)\n", count); #endif if (!res) @@ -4508,13 +4500,9 @@ int ast_channel_lock(struct ast_channel *chan) res = ast_mutex_lock(&chan->lock); if (option_debug > 3) { -#ifdef __linux__ - int count = 0; #ifdef DEBUG_THREADS - if ((count = chan->lock.mutex.__data.__count)) -#else - if ((count = chan->lock.__data.__count)) -#endif + int count = 0; + if ((count = chan->lock.reentrancy)) ast_log(LOG_DEBUG, ":::=== Now have %d locks (recursive)\n", count); #endif if (!res) @@ -4544,13 +4532,9 @@ int ast_channel_trylock(struct ast_channel *chan) res = ast_mutex_trylock(&chan->lock); if (option_debug > 2) { -#ifdef __linux__ - int count = 0; #ifdef DEBUG_THREADS - if ((count = chan->lock.mutex.__data.__count)) -#else - if ((count = chan->lock.__data.__count)) -#endif + int count = 0; + if ((count = chan->lock.reentrancy)) ast_log(LOG_DEBUG, ":::=== Now have %d locks (recursive)\n", count); #endif if (!res) -- 2.47.3