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