race condition on shutdown with more than one DM installed
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
gdm (Ubuntu) |
Fix Released
|
High
|
Unassigned | ||
Oneiric |
Fix Released
|
High
|
Unassigned | ||
kde-workspace (Ubuntu) |
Fix Released
|
Low
|
Unassigned | ||
Oneiric |
Fix Released
|
Low
|
Unassigned | ||
lightdm (Ubuntu) |
Fix Released
|
High
|
Unassigned | ||
Oneiric |
Fix Released
|
High
|
Unassigned | ||
lxdm (Ubuntu) |
Fix Released
|
Low
|
Unassigned | ||
Oneiric |
Fix Released
|
Low
|
Unassigned | ||
plymouth (Ubuntu) |
Fix Released
|
High
|
Unassigned | ||
Oneiric |
Fix Released
|
High
|
Unassigned | ||
upstart (Ubuntu) |
Fix Released
|
Medium
|
Unassigned | ||
Oneiric |
Fix Released
|
Medium
|
Unassigned | ||
uxlaunch (Ubuntu) |
Triaged
|
Low
|
Unassigned | ||
Oneiric |
Won't Fix
|
Low
|
Unassigned | ||
xdm (Ubuntu) |
Triaged
|
Low
|
Unassigned | ||
Oneiric |
Won't Fix
|
Low
|
Unassigned |
Bug Description
the migration from gdm to lightdm has revealed a race condition in /etc/init/
start on (... or (runlevel [016] and (stopped gdm or stopped kdm or stopped $otherdm)))
However, if more than one of these dm packages is installed, at least one of these 'stopped $dm' events will be emitted *on system startup* because whichever DM is not the default will have its job started and immediately stopped.
This means the second half of the AND is already satisfied, so as soon as the 'runlevel' event fires, plymouth starts up, racing the shutdown of the actually-running DM. And starting plymouth is bound to be faster than shutting down a running X session, which means plymouth and X are running at the same time and arguing about who controls the VT.
The result is that plymouth starts rendering, then X sets the VT into text mode on shutdown, causing plymouth's progress indicator (5 cycling dots) to be drawn over the text screen.
To fix this, we need the plymouth job to be able to distinguish between the *cause* of the DM job stopping. This probably means emitting a new event from the DM jobs, having plymouth look for this new event, and coordinating the transition with bidirectional Breaks: on the packages.
ProblemType: Bug
DistroRelease: Ubuntu 11.10
Package: plymouth 0.8.2-2ubuntu26
ProcVersionSign
Uname: Linux 3.0.0-9-generic x86_64
ApportVersion: 1.23-0ubuntu1
Architecture: amd64
Date: Mon Sep 19 17:03:00 2011
DefaultPlymouth: /lib/plymouth/
InstallationMedia: Ubuntu 10.04.1 LTS "Lucid Lynx" - Release amd64 (20100816.1)
MachineType: LENOVO 3249CTO
ProcCmdLine: BOOT_IMAGE=
ProcEnviron:
PATH=(custom, user)
LANG=en_US.UTF-8
SHELL=/bin/bash
ProcFB: 0 inteldrmfb
ProcKernelCmdLine: BOOT_IMAGE=
SourcePackage: plymouth
TextPlymouth: /lib/plymouth/
UpgradeStatus: Upgraded to oneiric on 2011-06-27 (84 days ago)
dmi.bios.date: 08/23/2010
dmi.bios.vendor: LENOVO
dmi.bios.version: 6QET52WW (1.22 )
dmi.board.name: 3249CTO
dmi.board.vendor: LENOVO
dmi.board.version: Not Available
dmi.chassis.
dmi.chassis.type: 10
dmi.chassis.vendor: LENOVO
dmi.chassis.
dmi.modalias: dmi:bvnLENOVO:
dmi.product.name: 3249CTO
dmi.product.
dmi.sys.vendor: LENOVO
Changed in lightdm (Ubuntu Oneiric): | |
importance: | Undecided → High |
status: | New → Triaged |
Changed in kde-workspace (Ubuntu Oneiric): | |
importance: | Undecided → Low |
Changed in lxdm (Ubuntu Oneiric): | |
importance: | Undecided → Low |
Changed in xdm (Ubuntu Oneiric): | |
importance: | Undecided → Low |
status: | New → Triaged |
Changed in gdm (Ubuntu Oneiric): | |
milestone: | none → ubuntu-11.10 |
Changed in lightdm (Ubuntu Oneiric): | |
milestone: | none → ubuntu-11.10 |
Changed in plymouth (Ubuntu Oneiric): | |
milestone: | none → ubuntu-11.10 |
Changed in gdm (Ubuntu Oneiric): | |
status: | Triaged → Fix Committed |
Changed in lightdm (Ubuntu Oneiric): | |
status: | Triaged → Fix Committed |
Changed in plymouth (Ubuntu Oneiric): | |
status: | Triaged → Fix Committed |
Changed in lxdm (Ubuntu Oneiric): | |
status: | Confirmed → Triaged |
tags: | added: kubuntu |
Changed in upstart (Ubuntu Oneiric): | |
status: | Triaged → Fix Committed |
Marking this bug as affecting all the DMs listed in /etc/init/ plymouth. conf. The bug is severity: high for plymouth/ lightdm/ gdm because this is a common upgrade scenario that needs to be addressed; I've marked it severity: low for the others. I'm certainly happy to help coordinate a conversion of any of the others for oneiric as well, however, if the maintainers of those packages are interested.