Fix: context alignment not properly handled
[lttng-ust.git] / liblttng-ust / lttng-ust-comm.c
index a73808e1128f7b63fbb62422e5f7bccc5115a9b4..3df2adc6f96e0b0b16189efe6497509ea845e3da 100644 (file)
@@ -68,9 +68,14 @@ static int initialized;
  *
  * ust_exit_mutex must never nest in ust_mutex.
  *
+ * ust_fork_mutex must never nest in ust_mutex.
+ *
  * ust_mutex_nest is a per-thread nesting counter, allowing the perf
  * counter lazy initialization called by events within the statedump,
  * which traces while the ust_mutex is held.
+ *
+ * ust_lock nests within the dynamic loader lock (within glibc) because
+ * it is taken within the library constructor.
  */
 static pthread_mutex_t ust_mutex = PTHREAD_MUTEX_INITIALIZER;
 
@@ -513,8 +518,8 @@ void handle_pending_statedump(struct sock_info *sock_info)
        int ctor_passed = sock_info->constructor_sem_posted;
 
        if (ctor_passed && sock_info->statedump_pending) {
-               pthread_mutex_lock(&ust_fork_mutex);
                sock_info->statedump_pending = 0;
+               pthread_mutex_lock(&ust_fork_mutex);
                lttng_handle_pending_statedump(sock_info);
                pthread_mutex_unlock(&ust_fork_mutex);
        }
This page took 0.023954 seconds and 4 git commands to generate.