mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-06 04:30:28 +00:00
Make the lock protecting each thread's list of locks it currently holds
recursive. I think that this will fix the situation where some people have said that "core show locks" locks up the CLI. (related to issue #11080) git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/1.4@91830 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
@@ -820,6 +820,7 @@ static void *dummy_start(void *data)
|
|||||||
struct thr_arg a = *((struct thr_arg *) data); /* make a local copy */
|
struct thr_arg a = *((struct thr_arg *) data); /* make a local copy */
|
||||||
#ifdef DEBUG_THREADS
|
#ifdef DEBUG_THREADS
|
||||||
struct thr_lock_info *lock_info;
|
struct thr_lock_info *lock_info;
|
||||||
|
pthread_mutexattr_t mutex_attr;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* note that even though data->name is a pointer to allocated memory,
|
/* note that even though data->name is a pointer to allocated memory,
|
||||||
@@ -837,7 +838,11 @@ static void *dummy_start(void *data)
|
|||||||
|
|
||||||
lock_info->thread_id = pthread_self();
|
lock_info->thread_id = pthread_self();
|
||||||
lock_info->thread_name = strdup(a.name);
|
lock_info->thread_name = strdup(a.name);
|
||||||
pthread_mutex_init(&lock_info->lock, NULL);
|
|
||||||
|
pthread_mutexattr_init(&mutex_attr);
|
||||||
|
pthread_mutexattr_settype(&mutex_attr, AST_MUTEX_KIND);
|
||||||
|
pthread_mutex_init(&lock_info->lock, &mutex_attr);
|
||||||
|
pthread_mutexattr_destroy(&mutex_attr);
|
||||||
|
|
||||||
pthread_mutex_lock(&lock_infos_lock.mutex); /* Intentionally not the wrapper */
|
pthread_mutex_lock(&lock_infos_lock.mutex); /* Intentionally not the wrapper */
|
||||||
AST_LIST_INSERT_TAIL(&lock_infos, lock_info, entry);
|
AST_LIST_INSERT_TAIL(&lock_infos, lock_info, entry);
|
||||||
|
Reference in New Issue
Block a user