X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Fbin%2Flttng-sessiond%2Ftimer.c;h=d70d16710c91e7200f1a0c78f078e3d68a00c201;hp=4bff7bd76cea0497c311f12b7026b0142761710c;hb=3cf0ebeef90a629c59333544a9fb3bd75f2dbfc6;hpb=c7031a2c707646804e0088d069578d5eb74fc01e diff --git a/src/bin/lttng-sessiond/timer.c b/src/bin/lttng-sessiond/timer.c index 4bff7bd76..d70d16710 100644 --- a/src/bin/lttng-sessiond/timer.c +++ b/src/bin/lttng-sessiond/timer.c @@ -248,6 +248,7 @@ int timer_session_rotation_pending_check_stop(struct ltt_session *session) int ret; assert(session); + assert(session->rotation_pending_check_timer_enabled); DBG("Disabling session rotation pending check timer on session %" PRIu64, session->id); @@ -387,11 +388,14 @@ void *timer_thread_func(void *data) struct ltt_session *session = (struct ltt_session *) info.si_value.sival_ptr; + session_lock_list(); + session_lock(session); + /* Acquires a reference to the session. */ rotation_thread_enqueue_job(ctx->rotation_thread_job_queue, ROTATION_THREAD_JOB_TYPE_CHECK_PENDING_ROTATION, session); - session_lock_list(); - session_put(session); + /* Release the timer's reference to the session. */ + (void) timer_session_rotation_pending_check_stop(session); session_unlock_list(); } else if (signr == LTTNG_SESSIOND_SIG_SCHEDULED_ROTATION) { rotation_thread_enqueue_job(ctx->rotation_thread_job_queue,