GdmSessionWorker: could not ping daemon: The connection is closed
I'm observing the following message when starting up GDM, and I suspect it may be causing gdm to fallback to wayland rather than x11. The fallback is succesful, I only encounter this message during the wayland session handshake.
gdm-launch-environment][2716]: Gdm: GdmSessionWorker: could not ping daemon: The connection is closed
Here's the context:
gdm-launch-environment][2716]: Gdm: GdmSessionWorker: start program: /usr/libexec/gdm-wayland-session "dbus-run-session -- gnome-session --autostart /usr/share/gdm/>
gdm-launch-environment][2716]: Gdm: GdmSessionWorker: attempting to change state to SESSION_STARTED
gdm-launch-environment][2716]: Gdm: GdmSessionWorker: opening session for program '/usr/libexec/gdm-wayland-session'
gdm-launch-environment][2716]: Gdm: GdmSessionWorker: jumping to VT 1
gdm-launch-environment][2716]: Gdm: GdmSessionWorker: first setting graphics mode to prevent flicker
gdm-launch-environment][2716]: Gdm: GdmSessionWorker: VT mode did not need to be fixed
gdm[2711]: Gdm: GdmLocalDisplayFactory: received VT change event
gdm[2711]: Gdm: GdmLocalDisplayFactory: VT changed from 3 to 1
gdm[2711]: Gdm: GdmLocalDisplayFactory: VT of login window is 1
gdm[2711]: Gdm: GdmLocalDisplayFactory: VT not switched from login window
gdm[2711]: Gdm: GdmLocalDisplayFactory: creating new display on seat0 because of VT change
gdm[2711]: Gdm: GdmLocalDisplayFactory: display for seat seat0 requested
gdm[2711]: Gdm: GdmLocalDisplayFactory: udev settled, boot up graphics available.
gdm[2711]: Gdm: GdmLocalDisplayFactory: System supports graphics
gdm[2711]: Gdm: GdmLocalDisplayFactory: Getting session type (prefers wayland, falling back: no)
gdm[2711]: Gdm: GdmLocalDisplayFactory: New displays on seat0 will use wayland
gdm[2711]: Gdm: GdmLocalDisplayFactory: wayland login display for seat seat0 requested
gdm[2711]: Gdm: GdmLocalDisplayFactory: display for seat0 already created
gdm-launch-environment][2716]: Gdm: GdmSessionWorker: session opened creating reply...
gdm-launch-environment][2716]: Gdm: GdmSessionWorker: state SESSION_STARTED
gdm-launch-environment][2716]: Gdm: GdmSession worker: watching pid 2721
gdm[2711]: Gdm: GdmSession: Emitting 'session-started' signal with pid '2721'
gdm[2711]: Gdm: GdmDisplay: Greeter started
gdm[2711]: Gdm: GdmManager: trying to register new display
gdm[2711]: Gdm: GdmCommon: Found session c3 for PID 2721, using
gdm[2711]: Gdm: GdmLocalDisplayFactory: display status changed: 2
gdm-launch-environment][2716]: Gdm: GdmSessionWorker: child (pid:2721) done (status:0)
gdm-launch-environment][2716]: Gdm: GdmSessionWorker: uninitializing PAM
gdm-launch-environment][2716]: pam_unix(gdm-launch-environment:session): session closed for user gdm
gdm-launch-environment][2716]: Gdm: GdmSessionWorker: state NONE
gdm[2711]: Gdm: GdmSession: Emitting 'session-exited' signal with exit code '0'
gdm[2711]: Gdm: GdmSession: stopping conversation gdm-launch-environment
gdm-launch-environment][2716]: Gdm: GdmSessionWorker: could not ping daemon: The connection is closed
gdm[2711]: Gdm: GdmSessionWorkerJob: Stopping job pid:2716
gdm[2711]: Gdm: GdmCommon: sending signal 15 to process 2716
gdm[2711]: Gdm: GdmDisplay: Greeter exited: 0
gdm[2711]: Gdm: GdmDisplay: initiating display self-destruct
gdm[2711]: Gdm: GdmDisplay: Session never registered, failing
gdm[2711]: Gdm: GdmSession: Disposing session
gdm[2711]: Gdm: GdmSession: Closing session
gdm-launch-environment][2716]: Gdm: Worker finished
gdm[2711]: Gdm: GdmSession: Stopping all conversations
If I'm reading the code correctly, this error is emitted by:
wait_until_dbus_signal_emission_to_manager_finishes()
And the only call site I can see, has an interesting comment that perhaps applies
/* FIXME: It's important to give the manager an opportunity to process the
* session-exited emission above before switching VTs.
*
* This is because switching VTs makes the manager try to put a login screen
* up on VT 1, but it may actually want to try to auto login again in response
* to session-exited.
*
* This function just does a manager roundtrip over the bus to make sure the
* signal has been dispatched before jumping.
*
* Ultimately, we may want to improve the manager<->worker interface.
*
* See:
*
* https://gitlab.gnome.org/GNOME/gdm/-/merge_requests/123
*
* for some ideas and more discussion.
*
*/
If this is in fact what's happening, I wonder if this should be classed as an error message to make it more apparent
gdm-launch-environment][2716]: Gdm: GdmSessionWorker: could not ping daemon: The connection is closed
Details:
Fedora 39
Gnome 45.1
Kernal 6.5.12-300.fc39.x86_64
nVidia driver 545.129.03
Note: I have multiple GPU's on this machine. In this scenario I have all other GPU drivers blacklisted and am running only with proprietary nvidia.
Edited by Tim Kane