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

Jeffrey Johnson n3npq at me.com
Fri Nov 30 21:10:57 CET 2012


On Nov 30, 2012, at 2:53 PM, Jan Rękorajski wrote:

> On Fri, 30 Nov 2012, Jeffrey Johnson wrote:
> 
> 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.
> 

If this is the real problem, then the fix for infinite looping
has little to do with namespaces at all.

Yes: the iterator loop index on dependency sets is global.

Which means that if something decrements the iterator index
lower down, then the high level will continuously repeat.

Either the low level search has to save/restore loop indexes,
or the high level loop needs its own copy.

Even better:

The rpmdsNext() has never been usefully implemented with
an iterator index in private memory. Not hard to fix, just everyone
would _PHREAK_ if anything were ever really changed in RPM
for some useful/intelligent reason.

*shrug*

73 de Jeff



More information about the pld-devel-en mailing list