On Mon, Sep 23, 2019 at 03:34:50PM -0400, Sam Hartman wrote: > Hi. > I've looked a bit at the systemd code as compared to the elogind code. > > One of the major reasons that libsystemd0 cannot be used as a > replacement for libelogind0 is that elogind does not have compatible > cgroup naming. > The systemd (and elogind) libraries do some operations over dbus. > But other operations are done directly. For example to look and see > what session a pid is in, the library will look at the cgroups of the > pid. > Similarly to see whether a particular pid belongs to a uid, it looks at > the cgroup naming. > > If you take a look at src/basic/cgroup-util.c in the elogind sources and > take a look at what is #if 0'd you can see the naming differences.
Yes. systemd uses user units and scopes. elogind can not support either and uses internal hash containers. So if a system is running elogind and polkit asks libsystemd0 for a session id to a pid, it will search for a session-<pid>.scope and find nothing. See the two implementations of cg_path_get_session(): https://github.com/elogind/elogind/blob/d4a3f29/src/basic/cgroup-util.c#L1713 Mark