Upgrade from Natty to Oneiric failed: Error in function pulse

Bug #884625 reported by Andrew McMillan on 2011-11-01
16
This bug affects 3 people
Affects Status Importance Assigned to Milestone
update-manager (Ubuntu)
Undecided
Unassigned

Bug Description

37% [1589 blobwars-data 46.1 MB/66.7 MB 69%] Error in function pulse

A fatal error occurred

Please report this as a bug and include the files
/var/log/dist-upgrade/main.log and /var/log/dist-upgrade/apt.log in
your report. The upgrade has aborted.
Your original sources.list was saved in
/etc/apt/sources.list.distUpgrade.

Traceback (most recent call last):

File "/tmp/update-manager-xZun7L/DistUpgradeViewText.py", line 41, in
pulse
apt.progress.text.AcquireProgress.pulse(self, owner)

File "/usr/lib/python2.7/dist-packages/apt/progress/text.py", line
166, in pulse
apt_pkg.time_to_str(eta))

OverflowError: signed integer is less than minimum
=== Command terminated with exit status 1 (Tue Nov 1 17:35:13 2011) ===

Andrew McMillan (karora) wrote :
Andrew McMillan (karora) wrote :
Robert Roth (evfool) on 2011-11-01
affects: release-upgrader-apt (Ubuntu) → update-manager (Ubuntu)
tags: added: dist-upgrade
Andrew McMillan (karora) wrote :

As a further couple of data points, I re-tried the upgrade three more times and received this error on two more occasions.

On all three failures it was in the process of downloading a very large package - blobwars-data the first time 44MB of 66MB downloaded. The second time it was downloading lilypond-doc and was at around 96MB of 112MB or so. The third one waswesnoth-1.8-music and it was at 39MB of 48 or so. This was upgrading my son's PC, hence he has all the games and graphical things you could imagine.

We don't have a fast connection here, so it can take quite a while to download these things, making me wonder if this is a timeout that's set too short.

It's incredibly frustrating, also, that even if it's already downloaded 600MB of the upgrade, if you quit and start again it starts right back at the beginning of the download. If apt-get doesn't do that I can't quite see why update-manager doesn't save those things in a cache as well.

Thanks,
Andrew McMillan

Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in update-manager (Ubuntu):
status: New → Confirmed
T. Middleton (timtoo) wrote :

Same error here. Was downloading gcj-4.5-jre-lib, which is only 10.5 MB, on a relatively fast connection. So I don't think file size or time had anything to do with it; though perhaps those things increase probability.

Lincoln Phipps (lincoln-phipps) wrote :

I had this problem with Maverick -> Natty upgrade (the code doesn't see to have changed in Natty -> Oneiric) so it will also fail in other releases but what I did was edit the file /usr/lib/python2.6/dist-packages/apt/progress/text.py (it’s Python) around line 161 onwards (that may also be /usr/lib/python2.7/dist etc and do some sanity checking on the eta before it is used e.g. I did,

if eta < 0:
                end = " %sB/s ~%s" % (apt_pkg.size_to_str(self.current_cps),apt_pkg.time_to_str(0))
            elif eta > (30 * 24 *60 * 60):
                end = " %sB/s >%s" % (apt_pkg.size_to_str(self.current_cps),apt_pkg.time_to_str(30 * 24 *60 * 60))
            else:
                end = " %sB/s %s" % (apt_pkg.size_to_str(self.current_cps),
                                 apt_pkg.time_to_str(eta))

(though you could do other checks) I suspect that to get that specific OverflowError: signed integer is less than minimum error then I think that if the download process resets itself i.e. retrying a file then the file size self.total_bytes is temporarily nonsensical e.g. 0 whilst the program resets the download but it still does the pulse on this but sends a large negative number to apt_pkg.time_to_str().

If you try and pass a large negative number to the apt_pkg.time_to_str() then it either works as nonsense or it fails with the OverflowError: signed integer is less than minimum e.g. here is my test code,

>>> import apt_pkg
>>> apt_pkg.TimeToStr(-2147483648)
'213503982309746d 3h 46min 8s'
>>> apt_pkg.TimeToStr(-2147483649)
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
OverflowError: signed integer is less than minimum

So I think you need three conditions, lots of packages to download so that the total to download gets into the billions of bytes, big files to download so that the download process can fail to download the file, and finally a crappy ADSL line or similar.

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers