[lttng-dev] [LTTNG-TOOLS PATCH] Fix: only cleanup the agent_apps_ht_by_sock as root
Julien Desfossez
jdesfossez at efficios.com
Thu Jul 30 13:40:24 EDT 2015
I confirm it fixes the problem I was seeing.
Thanks,
Julien
On 15-07-30 12:53 PM, Jérémie Galarneau wrote:
> Here is my proposed fix. Can you test it on your end?
>
> https://github.com/jgalar/lttng-tools/commits/sessiond-agent-crash
>
> commit 5e249e09a2bd68f96e546bf83b4710596518f675
> Author: Jérémie Galarneau <jeremie.galarneau at efficios.com
> <mailto:jeremie.galarneau at efficios.com>>
> Date: Thu Jul 30 12:48:52 2015 -0400
>
> Clean-up: Move agent_apps_ht_by_sock definition to main.c
>
> Signed-off-by: Jérémie Galarneau <jeremie.galarneau at efficios.com
> <mailto:jeremie.galarneau at efficios.com>>
>
> commit 1af8b99faa625033f9e0c2a6eaa9b3006cfadadd
> Author: Jérémie Galarneau <jeremie.galarneau at efficios.com
> <mailto:jeremie.galarneau at efficios.com>>
> Date: Thu Jul 30 12:46:56 2015 -0400
>
> Fix: Initialize global agent_apps_ht_by_sock on session daemon launch
>
> Signed-off-by: Jérémie Galarneau <jeremie.galarneau at efficios.com
> <mailto:jeremie.galarneau at efficios.com>>
>
>
> Jérémie
>
>
> On Thu, Jul 30, 2015 at 12:02 PM, Jérémie Galarneau
> <jeremie.galarneau at efficios.com <mailto:jeremie.galarneau at efficios.com>>
> wrote:
>
>
>
> On Thu, Jul 30, 2015 at 11:12 AM, Julien Desfossez
> <jdesfossez at efficios.com <mailto:jdesfossez at efficios.com>> wrote:
>
> Commit 6a4e403927ffef4cae8726064dcf53c463eb128c introduced a bug
> where
> we could end up iterating over the agent_apps_ht_by_sock
> regardless if
> it was allocated or not (only when the sessiond is launched as
> root).
>
> Steps to reproduce:
> $ sudo lttng-sessiond -d
> $ lttng-sessiond
> Error: Already running daemon.
> Segmentation fault (core dumped)
>
> Signed-off-by: Julien Desfossez <jdesfossez at efficios.com
> <mailto:jdesfossez at efficios.com>>
> ---
> src/bin/lttng-sessiond/main.c | 4 +++-
> 1 file changed, 3 insertions(+), 1 deletion(-)
>
> diff --git a/src/bin/lttng-sessiond/main.c
> b/src/bin/lttng-sessiond/main.c
> index 91dd047..5840165 100644
> --- a/src/bin/lttng-sessiond/main.c
> +++ b/src/bin/lttng-sessiond/main.c
> @@ -677,7 +677,9 @@ static void sessiond_cleanup(void)
> }
>
> DBG("Cleaning up all agent apps");
> - agent_app_ht_clean();
> + if (is_root) {
> + agent_app_ht_clean();
> + }
>
>
> This will leak the hash table if the session daemon was launched as
> an unprivileged user. However, the problem can also be reproduced by
> launching two session daemons under the same unprivileged user.
>
> The real issue here seems to be that the session daemon will enter
> the "exit_init_data" code path before creating the hash table if it
> can't acquire the lock file and that there are no NULL checks
> performed during the sessiond_cleanup().
>
> Thanks,
> Jérémie
>
>
> DBG("Closing all UST sockets");
> ust_app_clean_list();
> --
> 1.9.1
>
>
>
>
> --
> Jérémie Galarneau
> EfficiOS Inc.
> http://www.efficios.com
>
>
>
>
> --
> Jérémie Galarneau
> EfficiOS Inc.
> http://www.efficios.com
>
>
> _______________________________________________
> lttng-dev mailing list
> lttng-dev at lists.lttng.org
> http://lists.lttng.org/cgi-bin/mailman/listinfo/lttng-dev
>
More information about the lttng-dev
mailing list