On Sun, Jul 27, 2025 at 11:08:56PM +0100, Andrew Bower wrote:
> On Thu, Jul 24, 2025 at 07:15:12PM +0100, Andrew Bower wrote:
> > On Wed, Jul 23, 2025 at 10:31:47PM +0100, Andrew Bower wrote:
> > > On Mon, Jun 30, 2025 at 11:36:59PM +0100, Andrew Bower wrote:
> > [...]
> > 1. Unitialised 'sessions' variable is a a bug on all systems which leads
> > to a segfault on some. I'm now tagging this bug as having a patch.
>
> In the absence of any other fixes, my patch for this still stands.
> But...
>
> > 2. elogind not being queried. Is this an elogind issue? Should it give a
> > different answer to sd_booted() or is this the wrong way to detect the
> > seat management capability? 'who' does not have this problem - it
> > somehow queries elogind anyway.
>
> Removing the call to sd_booted() and just using the result of
> sd_get_sessions() is sufficient. I get the correct outcome in this case.
>
> Unfortunately we don't then get any runtime fallback to utmp but my
> guess is working elogind support would be preferred (and should be fixed
> for trixie).
>
> I am not proposing a patch here because it needs attention from someone
> more familiar with the relevant components.
>
> My hunch is that the best plan for trixie is to go straight to calling
> sd_get_sessions() and not testing sd_booted(). This would then supersede
> the patch for (1).
I think we should do this:
Remove sd_booted() check
if sd_get_sessions()
< 0 && != ENOENT: error
> 0: show sessions
default: fallback to utmp
This should deal with:
1. systemd and elogind with some login sessions: show sessions
2. neither systemd nor elogind: fallback to utmp reading
3. systemd and elogind with no sessions: show nothing, as now, but via
fallback utmp route with no practical difference.
I don't see a downside from this approach.