X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=ltt-sessiond%2Ftraceable-app.c;h=41dc51111dd3de0d12f9a58dde3d5aa07a5e4df4;hp=653d86b3fe3cbf675d25428a446b9be6b672e79a;hb=44d3bd014f6ad217cff7e7c3dfaad76b1927c37b;hpb=28ca4a8b53068907137724e2e078b29cecf525f7 diff --git a/ltt-sessiond/traceable-app.c b/ltt-sessiond/traceable-app.c index 653d86b3f..41dc51111 100644 --- a/ltt-sessiond/traceable-app.c +++ b/ltt-sessiond/traceable-app.c @@ -49,11 +49,17 @@ static void add_traceable_app(struct ltt_traceable_app *lta) */ static void del_traceable_app(struct ltt_traceable_app *lta) { + struct ltt_ust_channel *chan; + cds_list_del(<a->list); /* Sanity check */ if (ltt_traceable_app_list.count > 0) { ltt_traceable_app_list.count--; } + + cds_list_for_each_entry(chan, <a->channels.head, list) { + trace_ust_destroy_channel(chan); + } } /* @@ -109,10 +115,13 @@ struct ltt_traceable_app *traceable_app_get_by_pid(pid_t pid) cds_list_for_each_entry(iter, <t_traceable_app_list.head, list) { if (iter->pid == pid) { /* Found */ + DBG2("Found traceable app by pid %d", pid); return iter; } } + DBG2("Traceable app with pid %d not found", pid); + return NULL; } @@ -141,6 +150,7 @@ int register_traceable_app(struct ust_register_msg *msg, int sock) lta->sock = sock; strncpy(lta->name, msg->name, sizeof(lta->name)); lta->name[16] = '\0'; + CDS_INIT_LIST_HEAD(<a->channels.head); lock_apps_list(); add_traceable_app(lta); @@ -167,8 +177,8 @@ void unregister_traceable_app(int sock) lta = find_app_by_sock(sock); if (lta) { DBG("PID %d unregistered with sock %d", lta->pid, sock); - close(lta->sock); del_traceable_app(lta); + close(lta->sock); free(lta); } unlock_apps_list(); @@ -200,6 +210,7 @@ void clean_traceable_apps_list(void) * cleanup() functions meaning that the program will exit. */ cds_list_for_each_entry_safe(iter, tmp, <t_traceable_app_list.head, list) { + del_traceable_app(iter); close(iter->sock); free(iter); }