From: Russell Bryant Date: Fri, 7 Dec 2007 21:24:33 +0000 (+0000) Subject: Make the lock protecting each thread's list of locks it currently holds X-Git-Tag: 1.4.16~41 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=b5463cd8d383de657b6218d694fc0894ff381694;p=thirdparty%2Fasterisk.git 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 --- diff --git a/main/utils.c b/main/utils.c index 165353edd6..e464f72845 100644 --- a/main/utils.c +++ b/main/utils.c @@ -820,6 +820,7 @@ static void *dummy_start(void *data) struct thr_arg a = *((struct thr_arg *) data); /* make a local copy */ #ifdef DEBUG_THREADS struct thr_lock_info *lock_info; + pthread_mutexattr_t mutex_attr; #endif /* 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_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 */ AST_LIST_INSERT_TAIL(&lock_infos, lock_info, entry);