[lttng-dev] [PATCH] Fix: per-pid ust buffers flush race with application unregister

Jérémie Galarneau jeremie.galarneau at efficios.com
Wed Feb 24 11:47:49 EST 2016


Merged in master and stable-2.7, thanks!

Jérémie

On Tue, Feb 23, 2016 at 7:41 PM, Mathieu Desnoyers
<mathieu.desnoyers at efficios.com> wrote:
> If an application exits between the moment we create the ust app session
> (shadow copy) and the moment we send channels to the application,
> sending channels may fail. If the application unregisters between the
> the end of ust app session creation and the destroy that follows (ust
> app session lock is released in between), we may see is_sent being
> false.
>
> This assert was initially there in the early days of lttng-tools when
> the application was responsible for doing the flush. Now that the flush
> has been moved to the consumer daemon, we don't need this assertion
> anymore.
>
> Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers at efficios.com>
> ---
>  src/bin/lttng-sessiond/ust-app.c | 1 -
>  1 file changed, 1 deletion(-)
>
> diff --git a/src/bin/lttng-sessiond/ust-app.c b/src/bin/lttng-sessiond/ust-app.c
> index 8c45a89..160a156 100644
> --- a/src/bin/lttng-sessiond/ust-app.c
> +++ b/src/bin/lttng-sessiond/ust-app.c
> @@ -4469,7 +4469,6 @@ int ust_app_flush_app_session(struct ust_app *app,
>                 cds_lfht_for_each_entry(ua_sess->channels->ht, &iter.iter, ua_chan,
>                                 node.node) {
>                         health_code_update();
> -                       assert(ua_chan->is_sent);
>                         ret = consumer_flush_channel(socket, ua_chan->key);
>                         if (ret) {
>                                 ERR("Error flushing consumer channel");
> --
> 2.1.4
>



-- 
Jérémie Galarneau
EfficiOS Inc.
http://www.efficios.com



More information about the lttng-dev mailing list