[Bug 1265729] Re: unattended-upgrade might enter an infinite loop if an upgradable package is on hold

Brian Murray brian at ubuntu.com
Fri Feb 14 19:22:58 UTC 2014


** Changed in: unattended-upgrades (Ubuntu)
       Status: Incomplete => Triaged

** Changed in: unattended-upgrades (Ubuntu)
   Importance: Undecided => Medium

** Changed in: unattended-upgrades (Ubuntu)
     Assignee: (unassigned) => Brian Murray (brian-murray)

-- 
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/1265729

Title:
  unattended-upgrade might enter an infinite loop if an upgradable
  package is on hold

Status in “unattended-upgrades” package in Ubuntu:
  Triaged

Bug description:
  If a package is upgradable but it is set on hold, unattende-upgrade
  might enter a infinite 100% CPU loop.

  From the log:

  2014-01-03 07:19:06,777 INFO Initial blacklisted packages: mysql-server mysql-server-5.1 mysql-server-5.5 mysql-server-core-5.1 mysql-server-core-5.5
  2014-01-03 07:19:06,777 INFO Starting unattended upgrades script
  2014-01-03 07:19:06,778 INFO Allowed origins are: ['o=Ubuntu,a=precise-security']
  2014-01-03 07:19:09,694 INFO Initial blacklisted packages: mysql-server mysql-server-5.1 mysql-server-5.5 mysql-server-core-5.1 mysql-server-core-5.5
  2014-01-03 07:19:09,694 INFO Starting unattended upgrades script
  2014-01-03 07:19:09,695 INFO Allowed origins are: ['o=Ubuntu,a=precise-security']
  2014-01-03 07:19:11,359 DEBUG Checking: curl (["<Origin component:'main' archive:'precise-updates' origin:'Ubuntu' label:'Ubuntu' site:'mirrors.service.softlayer.com' isTrusted:True>", "<Origin component:'main' 
  archive:'precise-security' origin:'Ubuntu' label:'Ubuntu' site:'mirrors.service.softlayer.com' isTrusted:True>"])
  2014-01-03 07:19:11,403 DEBUG pkg 'curl' is on hold
  2014-01-03 07:19:11,403 DEBUG sanity check failed
  2014-01-03 07:19:12,318 DEBUG Checking: libcurl3 (["<Origin component:'main' archive:'precise-updates' origin:'Ubuntu' label:'Ubuntu' site:'mirrors.service.softlayer.com' isTrusted:True>", "<Origin component:'ma
  in' archive:'precise-security' origin:'Ubuntu' label:'Ubuntu' site:'mirrors.service.softlayer.com' isTrusted:True>"])
  2014-01-03 07:19:12,934 DEBUG Checking: libcurl3-gnutls (["<Origin component:'main' archive:'precise-updates' origin:'Ubuntu' label:'Ubuntu' site:'mirrors.service.softlayer.com' isTrusted:True>", "<Origin component:'main' archive:'precise-security' origin:'Ubuntu' label:'Ubuntu' site:'mirrors.service.softlayer.com' isTrusted:True>"])
  2014-01-03 07:19:13,134 DEBUG pkg 'libcurl3-gnutls' is on hold
  2014-01-03 07:19:13,134 DEBUG sanity check failed
  2014-01-03 07:19:14,295 DEBUG pkgs that look like they should be upgraded: libcurl3
  2014-01-03 07:19:14,328 DEBUG blacklist: ['mysql-server', 'mysql-server-5.1', 'mysql-server-5.5', 'mysql-server-core-5.1', 'mysql-server-core-5.5']
  2014-01-03 07:19:15,102 DEBUG Checking (blacklist): libcurl3
  2014-01-03 07:19:16,323 INFO Packages that are auto removed: ''
  2014-01-03 07:19:16,323 DEBUG InstCount=0 DelCount=0 BrokenCout=0
  2014-01-03 07:19:16,323 INFO Packages that are upgraded: libcurl3
  2014-01-03 07:19:16,324 INFO Writing dpkg log to '/var/log/unattended-upgrades/unattended-upgrades-dpkg_2014-01-03_07:19:16.324186.log'
  2014-01-03 07:19:16,350 DEBUG found  partition of size 0 ([])
  2014-01-03 07:19:17,118 DEBUG applying set []
  2014-01-03 07:19:24,010 DEBUG left to upgrade set(['libcurl3'])
  2014-01-03 07:19:24,037 DEBUG found  partition of size 0 ([])
  2014-01-03 07:19:24,891 DEBUG applying set []
  2014-01-03 07:19:32,046 DEBUG left to upgrade set(['libcurl3'])
  2014-01-03 07:19:32,080 DEBUG found  partition of size 0 ([])
  2014-01-03 07:19:32,939 DEBUG applying set []
  2014-01-03 07:19:39,982 DEBUG left to upgrade set(['libcurl3'])
  2014-01-03 07:19:40,017 DEBUG found  partition of size 0 ([])
  2014-01-03 07:19:40,893 DEBUG applying set []
  2014-01-03 07:19:48,116 DEBUG left to upgrade set(['libcurl3'])
  2014-01-03 07:19:48,149 DEBUG found  partition of size 0 ([])
  2014-01-03 07:19:49,002 DEBUG applying set []
  2014-01-03 07:19:55,605 DEBUG left to upgrade set(['libcurl3'])
  2014-01-03 07:19:55,639 DEBUG found  partition of size 0 ([])

  
  This patch seems to fix the issue:
  --- /tmp/unattended-upgrade	2014-01-03 08:00:44.962143452 +0000
  +++ /usr/bin/unattended-upgrade	2014-01-03 08:00:49.010144637 +0000
  @@ -297,6 +297,8 @@
               else:
                   continue
               changes = [pkg.name for pkg in cache.get_changes()]
  +            if not changes:
  +		continue
               if len(changes) == 1:
                   logging.debug("found leaf package %s" % pkg.name)
                   smallest_partition = changes

  
  ubuntu-bug report:
  ProblemType: Bug
  ApportVersion: 2.0.1-0ubuntu17.6
  Architecture: amd64
  Date: Fri Jan  3 07:40:10 2014
  Dependencies:
   apt 0.8.16~exp12+ll2 [origin: <myrepo>.com]
   apt-utils 0.8.16~exp12+ll2 [origin: <myrepo>.com]
   coreutils 8.13-3ubuntu3.2
   debconf 1.5.42ubuntu1
   dpkg 1.16.1.2ubuntu7.2
   gcc-4.6-base 4.6.3-1ubuntu5
   gnupg 1.4.11-3ubuntu2.5 [modified: usr/lib/gnupg/gpgkeys_curl usr/lib/gnupg/gpgkeys_hkp]
   gpgv 1.4.11-3ubuntu2.5
   libacl1 2.2.51-5ubuntu1
   libapt-inst1.4 0.8.16~exp12+ll2 [origin: <myrepo>.com]
   libapt-pkg4.12 0.8.16~exp12+ll2 [origin: <myrepo>.com]
   libattr1 1:2.4.46-5ubuntu1
   libbz2-1.0 1.0.6-1
   libc-bin 2.15-0ubuntu10.5
   libc6 2.15-0ubuntu10.5
   libdb5.1 5.1.25-11build1
   libexpat1 2.0.1-7.2ubuntu1.1
   libgcc1 1:4.6.3-1ubuntu5
   liblzma5 5.1.1alpha+20110809-3
   libncursesw5 5.9-4
   libreadline6 6.2-8
   libselinux1 2.1.0-4.1ubuntu1
   libsqlite3-0 3.7.9-2ubuntu1.1
   libssl1.0.0 1.0.1-4ubuntu5.10
   libstdc++6 4.6.3-1ubuntu5
   libtinfo5 5.9-4
   libusb-0.1-4 2:0.1.12-20
   lsb-release 4.0-0ubuntu20.3
   mime-support 3.51-1ubuntu1
   multiarch-support 2.15-0ubuntu10.5
   perl-base 5.14.2-6ubuntu2.3
   python 2.7.3-0ubuntu2.2
   python-apt 0.8.3ubuntu7.1
   python-apt-common 0.8.3ubuntu7.1
   python-minimal 2.7.3-0ubuntu2.2
   python2.7 2.7.3-0ubuntu3.4
   python2.7-minimal 2.7.3-0ubuntu3.4
   readline-common 6.2-8
   tar 1.26-4ubuntu1
   tzdata 2013g-0ubuntu0.12.04
   ubuntu-keyring 2011.11.21.1
   ucf 3.0025+nmu2ubuntu1
   xz-utils 5.1.1alpha+20110809-3
   zlib1g 1:1.2.3.4.dfsg-3ubuntu4
  DistroRelease: Ubuntu 12.04
  MarkForUpload: True
  Package: unattended-upgrades 0.76ubuntu1 [modified: usr/bin/unattended-upgrade]
  PackageArchitecture: all
  ProcEnviron:
   TERM=xterm
   PATH=(custom, no user)
   LANG=en_US.UTF-8
   SHELL=/bin/bash
  ProcVersionSignature: Ubuntu 3.2.0-48.74-virtual 3.2.46
  SourcePackage: unattended-upgrades
  Tags: third-party-packages precise
  Uname: Linux 3.2.0-48-virtual x86_64
  UpgradeStatus: Upgraded to precise on 2013-06-28 (189 days ago)
  modified.conffile..etc.apt.apt.conf.d.50unattended.upgrades:
   // Automatically upgrade packages from these (origin:archive) pairs
   Unattended-Upgrade::Allowed-Origins {
   	"${distro_id}:${distro_codename}-security";
   //	"${distro_id}:${distro_codename}-updates";
   //	"${distro_id}:${distro_codename}-proposed";
   //	"${distro_id}:${distro_codename}-backports";
   };
   
   // List of packages to not update
   Unattended-Upgrade::Package-Blacklist {
   //	"vim";
   //	"libc6";
   //	"libc6-dev";
   //	"libc6-i686";
           "mysql-server";
           "mysql-server-5.1";
           "mysql-server-5.5";
           "mysql-server-core-5.1";
           "mysql-server-core-5.5";
   };
   
   // This option allows you to control if on a unclean dpkg exit
   // unattended-upgrades will automatically run 
   //   dpkg --force-confold --configure -a
   // The default is true, to ensure updates keep getting installed
   Unattended-Upgrade::AutoFixInterruptedDpkg "true";
   
   // Split the upgrade into the smallest possible chunks so that
   // they can be interrupted with SIGUSR1. This makes the upgrade
   // a bit slower but it has the benefit that shutdown while a upgrade
   // is running is possible (with a small delay)
   Unattended-Upgrade::MinimalSteps "true";
   
   // Install all unattended-upgrades when the machine is shuting down
   // instead of doing it in the background while the machine is running
   // This will (obviously) make shutdown slower
   Unattended-Upgrade::InstallOnShutdown "false";
   
   // Send email to this address for problems or packages upgrades
   // If empty or unset then no email is sent, make sure that you
   // have a working mail setup on your system. A package that provides
   // 'mailx' must be installed.
   Unattended-Upgrade::Mail "XXXXXXX";
   
   // Set this value to "true" to get emails only on errors. Default
   // is to always send a mail if Unattended-Upgrade::Mail is set
   Unattended-Upgrade::MailOnlyOnError "true";
   
   // Do automatic removal of new unused dependencies after the upgrade
   // (equivalent to apt-get autoremove)
   Unattended-Upgrade::Remove-Unused-Dependencies "true";
   
   // Automatically reboot *WITHOUT CONFIRMATION* if a 
   // the file /var/run/reboot-required is found after the upgrade 
   Unattended-Upgrade::Automatic-Reboot "false";
   
   
   // Use apt bandwidth limit feature, this example limits the download
   // speed to 70kb/sec
   //Acquire::http::Dl-Limit "70";
   
   
  mtime.conffile..etc.apt.apt.conf.d.50unattended.upgrades: 2013-06-28T01:45:43.671311

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



More information about the foundations-bugs mailing list