upgrade to upstart 1.3-0ubuntu11 causes unclean shutdown
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
sysvinit (Ubuntu) |
Fix Released
|
High
|
Clint Byrum | ||
Oneiric |
Fix Released
|
High
|
Clint Byrum | ||
upstart (Ubuntu) |
Invalid
|
High
|
Clint Byrum | ||
Oneiric |
Invalid
|
Undecided
|
Unassigned |
Bug Description
== SRU JUSTIFICATION ==
IMPACT: its possible, though not all that likely, that files and metadata will be out of sync when systems are shutdown or rebooted after upgrading upstart or any of the libraries it depends on (namely, libc6). Therefore the potential impact is data corruption.
TEST CASE:
Steps to reproduce:
1. Start an Ubuntu 11.10 Oneiric instance on EC2.
Example: ec2run ami-bbf539d2 -t t1.micro -k key
2. Save sudo lsof for reference.
3. apt-cache show upstart
The stock version of upstart installed is 1.3-0ubuntu10.
4. sudo apt-get update; sudo apt-get install upstart
upstart is upgraded to 1.3-0ubuntu11
5. Verify that /var/run/
6. Save sudo lsof for reference.
7. sudo shutdown -h now
The console displays while unmounting:
mount: / is busy
This error will not show when the bug is fixed.
DEV FIX: The problem is that /var/run is cleared out for the transition to /run before the 'init.upgraded' flag file is checked for. The order of operations is changed.
REGRESSION POTENTIAL: The code path that is changed is very straight forward and tight, just swapping the order of two basic sets of operations. I would consider this to have a low regression potential then.
=====
This causes filesystem recovery errors on next boot.
The post-upgrade lsof is attached.
Related branches
- Steve Langasek: Pending requested
-
Diff: 138 lines (+65/-29)3 files modifieddebian/changelog (+14/-0)
debian/src/initscripts/etc/init.d/sendsigs (+23/-1)
debian/src/initscripts/etc/init.d/umountroot (+28/-28)
Changed in upstart (Ubuntu): | |
status: | Confirmed → Triaged |
assignee: | nobody → Clint Byrum (clint-fewbar) |
Changed in upstart (Ubuntu Oneiric): | |
status: | New → Invalid |
Changed in sysvinit (Ubuntu Oneiric): | |
status: | New → In Progress |
Changed in sysvinit (Ubuntu): | |
status: | Triaged → In Progress |
Changed in sysvinit (Ubuntu Oneiric): | |
importance: | Undecided → High |
assignee: | nobody → Clint Byrum (clint-fewbar) |
description: | updated |
verified per original reporter's instructions:
$ apt-cache policy upstart us-east- 1.ec2.archive. ubuntu. com/ubuntu/ oneiric- updates/ main amd64 Packages us-east- 1.ec2.archive. ubuntu. com/ubuntu/ oneiric/main amd64 Packages dpkg/status failsafe. conf ...
upstart:
Installed: 1.3-0ubuntu10
Candidate: 1.3-0ubuntu11
Version table:
1.3-0ubuntu11 0
500 http://
*** 1.3-0ubuntu10 0
500 http://
100 /var/lib/
$ sudo lsof > lsof.out.pre
$ sudo apt-get install upstart
...
Setting up upstart (1.3-0ubuntu11) ...
Installing new version of config file /etc/init/
$ sudo lsof > lsof.out.post
$ sudo reboot
I'll attach lsof.out.post, lsof.out.pre, and a console log showing the 'mount: / is busy' and subsequent check on reboot.