** Description changed: - It was observed that systemd-logind tool is leaking memory at each session - connected. The issue happens in systemd from Trusty (14.04), which latest - version currently (Feb/2018) is 204-5ubuntu20.26 (and still reproduces - the bug). - - The basic test-case is to run the following loop from a remote machine: - - while true; do ssh <hostname-target> "whoami"; done - - and watch the increase in memory consumption from "systemd-logind" process - in the target machine. One can use the "ps uax" command to verify the - RSS of the process, or count the anon pages from /proc/<logind_pid>/smaps. - - To clarify a bit how a session works, the following "stack trace" details - a bit which function calls happen when a SSH connection is opened, from - Trusty's systemd-logind point of view: + Below the SRU request form. Please refer to the Original Description to + a more comprehensive explanation of the problem observed. - main() <logind.c> - manager_startup() - manager_run() [event-loop] - bus_loop_dispatch() <dbus-loop.c> - dbus_watch_handle() -> bus_manager_message_handler() - bus_manager_create_session() - manager_add_session() <logind.c> - session_new() <logind-session.c> - session_create_fifo() - session_start() - session_create_cgroup() - session_save() - session_bus_path() - [...] + [Impact] - After each session is closed, it was observed that session_free() isn't - called, keeping the sessions alive. This can be verified through the - command "loginctl list-session" - each session that once connected is - present there "forever". + * systemd-logind tool is leaking memory at each session connected. The + issues happens in systemd from Trusty (14.04) only. - The memory leaks can eventually lead to OOM situation of this process. - Debug progress will be tracked here, in this LP. + * Three issues observed: + - systemd-logind is leaking entire sessions, i.e, the sessions are not + feeed after they're closed. In order to fix that, we proactively add + the sessions to systemd garbage collector (gc) when they are closed. + Also, part of the fix is to make cgmanager package a dependency. Refer + to comment #1 to a more thorough explanation of the issue and the fix. + + - a small memory leak was observed in the session creation logic of + systemd-logind. The fix for that is the addition of an appropriate + free() call. Refer to comment #2 to more details on the issue and fix. + + - another small memory leak was observed in the cgmanager glue code of + systemd-logind - this code is only present in this specific Ubuntu + release of the package, due to necessary compatibility layer with + upstart init system. The fix is to properly call free() in 2 + functions. Refer to comment #3 to a deep exposition of the issue and + the fix. + + + [Test Case] + + * The basic test-case is to run the following loop from a remote machine: + while true; do ssh <hostname-target> "whoami"; done + + * It's possible to watch the increase in memory consumption from + "systemd-logind" process in the target machine. One can use the + "ps uax" command to verify the RSS of the process, or count its + anonymous pages from /proc/<logind_pid>/smaps. + + + [Regression Potential] + + * Since the fixes are small and not intrusive, the potential for + regressions are low. More regression considerations on comments #1, #2 + and #3 for each fix. + + * A potential small regressson is performance-wise, since now we add + sessions to garbage collector proactively.
** Tags added: sts-sru-needed ** Patch added: "debdiff" https://bugs.launchpad.net/ubuntu/artful/+source/systemd/+bug/1750013/+attachment/5065280/+files/lp1750013-trusty.debdiff -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1750013 Title: systemd-logind: memory leaks on session's connections (trusty-only) To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/systemd/+bug/1750013/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs