Fix: update apps on untrack only when session is active
[lttng-tools.git] / src / bin / lttng-sessiond / trace-ust.c
index cc166fd6f9413824e3a22f37016f73e704560dc8..a6c0c04ad864075d64cbf0c8dba6b66e96ce21cc 100644 (file)
@@ -564,6 +564,45 @@ int trace_ust_context_type_event_to_ust(
        case LTTNG_EVENT_CONTEXT_APP_CONTEXT:
                utype = LTTNG_UST_CONTEXT_APP_CONTEXT;
                break;
+       case LTTNG_EVENT_CONTEXT_CGROUP_NS:
+               utype = LTTNG_UST_CONTEXT_CGROUP_NS;
+               break;
+       case LTTNG_EVENT_CONTEXT_IPC_NS:
+               utype = LTTNG_UST_CONTEXT_IPC_NS;
+               break;
+       case LTTNG_EVENT_CONTEXT_MNT_NS:
+               utype = LTTNG_UST_CONTEXT_MNT_NS;
+               break;
+       case LTTNG_EVENT_CONTEXT_NET_NS:
+               utype = LTTNG_UST_CONTEXT_NET_NS;
+               break;
+       case LTTNG_EVENT_CONTEXT_PID_NS:
+               utype = LTTNG_UST_CONTEXT_PID_NS;
+               break;
+       case LTTNG_EVENT_CONTEXT_USER_NS:
+               utype = LTTNG_UST_CONTEXT_USER_NS;
+               break;
+       case LTTNG_EVENT_CONTEXT_UTS_NS:
+               utype = LTTNG_UST_CONTEXT_UTS_NS;
+               break;
+       case LTTNG_EVENT_CONTEXT_VUID:
+               utype = LTTNG_UST_CONTEXT_VUID;
+               break;
+       case LTTNG_EVENT_CONTEXT_VEUID:
+               utype = LTTNG_UST_CONTEXT_VEUID;
+               break;
+       case LTTNG_EVENT_CONTEXT_VSUID:
+               utype = LTTNG_UST_CONTEXT_VSUID;
+               break;
+       case LTTNG_EVENT_CONTEXT_VGID:
+               utype = LTTNG_UST_CONTEXT_VGID;
+               break;
+       case LTTNG_EVENT_CONTEXT_VEGID:
+               utype = LTTNG_UST_CONTEXT_VEGID;
+               break;
+       case LTTNG_EVENT_CONTEXT_VSGID:
+               utype = LTTNG_UST_CONTEXT_VSGID;
+               break;
        default:
                utype = -1;
                break;
@@ -883,6 +922,7 @@ end:
 int trace_ust_untrack_pid(struct ltt_ust_session *session, int pid)
 {
        int retval = LTTNG_OK;
+       bool should_update_apps = false;
 
        if (pid == -1) {
                /* Create empty tracker, replace old tracker. */
@@ -899,7 +939,7 @@ int trace_ust_untrack_pid(struct ltt_ust_session *session, int pid)
                fini_pid_tracker(&tmp_tracker);
 
                /* Remove session from all applications */
-               ust_app_global_update_all(session);
+               should_update_apps = true;
        } else {
                int ret;
                struct ust_app *app;
@@ -918,9 +958,12 @@ int trace_ust_untrack_pid(struct ltt_ust_session *session, int pid)
                /* Remove session from application. */
                app = ust_app_find_by_pid(pid);
                if (app) {
-                       ust_app_global_update(session, app);
+                       should_update_apps = true;
                }
        }
+       if (should_update_apps && session->active) {
+               ust_app_global_update_all(session);
+       }
 end:
        return retval;
 }
This page took 0.024396 seconds and 4 git commands to generate.