Closed vishwin closed 5 years ago
Don't expect a fix any time soon as we don't actively use or support consolekit.
I figured ConsoleKit support wasn't exactly a high priority anyway.
It should also be mentioned that I'm not using a display manager at all; everything goes through startx
.
Upon some further investigation, however, this may not have that much to do with ConsoleKit. I'm also noticing that an incorrect $DBUS_SESSION_BUS_ADDRESS
is set and used during the session, and the incorrect variable persists on subsequent session restarts. Mentioning this because the actual inhibitor firing itself takes place in DBus.
Side note, this also prevents cinnamon-looking-glass
from launching at all.
The $DBUS_SESSION_BUS_ADDRESS
inconsistency is pilot error, precipitated by shells running within tmux holding onto an environment from a prior Cinnamon session. So disregard everything I said about DBus. cinnamon-looking-glass
functions fine once the session bus address got correctly oriented.
My investigation turns back to everything surrounding csm_system_add_inhibitor()
and csm_consolekit_new()
, among other things.
At the end of the day, this is entirely pilot error.
Since FreeBSD doesn't have a logind port (yet?), when org.cinnamon.desktop.session.session-manager-uses-logind
and org.cinnamon.desktop.session.settings-daemon-uses-logind
are set to true (by default), csm_get_system()
will not branch to ConsoleKit even if the system
pointer remains null (because logind doesn't exist). For our port, we will carry a local patch to change the defaults of the two aforementioned dconf keys to false.
Issue When the inhibitor is activated in any way, the session immediately crashes. This is due to a null pointer (see backtrace) in
system
. Looking through the source, it appears thatcsm_consolekit_new()
is not correctly setting the pointer.(e)logind backend is probably not susceptible to this.
Steps to reproduce Easiest is to switch power management off in the inhibitor applet. But any program that "adds" the inhibitor during normal operation will also do.
Expected behaviour Inhibit the screensaver or screen from turning off, without total session crashing.
Other information Example backtrace, where Nemo spawns a delete confirmation dialog: