← Back to team overview

group.of.nepali.translators team mailing list archive

[Bug 1794053] [NEW] pkgCacheFile unlocks in destructor even if it did not acquire lock

 

Public bug reported:

[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.pkgsystem_lock()

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.pkgsystem_unlock()

[Regression potential]
This fixes a regression introduced in 2001 by 

commit b2e465d6d32d2dc884f58b94acb7e35f671a87fe
Author: Arch Librarian <arch@xxxxxxxxxxxxx>
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.

** Affects: apt (Ubuntu)
     Importance: High
     Assignee: Julian Andres Klode (juliank)
         Status: In Progress

** Affects: apt (Ubuntu Trusty)
     Importance: High
         Status: Triaged

** Affects: apt (Ubuntu Xenial)
     Importance: High
         Status: Triaged

** Affects: apt (Ubuntu Bionic)
     Importance: High
         Status: Triaged

** Affects: apt (Ubuntu Cosmic)
     Importance: High
     Assignee: Julian Andres Klode (juliank)
         Status: In Progress

** Changed in: apt (Ubuntu)
   Importance: Undecided => High

** Changed in: apt (Ubuntu)
       Status: New => In Progress

** Changed in: apt (Ubuntu)
     Assignee: (unassigned) => Julian Andres Klode (juliank)

** Also affects: apt (Ubuntu Xenial)
   Importance: Undecided
       Status: New

** Also affects: apt (Ubuntu Trusty)
   Importance: Undecided
       Status: New

** Also affects: apt (Ubuntu Cosmic)
   Importance: High
     Assignee: Julian Andres Klode (juliank)
       Status: In Progress

** Also affects: apt (Ubuntu Bionic)
   Importance: Undecided
       Status: New

** Changed in: apt (Ubuntu Bionic)
   Importance: Undecided => High

** Changed in: apt (Ubuntu Xenial)
   Importance: Undecided => High

** Changed in: apt (Ubuntu Trusty)
   Importance: Undecided => High

** Changed in: apt (Ubuntu Trusty)
       Status: New => Triaged

** Changed in: apt (Ubuntu Xenial)
       Status: New => Triaged

** Changed in: apt (Ubuntu Bionic)
       Status: New => Triaged

-- 
You received this bug notification because you are a member of नेपाली
भाषा समायोजकहरुको समूह, which is subscribed to Xenial.
Matching subscriptions: Ubuntu 16.04 Bugs
https://bugs.launchpad.net/bugs/1794053

Title:
  pkgCacheFile unlocks in destructor even if it did not acquire lock

Status in apt package in Ubuntu:
  In Progress
Status in apt source package in Trusty:
  Triaged
Status in apt source package in Xenial:
  Triaged
Status in apt source package in Bionic:
  Triaged
Status in apt source package in Cosmic:
  In Progress

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.pkgsystem_lock()

  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.pkgsystem_unlock()

  [Regression potential]
  This fixes a regression introduced in 2001 by 

  commit b2e465d6d32d2dc884f58b94acb7e35f671a87fe
  Author: Arch Librarian <arch@xxxxxxxxxxxxx>
  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.

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


Follow ups