[Bug 1260041] Re: Unattended-Upgrades crashes with a dpkg error

Balint Reczey balint.reczey at canonical.com
Thu Jul 19 11:23:03 UTC 2018


** Description changed:

+ [Impact]
+ 
+  * Unattended-upgrades fails upgrading packages in the middle of a dpkg/apt call due to a parallel process acquiring apt or dpkg lock while u-u is running, but u-u running apt/dpkg anyway without successfully re-acquiring the lock.
+  * The fix is stopping processing updates when the lock is detected to be lost.
+ 
+ [Test Case]
+ 
+  * Set up a system with packages (> 30) to be upgraded:
+ $ lxc launch ubuntu:b36ec647e374 uu-lock-bail
+ 
+  * Set up two shells to run commands in parallel
+  * In shell "A" run sudo apt update && sudo unattended-upgrade --dry-run --verbose --debug
+  * After u-u started installing the updates run the following command in shell "B":
+ $  while sleep 0.1; do python3 -c 'import apt, apt_pkg, time; print(apt_pkg.pkgsystem_lock()); time.sleep(2)' ; done
+ 
+ * With not fixed u-u observe the following exception repeated in shell "B", then True being printed when the lock is successfully stolen from u-u:
+ ...
+ Traceback (most recent call last):
+   File "<string>", line 1, in <module>
+ apt_pkg.Error: E:Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable), E:Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
+ Traceback (most recent call last):
+   File "<string>", line 1, in <module>
+ apt_pkg.Error: E:Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable), E:Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
+ True
+ Traceback (most recent call last):
+   File "<string>", line 1, in <module>
+ apt_pkg.Error: E:Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable), E:Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
+ True
+ True
+ True
+ True
+ ...
+ 
+ Buggy u-u continues operation even after the lock is stolen.
+ 
+ Fixed u-u stops operation with a printout similar to the following when it detects the lock to be stolen:
+ ...
+ Writing dpkg log to /var/log/unattended-upgrades/unattended-upgrades-dpkg.log
+ /usr/bin/dpkg --status-fd 9 --no-triggers --unpack --auto-deconfigure /var/cache/apt/archives/distro-info-data_0.37ubuntu0.1_all.deb 
+ /usr/bin/dpkg --status-fd 9 --configure --pending 
+ Exception happened during upgrade.
+ Traceback (most recent call last):
+   File "./unattended-upgrade", line 539, in cache_commit
+     res = cache.commit(install_progress=iprogress)
+   File "./unattended-upgrade", line 360, in __exit__
+     apt_pkg.pkgsystem_lock()
+ apt_pkg.Error: E:Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable), E:Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
+ Exception happened during upgrade.
+ NoneType: None
+ Installing the upgrades failed!
+ error message: E:Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable), E:Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
+ dpkg returned a error! See /var/log/unattended-upgrades/unattended-upgrades-dpkg.log for details
+ ...
+ 
+ [Regression Potential]
+ 
+  * As a consequence of the fix unattended-upgrade stops installing
+ security-updates when an other dpkg frontend's parallel activity is
+ detected. This is intentional to prevent parallel execution of dpkg and
+ potentially leaving the system in an inconsistent state. The full fix
+ will be implemented in LP: #1781169 and changing u-u to use the new
+ locking mechanism, and then u-u will never lose the lock.
+ 
+ [Other Info]
+ 
+ I believe parallel dpkg calls cause many breakages reported against u-u
+ and other packages listing breaking maintainer scripts.
+ 
+ [Original Bug Text]
+ 
  As per https://bugs.launchpad.net/ubuntu/+source/unattended-
  upgrades/+bug/1052360/comments/17, I am filing a new bug with the
  specific error I am running into. This has been going on for quite a
  while now.
  
  Also, my log files still show up as I described in
  https://bugs.launchpad.net/ubuntu/+source/unattended-
  upgrades/+bug/1052360/comments/14.
  
  ProblemType: Bug
  DistroRelease: Ubuntu 13.10
  Package: unattended-upgrades 0.79.3ubuntu8
  ProcVersionSignature: Ubuntu 3.11.0-14.21-generic 3.11.7
  Uname: Linux 3.11.0-14-generic x86_64
  NonfreeKernelModules: fglrx
  ApportVersion: 2.12.5-0ubuntu2.1
  Architecture: amd64
  Date: Wed Dec 11 11:07:09 2013
  MarkForUpload: True
  PackageArchitecture: all
  SourcePackage: unattended-upgrades
  UpgradeStatus: Upgraded to saucy on 2013-10-18 (54 days ago)

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

