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.

Reply via email to