GNOME Bugzilla – Bug 432587
gnome-session ignores error messages from GDM when trying to switch users
Last modified: 2020-11-06 20:25:56 UTC
Please describe the problem: So from time to time I notice that user switching does not work. In this case, I click 'switch user' in the logout dialog; my screen goes blank for a few seconds, and then I am returned to my original session. I enabled debug logging and saw this: Apr 23 13:53:34 xerces gdm[3340]: gdm_socket_handler: Accepting new connection fd 7 Apr 23 13:53:34 xerces gdm[3340]: Handling user message: 'VERSION' Apr 23 13:53:34 xerces gdm[3340]: Handling user message: 'AUTH_LOCAL 2cfaec48fec3a0af9ea565ac583cdf2b' Apr 23 13:53:34 xerces gdm[3340]: Handling user message: 'FLEXI_XSERVER' Apr 23 13:53:34 xerces gdm[3340]: server: '/usr/bin/X' Apr 23 13:53:34 xerces gdm[3340]: gdm_display_manage: Managing :-1 Apr 23 13:53:34 xerces gdm[3340]: loop check: last_start 0, last_loop 0, now: 1177332814, retry_count: 0 Apr 23 13:53:34 xerces gdm[3340]: Resetting counts for loop of death detection Apr 23 13:53:34 xerces gdm[21282]: gdm_slave_start: Starting slave process for :-1 Apr 23 13:53:34 xerces gdm[21282]: gdm_slave_start: Loop Thingie Apr 23 13:53:34 xerces gdm[21282]: Sending VT_NUM == -1 for slave 21282 Apr 23 13:53:34 xerces gdm[3340]: gdm_display_manage: Forked slave: 21282 Apr 23 13:53:34 xerces gdm[3340]: Handling message: 'VT_NUM 21282 -1' Apr 23 13:53:34 xerces gdm[3340]: Got VT_NUM == -1 Apr 23 13:53:34 xerces gdm[21282]: Sending DISP_NUM == 20 for slave 21282 Apr 23 13:53:34 xerces gdm[3340]: Handling message: 'DISP_NUM 21282 20' Apr 23 13:53:34 xerces gdm[3340]: Got DISP_NUM == 20 Apr 23 13:53:35 xerces gdm[21282]: gdm_server_start: :20 Apr 23 13:53:35 xerces gdm[21282]: gdm_auth_secure_display: Setting up access for :20 Apr 23 13:53:35 xerces gdm[21282]: gdm_auth_secure_display: Setting up access Apr 23 13:53:35 xerces gdm[21282]: gdm_auth_secure_display: Setting up access for :20 - 1 entries Apr 23 13:53:35 xerces gdm[21282]: Sending COOKIE == <secret> for slave 21282 Apr 23 13:53:35 xerces gdm[3340]: Handling message: 'COOKIE 21282 9...' Apr 23 13:53:35 xerces gdm[3340]: Got COOKIE == <secret> Apr 23 13:53:35 xerces gdm[21282]: Sending AUTHFILE == <secret> for slave 21282 Apr 23 13:53:35 xerces gdm[3340]: Handling message: 'AUTHFILE 21282 /var/lib/gdm/:20.Xauth' Apr 23 13:53:35 xerces gdm[3340]: Got AUTHFILE == /var/lib/gdm/:20.Xauth Apr 23 13:53:35 xerces gdm[21282]: gdm_server_spawn: Forked server on pid 21283 Apr 23 13:53:35 xerces gdm[21283]: gdm_server_spawn: '/usr/bin/X :20 -auth /var/lib/gdm/:20.Xauth -nolisten tcp vt8' Apr 23 13:53:35 xerces gdm[21282]: do_server_wait: Before mainloop waiting for server Apr 23 13:53:35 xerces gdm[21282]: gdm_server_start: After mainloop waiting for server Apr 23 13:53:35 xerces gdm[21282]: gdm_server_start: Completed :20! Apr 23 13:53:35 xerces gdm[21282]: Sending FLEXI_OK == 0 for slave 21282 Apr 23 13:53:35 xerces gdm[3340]: Handling message: 'FLEXI_OK 21282 0' Apr 23 13:53:35 xerces gdm[3340]: Got FLEXI_OK Apr 23 13:53:35 xerces gdm[21282]: Sending VT_NUM == 8 for slave 21282 Apr 23 13:53:35 xerces gdm[3340]: close_if_needed: Got G_IO_HUP on 7 Apr 23 13:53:35 xerces gdm[3340]: close_if_needed: Got error on 7 Apr 23 13:53:35 xerces gdm[3340]: Handling message: 'VT_NUM 21282 8' Apr 23 13:53:35 xerces gdm[3340]: Got VT_NUM == 8 Apr 23 13:53:35 xerces gdm[21282]: Sending XPID == 21283 for slave 21282 Apr 23 13:53:35 xerces gdm[3340]: Handling message: 'XPID 21282 21283' Apr 23 13:53:35 xerces gdm[3340]: Got XPID == 21283 Apr 23 13:53:35 xerces gdm[21282]: gdm_slave_run: Opening display :20 Apr 23 13:53:38 xerces gdm[3340]: Handling message: 'XPID 21282 0' Apr 23 13:53:38 xerces gdm[3340]: Got XPID == 0 Apr 23 13:53:38 xerces gdm[21282]: gdm_slave_xioerror_handler: Fatal X error - Restarting :20 Apr 23 13:53:38 xerces gdm[21282]: term_quit: Final cleanup Apr 23 13:53:38 xerces gdm[21282]: gdm_slave_quick_exit: Will kill everything from the display Apr 23 13:53:38 xerces gdm[21282]: gdm_slave_quick_exit: Killed everything from the display Apr 23 13:53:38 xerces gdm[3340]: mainloop_sig_callback: Got signal 17 Apr 23 13:53:38 xerces gdm[3340]: gdm_cleanup_children: child 21282 returned 64 Apr 23 13:53:38 xerces gdm[3340]: X failed! Apr 23 13:53:38 xerces gdm[3340]: gdm_child_action: In remanage Apr 23 13:53:38 xerces gdm[3340]: gdm_display_unmanage: Stopping :20 (slave pid: 0) Apr 23 13:53:38 xerces gdm[3340]: gdm_display_dispose: Disposing :20 Apr 23 13:53:38 xerces gdm[3340]: gdm_display_unmanage: Display stopped SIGCHLD eh? Let's check /var/log/gdm/:20.log... Error: API mismatch: the NVIDIA kernel module has the version 1.0-9746, but this X module has the version 1.0-9755. Please make sure that the kernel module and all NVIDIA driver components have the same version. (EE) NVIDIA(0): Failed to initialize the NVIDIA kernel module! Please ensure (EE) NVIDIA(0): that there is a supported NVIDIA GPU in this system, and (EE) NVIDIA(0): that the NVIDIA device files have been created properly. (EE) NVIDIA(0): Please consult the NVIDIA README for details. (EE) NVIDIA(0): *** Aborting *** (EE) Screen(s) found, but none have a usable configuration. Fatal server error: no screens found Aha! This must be because I upgraded the NVIDIA drivers on my system yesterday, but didn't exit from my X session, stop GDM and reload the kernel module yet. Now, the problem itself is entirely of my own making; but I think GDM should be more helpful and display a dialog that explains that I couldn't switch users because the X server wouldn't start. The dialog could even display the log of the failed X server to me. Steps to reproduce: 1. Log in with GDM 2. Break the X server configuration so that the server no longer starts 3. Try to switch user Actual results: I get dumped back at my original X11 session. Expected results: I should get a dialog with a message like this: --[ Error starting X server ]-- Unable to start a new X server. /usr/bin/Xorg exited with status 123. > Display failure details ------------------------------- The > is a disclousre triangle that, when clicked, reveals the contents of /var/log/Xorg.20.log. Does this happen every time? Other information: [forwarded from http://bugs.debian.org/420596]
I'm not sure that this is really a GDM issue. Note that gdmflexiserver (or the GDM socket if the program is calling the socket directly) should respond with "ERROR 3 X failed" in this case, so whatever program is telling GDM to start a flexi server could grab this and display a pop-up or message.
@Sam, is this with FUSA? If yes, please reassign to FUSA; thanks!
Nope just regular gdm. IIRC gnome-panel (and/or gnome-screensaver) just run gdmflexiserver and ignore its exit status/output.
I don't think gdm should pop up an error message in any of those cases. It should be up to the calling program to handle errors.
Indeed, I wasn't thinking clearly. Reassigning to gnome-session.
gnome-session has nothing to do with this :-) IMHO, it really should be gdmflexiserver that should report the error.
In this situation, who is calling gdmflexiserver (or directly calling GDM via the sockets protocol)? Is this FUSA, or gnome-panel or gnome-session?
Oh, sorry, I hadn't read the whole bug. In this case, it's probably the panel's fault since it's calling GDM via the sockets protocol.
bugzilla.gnome.org is being replaced by gitlab.gnome.org. We are closing all old bug reports in Bugzilla which have not seen updates for many years. If you can still reproduce this issue in a currently supported version of GNOME (currently that would be 3.38), then please feel free to report it at https://gitlab.gnome.org/GNOME/gnome-panel/-/issues/ Thank you for reporting this issue and we are sorry it could not be fixed.