[lttng-dev] [LTTNG-TOOLS PATCH] Fix: only cleanup the agent_apps_ht_by_sock as root
Jérémie Galarneau
jeremie.galarneau at efficios.com
Thu Jul 30 12:53:07 EDT 2015
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>
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>
commit 1af8b99faa625033f9e0c2a6eaa9b3006cfadadd
Author: Jérémie Galarneau <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>
Jérémie
On Thu, Jul 30, 2015 at 12:02 PM, Jérémie Galarneau <
jeremie.galarneau at efficios.com> wrote:
>
>
> On Thu, Jul 30, 2015 at 11:12 AM, Julien Desfossez <
> 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>
>> ---
>> 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
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.lttng.org/pipermail/lttng-dev/attachments/20150730/ce861cf7/attachment.html>
More information about the lttng-dev
mailing list