X-Git-Url: http://git.efficios.com/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Fsession.c;h=5e6488e4f28c67a98fc3bdf9cb1459fedde50fc3;hp=e7967f45ef3bafe3c990dbd0521f60c01dd5b828;hb=f4cc5e83435948e64f5c7bce395ca19703da02a3;hpb=4c6885d2d540ce66b9050e9f90c49575fb76dde0;ds=sidebyside diff --git a/src/bin/lttng-sessiond/session.c b/src/bin/lttng-sessiond/session.c index e7967f45e..5e6488e4f 100644 --- a/src/bin/lttng-sessiond/session.c +++ b/src/bin/lttng-sessiond/session.c @@ -444,10 +444,12 @@ void session_release(struct urcu_ref *ref) consumer_output_put(session->consumer); snapshot_destroy(&session->snapshot); - ASSERT_LOCKED(ltt_session_list.lock); - del_session_list(session); - del_session_ht(session); - pthread_cond_broadcast(<t_session_list.removal_cond); + if (session->published) { + ASSERT_LOCKED(ltt_session_list.lock); + del_session_list(session); + del_session_ht(session); + pthread_cond_broadcast(<t_session_list.removal_cond); + } free(session); } @@ -630,6 +632,7 @@ int session_create(char *name, uid_t uid, gid_t gid) * by session id. */ add_session_ht(new_session); + new_session->published = true; session_unlock_list(); /* @@ -643,7 +646,9 @@ int session_create(char *name, uid_t uid, gid_t gid) error: error_asprintf: - free(new_session); + session_lock_list(); + session_put(new_session); + session_unlock_list(); error_malloc: return ret;