[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