logo       

Re: rpm 5.1 segfaults: msg#00089

package-management.rpm.devel

Subject: Re: rpm 5.1 segfaults


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-E22Dobh7AKI@xxxxxxxxxxxxxxxx



<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise