[Bug 1151224] [NEW] ubiquity upstart: if ubiquity-dm fails to start for an unknown reason, init script exits with no error

cleary bernard.gray at gmail.com
Thu Mar 7 04:28:21 UTC 2013


Public bug reported:

I've been having some issues with ubiquity-dm only starting
intermittently on a custom livecd.

The problem as it turns out was that debconf was being locked by another init script, and this would cause ubiquity-dm to not start.
However, the provided upstart script ubiquity.conf was still exiting 'normally', ie with a 0 return code, despite ubiquity-dm failing to start.

Debugging with set -x in /etc/init/ubiquity.conf script section:
...
+ [ -n  ]
+ ubiquity-dm vt7 :0 ubuntu /usr/bin/ubiquity --greeter --only
debconf: DbDriver "config": /var/cache/debconf/config.dat is locked by another process: Resource temporarily unavailable
Traceback (most recent call last):
  File "/usr/bin/ubiquity-dm", line 629, in <module>
    dm = DM(vt, display, username)
  File "/usr/bin/ubiquity-dm", line 129, in __init__
    db = DebconfCommunicator('ubiquity', cloexec=True)
  File "/usr/lib/ubiquity/ubiquity/debconfcommunicator.py", line 37, in __init__
    write=self.dccomm.stdin)
  File "/usr/lib/python3/dist-packages/debconf.py", line 50, in __init__
    self.setUp(title)
  File "/usr/lib/python3/dist-packages/debconf.py", line 53, in setUp
    self.version = self.version(2)
  File "/usr/lib/python3/dist-packages/debconf.py", line 62, in <lambda>
    lambda *args, **kw: self.command(command, *args, **kw))
  File "/usr/lib/python3/dist-packages/debconf.py", line 83, in command
    status = int(status)
ValueError: invalid literal for int() with base 10: ''
+ [  ]
+ exit 0

Basically, there is an if statement that catches a couple of known
conditions for ubiquity-dm not starting, but there is no catch-all to
consider any other cases.

debian/ubiquity.ubiquity.upstart
...
        if ! ubiquity-dm vt7 :0 ubuntu /usr/bin/ubiquity $debug $automatic $choose $ldtp --only $frontend; then
            # has X crashed, or has ubiquity?
            if [ "$automatic" ] && ! [ -f /var/log/installer/version ]; then
                # in case we crashed before the X startup sequence
                plymouth quit || :
                exec ubiquity noninteractive $debug
            fi
        fi

I've attached a patch which simply inserts an 'else' catch-all.

** Affects: ubiquity (Ubuntu)
     Importance: Undecided
         Status: New

** Patch added: "ubiquity-debconflock.patch"
   https://bugs.launchpad.net/bugs/1151224/+attachment/3561428/+files/ubiquity-debconflock.patch

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

Title:
  ubiquity upstart: if ubiquity-dm fails to start for an unknown reason,
  init script exits with no error

Status in “ubiquity” package in Ubuntu:
  New

Bug description:
  I've been having some issues with ubiquity-dm only starting
  intermittently on a custom livecd.

  The problem as it turns out was that debconf was being locked by another init script, and this would cause ubiquity-dm to not start.
  However, the provided upstart script ubiquity.conf was still exiting 'normally', ie with a 0 return code, despite ubiquity-dm failing to start.

  Debugging with set -x in /etc/init/ubiquity.conf script section:
  ...
  + [ -n  ]
  + ubiquity-dm vt7 :0 ubuntu /usr/bin/ubiquity --greeter --only
  debconf: DbDriver "config": /var/cache/debconf/config.dat is locked by another process: Resource temporarily unavailable
  Traceback (most recent call last):
    File "/usr/bin/ubiquity-dm", line 629, in <module>
      dm = DM(vt, display, username)
    File "/usr/bin/ubiquity-dm", line 129, in __init__
      db = DebconfCommunicator('ubiquity', cloexec=True)
    File "/usr/lib/ubiquity/ubiquity/debconfcommunicator.py", line 37, in __init__
      write=self.dccomm.stdin)
    File "/usr/lib/python3/dist-packages/debconf.py", line 50, in __init__
      self.setUp(title)
    File "/usr/lib/python3/dist-packages/debconf.py", line 53, in setUp
      self.version = self.version(2)
    File "/usr/lib/python3/dist-packages/debconf.py", line 62, in <lambda>
      lambda *args, **kw: self.command(command, *args, **kw))
    File "/usr/lib/python3/dist-packages/debconf.py", line 83, in command
      status = int(status)
  ValueError: invalid literal for int() with base 10: ''
  + [  ]
  + exit 0

  Basically, there is an if statement that catches a couple of known
  conditions for ubiquity-dm not starting, but there is no catch-all to
  consider any other cases.

  debian/ubiquity.ubiquity.upstart
  ...
          if ! ubiquity-dm vt7 :0 ubuntu /usr/bin/ubiquity $debug $automatic $choose $ldtp --only $frontend; then
              # has X crashed, or has ubiquity?
              if [ "$automatic" ] && ! [ -f /var/log/installer/version ]; then
                  # in case we crashed before the X startup sequence
                  plymouth quit || :
                  exec ubiquity noninteractive $debug
              fi
          fi

  I've attached a patch which simply inserts an 'else' catch-all.

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




More information about the foundations-bugs mailing list