Fix: baddr_statedump deadlock with JUL tracing
[lttng-ust.git] / liblttng-ust / lttng-events.c
index 77515843d3a0f5e2a6f895685064689aece4fd98..9380e9ceb688b9b46df58122d7cc3a47c14421b3 100644 (file)
@@ -294,7 +294,8 @@ int lttng_session_enable(struct lttng_session *session)
        CMM_ACCESS_ONCE(session->active) = 1;
        CMM_ACCESS_ONCE(session->been_active) = 1;
 
-       lttng_ust_sockinfo_session_enabled(session->owner, session);
+       session->statedump_pending = 1;
+       lttng_ust_sockinfo_session_enabled(session->owner);
 end:
        return ret;
 }
@@ -674,6 +675,22 @@ int lttng_fix_pending_events(void)
        return 0;
 }
 
+/*
+ * Called after session enable: For each session, execute pending statedumps.
+ */
+int lttng_handle_pending_statedumps(t_statedump_func_ptr statedump_func_ptr)
+{
+       struct lttng_session *session;
+
+       cds_list_for_each_entry(session, &sessions, node) {
+               if (session->statedump_pending) {
+                       session->statedump_pending = 0;
+                       statedump_func_ptr(session);
+               }
+       }
+       return 0;
+}
+
 /*
  * Only used internally at session destruction.
  */
This page took 0.023218 seconds and 4 git commands to generate.