Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
scope_abandon() called unit_watch_all_pids() to check if there are any pids in the cgroup, but unit_watch_all_pids() does nothing (and returns an empty set of pids) when cg_unified_controller(SYSTEMD) returns true. On hybrid or unified, cg_unified_controller(SYSTEMD) returns 1, so scope_abandon() thinks the scope is empty, even though it's not, and marks the scope dead prematurely. Example output after the scope is marked dead with processes still being present: ● session-24.scope - Session 24 of user guest Loaded: loaded (/run/systemd/transient/session-24.scope; transient; vendor preset: disabled) Transient: yes Active: inactive (dead) since Sat 2017-10-14 15:36:22 CEST; 5min ago Tasks: 1 CGroup: /user.slice/user-1001.slice/session-24.scope └─17309 sleep infinity Subsequent calls to stop the scope unit do nothing, because systemd thinks the scope is already dead. https://bugzilla.redhat.com/show_bug.cgi?id=1486859 This is easily reproducible on both F26 and F27: > ssh guest@localhost $ pulseaudio & sleep infinity & disown; exit $ systemctl status $$ > systemctl status session-NN.scope Tested with unified, hybrid, and legacy layouts, seems to work. (cherry picked from commit 8cb8326) [fbui: fixes bsc#1125604]
- Loading branch information