Skip to content

GitLab

  • Projects
  • Groups
  • Snippets
  • Help
    • Loading...
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
  • Sign in
G
gdm
  • Project overview
    • Project overview
    • Details
    • Activity
    • Releases
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
  • Issues 505
    • Issues 505
    • List
    • Boards
    • Labels
    • Service Desk
    • Milestones
  • Merge Requests 5
    • Merge Requests 5
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
  • Operations
    • Operations
    • Incidents
    • Environments
  • Packages & Registries
    • Packages & Registries
    • Container Registry
  • Analytics
    • Analytics
    • CI/CD
    • Repository
    • Value Stream
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Members
    • Members
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • GNOME
  • gdm
  • Issues
  • #419

Closed
Open
Created Sep 06, 2018 by Iain Lane@iainlDeveloper

wayland -> X fallback is broken

tl;dr this is due to 70861874

After upgrading to 3.30 from 3.29.90 on my NVidia system, which uses X, I just had a blinking black cursor. Here's what's in the journal:

Sep 06 10:00:31 raleigh.local gdm3[3657]: GdmLocalDisplayFactory: display status changed: 4
Sep 06 10:00:31 raleigh.local gdm3[3657]: GdmDisplay: finish display
Sep 06 10:00:31 raleigh.local gdm3[3657]: GdmDisplayStore: Unreffing display: 0x55808b22d250
Sep 06 10:00:31 raleigh.local gdm3[3657]: GdmDisplay: Disposing display

4 is GDM_DISPLAY_FINISHED. By contrast a successful fallback shows

Jul 24 17:23:58 raleigh.local gdm3[3799]: GdmDisplay: unmanage display
Jul 24 17:23:58 raleigh.local gdm3[3799]: GdmDisplay: display lasted 2.960566 seconds
Jul 24 17:23:58 raleigh.local gdm3[3799]: GdmLocalDisplayFactory: display status changed: 4
Jul 24 17:23:58 raleigh.local gdm3[3799]: GdmDisplayStore: Unreffing display: 0x55d41f9c3250
Jul 24 17:23:58 raleigh.local gdm3[3799]: GdmLocalDisplayFactory: Adding display on seat seat0

The difference in that in the working case the display is unmanaged, which happens in gdm_display_unmanaged, called from self_destruct - which itself is called when the greeter exits. self_destruct contains

        if (gdm_display_get_status (self) == GDM_DISPLAY_MANAGED) {
                gdm_display_unmanage (self);
        }

Setting a display to GDM_DISPLAY_MANAGED happens when RegisterDisplay is called. Indeed in the "good" log I have

Jul 24 17:23:56 raleigh.local gdm3[3799]: GdmManager: trying to register new display
Jul 24 17:23:56 raleigh.local gdm3[3799]: GdmLocalDisplayFactory: display status changed: 2

and the bad one doesn't have it.

I suppose what happens is that gdm-wayland-session fails before the timeout introduced in 70861874 fires, and so the display is not managed and we fail to unmanage it, which would cause the Xorg fallback to happen.

The display is GDM_DISPLAY_PREPARED when this failure happens, so perhaps it's an option to set the display to GDM_DISPLAY_FAILED in this case. Dunno.

Assignee
Assign to
None
Milestone
None
Assign milestone
Time tracking
None
Due date
None