Crash in RPM backend (fedora core 5)
Rob
rob at rcludw.no-ip.org
Sat Apr 22 18:56:08 PDT 2006
Here's a crash in the RPM backend on Fedora Core 5. After today for
some reason, Smart consistently crashes like this on an upgrade now. I
tried looking at this, but I can't tell what the correct behavior should
be nor what getTS().dbMatch() should be returning.
Here's the offending code fragment:
def getHeaders(self, prog):
mi = getTS().dbMatch()
total = left = self.getLoadSteps()
for h in mi:
if h[1000] != "gpg-pubkey": # RPMTAG_NAME
yield h, mi.instance()
if left == 0:
prog.addTotal(1)
else:
left -= 1
prog.add(1)
prog.show()
prog.add(left)
if rpmhelper:
def getHeader(self, pkg):
mi = rpmhelper.dbMatch(getTS(), 0, pkg.loaders[self])
return mi.next()
else:
def getHeader(self, pkg):
mi = getTS().dbMatch(0, pkg.loaders[self])
line 572 -> return mi.next()
[root at tom-servo ~]# smart upgrade
Loading cache...
Updating cache... ########################################
[100%]
Computing transaction...
Upgrading packages (61):
arts kde-i18n-Romanian kdepim
arts-devel kde-i18n-Russian kdesdk
evolution kde-i18n-Slovak kdesdk-devel
firefox kde-i18n-Slovenian kdeutils
gdm kde-i18n-Spanish kdevelop
gnome-pilot kde-i18n-Swedish kernel
gnupg kde-i18n-Turkish kernel-doc
jwhois kdeaddons libbeagle
kde-i18n-Brazil kdeadmin lsdvd
kde-i18n-British kdeartwork perl-Event-RPC
kde-i18n-Czech kdebase perl-XML-Dumper
kde-i18n-Danish kdebase-devel pilot-link
kde-i18n-Dutch kdebindings pilot-link-devel
kde-i18n-Estonian kdegames procinfo
kde-i18n-French kdegames-devel procps
kde-i18n-German kdegraphics psmisc
kde-i18n-Hungarian kdelibs tzdata
kde-i18n-Italian kdelibs-devel unrar
kde-i18n-Japanese kdemultimedia util-linux
kde-i18n-Polish kdenetwork
kde-i18n-Portuguese kdenetwork-devel
Traceback (most recent call last):
File "/usr/bin/smart", line 194, in ?
main(sys.argv[1:])
File "/usr/bin/smart", line 167, in main
exitcode = iface.run(opts.command, opts.argv)
File "/usr/lib/python2.4/site-packages/smart/interface.py", line 53,
in run
result = _command.main(self._ctrl, opts)
File "/usr/lib/python2.4/site-packages/smart/commands/upgrade.py",
line 182, in main
ctrl.commitTransaction(trans, confirm=confirm)
File "/usr/lib/python2.4/site-packages/smart/control.py", line 464, in
commitTransaction
return self.commitChangeSet(trans.getChangeSet(), caching, confirm)
File "/usr/lib/python2.4/site-packages/smart/control.py", line 467, in
commitChangeSet
if confirm and not iface.confirmChangeSet(changeset):
File
"/usr/lib/python2.4/site-packages/smart/interfaces/text/interface.py",
line 107, in confirmChangeSet
return self.showChangeSet(changeset, confirm=True)
File
"/usr/lib/python2.4/site-packages/smart/interfaces/text/interface.py",
line 223, in showChangeSet
size = report.getInstallSize() - report.getRemoveSize()
File "/usr/lib/python2.4/site-packages/smart/report.py", line 200, in
getRemoveSize
size = info.getInstalledSize()
File "/usr/lib/python2.4/site-packages/smart/backends/rpm/header.py",
line 87, in getInstalledSize
return self._h[rpm.RPMTAG_SIZE]
File "/usr/lib/python2.4/site-packages/smart/backends/rpm/header.py",
line 58, in __get__
obj._h = obj._loader.getHeader(obj._package)
File "/usr/lib/python2.4/site-packages/smart/backends/rpm/header.py",
line 572, in getHeader
return mi.next()
StopIteration
More information about the Smart
mailing list