Problems switching VTs
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Mir |
New
|
Undecided
|
Unassigned | ||
mir (Ubuntu) |
New
|
Undecided
|
Unassigned |
Bug Description
I've hit an issue where LightDM trying to switch directly from a USC-owned VT to an X-owned VT crashes X instead and doesn't switch VTs after all.
I'm not sure exactly where the problem lies or exactly what the root cause is. But here's my reproduction steps:
1) bileto host-upgrade 1679 # upgrades unity8 to have an in-session lockscreen -- you must be in vivid, xenial, or zesty
2) sudo apt update && sudo apt upgrade
3) sudo apt install unity8-
4) Reboot
5) Log one user into a unity7 session.
6) Switch users and log a separate user into a unity8 session.
7) In unity8, press Ctrl+L to show the in-session lockscreen and switch to the unity7 user.
8) Usually this breaks things and the switch doesn't happen. Sometimes it will work in which case switch back and forth until it does.
That's a bit of a pain, I understand. It's just the how I hit this bug. I think switching directly from a USC-owned VT to an X-owned VT is hitting a new and odd code path.
What happens under the cover that I've found is that X fails during EnterVT and aborts. Which confuses everyone else, including lightdm.
RAOF says "The hypothesis is that Mir fails to drop master for whatever reason, which results in it (correctly) NAKing the VT switch. (We call drmDropMaster, but that can fail; if it does, we throw an exception, (silently) catch it, and NAK the VT switch)"
I have a USC log with MIR_SERVER_
Changed in mir (Ubuntu): | |
assignee: | nobody → Chris Halse Rogers (raof) |
description: | updated |
description: | updated |
Changed in mir (Ubuntu): | |
assignee: | Chris Halse Rogers (raof) → nobody |
Crashing X (or any display server) can happen if it tries to make drm calls when not owning DRM mastership. Each display server needs to have its own guarantees that it only calls drm functions after successfully taking DRM mastership.