The post above refers to [1].

In reference to that:

virMutexInit
 55     pthread_mutexattr_t attr;                                               
     
 56     pthread_mutexattr_init(&attr);                                          
     
 57     pthread_mutexattr_settype(&attr, PTHREAD_MUTEX_NORMAL);                 
     
 58     ret = pthread_mutex_init(&m->lock, &attr);  

[...]
 87 void virMutexLock(virMutexPtr m)                                            
     
 88 {                                                                           
     
 89     pthread_mutex_lock(&m->lock);

That is:
PTHREAD_MUTEX_NORMAL
This type of mutex does not detect deadlock. A thread attempting to relock this 
mutex without first unlocking it will deadlock. Attempting to unlock a mutex 
locked by a different thread results in undefined behaviour. Attempting to 
unlock an unlocked mutex results in undefined behaviour.

And from man pthread_mutex_lock:
If the mutex is already locked by the calling thread, the behavior of 
pthread_mutex_lock depends on the kind of the mutex. If the mutex is of the 
``fast'' kind, the calling thread is suspended until the mutex is unlocked, 
thus effectively causing the  calling  thread  to deadlock.

[1]: http://paste.ubuntu.com/25438609/

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1714254

Title:
  libvirtd hangs after # instance creation events

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/libvirt/+bug/1714254/+subscriptions

-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to