[Bug 1062202] Re: [SRU] libnih upgrade does not respawn init, resulting in unclean shutdown

Marc Deslauriers marc.deslauriers at canonical.com
Fri Oct 5 11:57:50 UTC 2012


FYI, for testing, you can also do a "dmesg | grep orphan" once the
machine has rebooted to see if it wasn't properly unmounted.

-- 
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to libnih in Ubuntu.
https://bugs.launchpad.net/bugs/1062202

Title:
  [SRU] libnih upgrade does not respawn init, resulting in unclean
  shutdown

Status in “libnih” package in Ubuntu:
  New

Bug description:
  If required package libnih1 (or libnih-dbus1) are upgraded, Upstart
  needs to be restarted to avoid it holding open "stale" file
  descriptors to files in the old versions of the packages. This results
  in the following issues:

  - the shutdown sequence displays error messages.
  - the shutdown sequence results in an unclean unmount of the root partition.
  - the subsequent boot experience is slowed down and may show potentially alarming messages to users.

  All this amounts to a non-optimal user experience.

  See original bug 740390.

  
  = Fix =

  The fix released for quantal on bug 740390 is to add an explicit
  debian/libnih1.postinst and debian/libnih-dbus1.postinst maintainer
  script that simply touches a 'magic file' that forces upstart to
  restart on shutdown. The magic file is:

      /var/run/init.upgraded

  This magic file is used by /etc/init.d/umountroot as a signal to ask
  Upstart to re-exec itself and thus relinquish all "stale" file
  descriptors it may have open.

  The magic file is already used by:

  - libdbus (package dbus): recent change - see bug 740390
  - libc6 (package eglibc): since 2011-01-12.

  
  = Justification for Back-Porting =

  The fix is simple and has already been released to quantal.

  
  = Test Case =

  1) Boot a Precise system without the 'quiet' and 'splash' boot
  options.

  2) Check version of libnih1 is 1.0.3-4ubuntu9:

       $ dpkg -p libnih1 libnih-dbus1|grep ^Version:

  3) force a re-install of libnih1:

      $ sudo apt-get install --reinstall libnih1 libnih-dbus1

  4) Add a sleep to /etc/init.d/umountroot so you can observe any
  possible error message:

    --- /etc/init.d/umountroot.ORIG 2012-10-05 11:48:40.384382009 +0100
  +++ /etc/init.d/umountroot      2012-10-05 11:48:55.024382058 +0100
  @@ -86,6 +86,7 @@
          mount    $MOUNT_FORCE_OPT -n -o remount,ro -t dummytype dummydev / 2>/dev/null \
          || mount $MOUNT_FORCE_OPT -n -o remount,ro              dummydev / 2>/dev/null \
          || mount $MOUNT_FORCE_OPT -n -o remount,ro                       /
  +       sleep 5
          ES=$?
          [ "$VERBOSE" = no ] || log_action_end_msg $ES
   }

  5) Shutdown

      $ sudo shutdown -h now

  6) Ensure you see the expected error message. The last 2 lines of
  output should be:

       umount: /run/lock: not mounted
       mount: / is busy

     (Note that the 'umount' message is not an error - just
  informational).

  7) Reboot again without the 'quiet' and 'splash' boot options.

  8) Install libnih1 and lib-dbus1 both at version '1.0.3-4ubuntu9.1'.

  9) Check that install has created the expected magic file:

      ls -l /var/run/init.upgraded

  10) Shutdown

      $ sudo shutdown -h now

  11) Ensure you see the expected output. The last line of output should
  be:

       umount: /run/lock: not mounted

       There should be no 'mount: / is busy' line.

  12) Reboot and revert changes to /etc/init.d/umountroot if desired.

  
  = Regression Potential =

  No regression potential.

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/libnih/+bug/1062202/+subscriptions




More information about the foundations-bugs mailing list