Implement UST PID tracker
[lttng-tools.git] / src / bin / lttng-sessiond / main.c
index 21b4cf326bd49e48f0f2a1b2caeee34554578981..966f609177ad0b28104de59f827ec73f7101de24 100644 (file)
@@ -994,10 +994,30 @@ static void update_ust_app(int app_sock)
 
        /* For all tracing session(s) */
        cds_list_for_each_entry_safe(sess, stmp, &session_list_ptr->head, list) {
+               struct ust_app *app;
+
                session_lock(sess);
-               if (sess->ust_session) {
-                       ust_app_global_update(sess->ust_session, app_sock);
+               if (!sess->ust_session) {
+                       goto unlock_session;
                }
+
+               rcu_read_lock();
+               assert(app_sock >= 0);
+               app = ust_app_find_by_sock(app_sock);
+               if (app == NULL) {
+                       /*
+                        * Application can be unregistered before so
+                        * this is possible hence simply stopping the
+                        * update.
+                        */
+                       DBG3("UST app update failed to find app sock %d",
+                               app_sock);
+                       goto unlock_rcu;
+               }
+               ust_app_global_update(sess->ust_session, app);
+       unlock_rcu:
+               rcu_read_unlock();
+       unlock_session:
                session_unlock(sess);
        }
 }
This page took 0.023625 seconds and 4 git commands to generate.