On Apr 15, 2008, at 2:10 PM, Jeff Johnson wrote:
rpm: depends.c:1776: zapRelation: Assertion `tsi->tsi_reqx >= 0 &&
tsi->tsi_reqx < rpmdsCount(requires)' failed.
Avbrutt (SIGABRT)
Bingo. Thanks. Now to find where tsi->tsi_reqx goes awry ...
Hmmm, there's only one place that tsi->tsi_reqx is set.
And AFAICT, addRelation() is called only within an rpmds iteration,
where the value used should be valid. But the code paths are twistier
than I would like because the iteration index is accessed in the
addRelation()
subroutine.
Can I get you to try reproducing with one more assertion?
Here is the patch:
@@ -1902,6 +1903,7 @@ static inline int addRelation(rpmts ts,
tsi->tsi_tagn = rpmdsTagN(requires);
tsi->tsi_reqx = rpmdsIx(requires);
+assert(tsi->tsi_reqx >= 0 && tsi->tsi_reqx < rpmdsCount(requires));
tsi->tsi_next = rpmteTSI(q)->tsi_next;
rpmteTSI(q)->tsi_next = tsi;
If the new assertion fires, then I'm not reading the rpmds iteration
code correctly.
If the old assertion fires, then there's a wild pointer somewhere.
Thanks.
73 de Jeff
______________________________________________________________________
RPM Package Manager http://rpm5.org
Developer Communication List rpm-devel@rpm5.org