pkgCacheFile unlocks in destructor even if it did not acquire lock
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
apt (Ubuntu) |
Fix Released
|
High
|
Julian Andres Klode | ||
Trusty |
Triaged
|
High
|
Unassigned | ||
Xenial |
Fix Released
|
High
|
Unassigned | ||
Bionic |
Fix Released
|
High
|
Unassigned | ||
Cosmic |
Fix Released
|
High
|
Julian Andres Klode |
Bug Description
[Impact]
Closing a cache file unlocks the system (loses the lock). This randomly breaks ubuntu-make, for example.
[Test case]
The following Python code fails, but should succeed, as it locks first, opens a cache and closes it, and then unlocks.
import apt_pkg, os, gc
apt_pkg.init()
apt_pkg.
os.system("ls -l /proc/%d/fd" % os.getpid())
apt_pkg.Cache()
gc.collect()
os.system("ls -l /proc/%d/fd" % os.getpid())
apt_pkg.
[Regression potential]
This fixes a regression introduced in 2001 by
commit b2e465d6d32d2dc
Author: Arch Librarian <email address hidden>
Date: Mon Sep 20 16:56:32 2004 +0000
Join with aliencode
Author: jgg
Date: 2001-02-20 07:03:16 GMT
Join with aliencode
The fix is to only UnLock from the cache file if the cache file locked before. It's unclear how far code relies on that regression. That said, any potential regression should be easily noticable, as it would be a case of not unlocking where we were unlocking before.
Changed in apt (Ubuntu): | |
importance: | Undecided → High |
status: | New → In Progress |
assignee: | nobody → Julian Andres Klode (juliank) |
Changed in apt (Ubuntu Bionic): | |
importance: | Undecided → High |
Changed in apt (Ubuntu Xenial): | |
importance: | Undecided → High |
Changed in apt (Ubuntu Trusty): | |
importance: | Undecided → High |
status: | New → Triaged |
Changed in apt (Ubuntu Xenial): | |
status: | New → Triaged |
Changed in apt (Ubuntu Bionic): | |
status: | New → Triaged |
Changed in apt (Ubuntu Cosmic): | |
status: | In Progress → Fix Committed |
This bug was fixed in the package apt - 1.7.0~rc2ubuntu1
---------------
apt (1.7.0~rc2ubuntu1) cosmic; urgency=medium
* Fix calculation of elapsed usec in downloads
* pkgCacheFile: Only unlock in destructor if locked before (LP: #1794053)
-- Julian Andres Klode <email address hidden> Mon, 24 Sep 2018 12:18:26 +0200