Unattended-Upgrades crashes with a dpkg error
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
unattended-upgrades (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned | ||
Xenial |
Fix Released
|
Undecided
|
Unassigned | ||
Bionic |
Fix Released
|
Undecided
|
Unassigned |
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_
* 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/
/usr/bin/dpkg --status-fd 9 --no-triggers --unpack --auto-deconfigure /var/cache/
/usr/bin/dpkg --status-fd 9 --configure --pending
Exception happened during upgrade.
Traceback (most recent call last):
File "./unattended-
res = cache.commit(
File "./unattended-
apt_
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/
...
[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:/
Also, my log files still show up as I described in https:/
ProblemType: Bug
DistroRelease: Ubuntu 13.10
Package: unattended-upgrades 0.79.3ubuntu8
ProcVersionSign
Uname: Linux 3.11.0-14-generic x86_64
NonfreeKernelMo
ApportVersion: 2.12.5-0ubuntu2.1
Architecture: amd64
Date: Wed Dec 11 11:07:09 2013
MarkForUpload: True
PackageArchitec
SourcePackage: unattended-upgrades
UpgradeStatus: Upgraded to saucy on 2013-10-18 (54 days ago)
description: | updated |
Changed in unattended-upgrades (Ubuntu): | |
status: | New → Fix Released |
In Cosmic 1.4ubuntu1 fixed the issue:
* Unlock for dpkg operations with apt_pkg. pkgsystem_ unlock_ inner() when it
is available, also stop running when reacquiring the lock fails.
Thanks to to Julian Andres Klode for original partial patch