[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