Title:
  Unattended-Upgrades crashes with a dpkg error

Status in unattended-upgrades package in Ubuntu:
  New

Bug description:
  [Impact]

   * Unattended-upgrades fails upgrading packages in the middle of a dpkg/apt call due to a parallel process acquiring apt or dpkg lock while u-u is running, but u-u running apt/dpkg anyway without successfully re-acquiring the lock.
   * The fix is stopping processing updates when the lock is detected to be lost.

  [Test Case]

   * Set up a system with packages (> 30) to be upgraded:
  $ lxc launch ubuntu:b36ec647e374 uu-lock-bail

   * Set up two shells to run commands in parallel
   * In shell "A" run sudo apt update && sudo unattended-upgrade --dry-run --verbose --debug
   * After u-u started installing the updates run the following command in shell "B":
  $  while sleep 0.1; do python3 -c 'import apt, apt_pkg, time; print(apt_pkg.pkgsystem_lock()); time.sleep(2)' ; done

  * With not fixed u-u observe the following exception repeated in shell "B", then True being printed when the lock is successfully stolen from u-u:
  ...
  Traceback (most recent call last):
    File "<string>", line 1, in <module>
  apt_pkg.Error: E:Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable), E:Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
  Traceback (most recent call last):
    File "<string>", line 1, in <module>
  apt_pkg.Error: E:Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable), E:Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
  True
  Traceback (most recent call last):
    File "<string>", line 1, in <module>
  apt_pkg.Error: E:Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable), E:Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
  True
  True
  True
  True
  ...

  Buggy u-u continues operation even after the lock is stolen.

  Fixed u-u stops operation with a printout similar to the following when it detects the lock to be stolen:
  ...
  Writing dpkg log to /var/log/unattended-upgrades/unattended-upgrades-dpkg.log
  /usr/bin/dpkg --status-fd 9 --no-triggers --unpack --auto-deconfigure /var/cache/apt/archives/distro-info-data_0.37ubuntu0.1_all.deb 
  /usr/bin/dpkg --status-fd 9 --configure --pending 
  Exception happened during upgrade.
  Traceback (most recent call last):
    File "./unattended-upgrade", line 539, in cache_commit
      res = cache.commit(install_progress=iprogress)
    File "./unattended-upgrade", line 360, in __exit__
      apt_pkg.pkgsystem_lock()
  apt_pkg.Error: E:Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable), E:Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
  Exception happened during upgrade.
  NoneType: None
  Installing the upgrades failed!
  error message: E:Could not get lock /var/lib/dpkg/lock - open (11: Resource temporarily unavailable), E:Unable to lock the administration directory (/var/lib/dpkg/), is another process using it?
  dpkg returned a error! See /var/log/unattended-upgrades/unattended-upgrades-dpkg.log for details
  ...

  [Regression Potential]

   * As a consequence of the fix unattended-upgrade stops installing
  security-updates when an other dpkg frontend's parallel activity is
  detected. This is intentional to prevent parallel execution of dpkg
  and potentially leaving the system in an inconsistent state. The full
  fix will be implemented in LP: #1781169 and changing u-u to use the
  new locking mechanism, and then u-u will never lose the lock.

  [Other Info]

  I believe parallel dpkg calls cause many breakages reported against
  u-u and other packages listing breaking maintainer scripts.

  [Original Bug Text]

  As per https://bugs.launchpad.net/ubuntu/+source/unattended-
  upgrades/+bug/1052360/comments/17, I am filing a new bug with the
  specific error I am running into. This has been going on for quite a
  while now.

  Also, my log files still show up as I described in
  https://bugs.launchpad.net/ubuntu/+source/unattended-
  upgrades/+bug/1052360/comments/14.

  ProblemType: Bug
  DistroRelease: Ubuntu 13.10
  Package: unattended-upgrades 0.79.3ubuntu8
  ProcVersionSignature: Ubuntu 3.11.0-14.21-generic 3.11.7
  Uname: Linux 3.11.0-14-generic x86_64
  NonfreeKernelModules: fglrx
  ApportVersion: 2.12.5-0ubuntu2.1
  Architecture: amd64
  Date: Wed Dec 11 11:07:09 2013
  MarkForUpload: True
  PackageArchitecture: all
  SourcePackage: unattended-upgrades
  UpgradeStatus: Upgraded to saucy on 2013-10-18 (54 days ago)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/unattended-upgrades/+bug/1260041/+subscriptions



More information about the foundations-bugs mailing list