rpm-5.4.10-22.i686 loops forever when installing ntpd-4.2.6p5-5.i686.rpm

Jan Rękorajski baggins at pld-linux.org
Fri Nov 30 20:53:08 CET 2012

On Fri, 30 Nov 2012, Jeffrey Johnson wrote:

> On Nov 30, 2012, at 7:41 AM, Jan Rękorajski <baggins at pld-linux.org> wrote:
> > 
> > And so it happens that the problem had nothing to do with database, see
> > http://git.pld-linux.org/?
> Well it has nothing to do with Berkeley DB, but …
> > p=packages/rpm.git;a=commit;h=d2ec8f01d4cbb82f79d8abc51f26506a58162d9c
> > for gory details.
> > 
> … if the attached patch to add the namespace comparison
> is "fixing", then the error message is hiding the fact
> that some namespace is matching the conflict unexpectedly
> erroneously.

The thing is that all dependecies get split into <Name, nsType> tuples
(foo(bar) becomes <bar, RPMNS_TYPE_foo> and _rpmtsCheck was using
only the Name half from this tuple for all tests.

The real problem that I was afraid to touch to avoid messing things up
is lib/rpmal.c:rpmalAllSatisfiesDepend() which seems to work on global
lists instead of private copies which caused the infinite loop because
it decremented interator in rpmds 'provides' list for a transaction.

> Good: there is a fix. I thought this had been patched already?
> Were there other locations that needed to include the namespace
> comparison?

Didn't find any, but I was only looking at this particular problem.

Jan Rękorajski                                 | PLD/Linux
SysAdm                                         | http://www.pld-linux.org/

More information about the pld-devel-en mailing list