On Apr 14, 2008, at 3:34 PM, Per Øyvind Karlsen wrote:
> På Mandag 14 april 2008 , 19:52:30 skrev Per Øyvind Karlsen:
>> På Mandag 14 april 2008 , 18:50:07 skrev Per Øyvind Karlsen:
>>> See attachment for more info, reproducer found at
>>> ftp://ftp.uninett.no/pub/linux/MandrivaLinux/devel/cooker/x86_64/
>>> media/ma
>>> in /release/ .
>>
>> updated running with --rpmdsdebug
>
> grf, here's the correct one
>
Thanks.
The segfault is occurring while attempting to display
the relations in 2 interlocked dependency loops while ordering.
Can you try reproducing with this patch?
Index: depends.c
===================================================================
RCS file: /v/rpm/cvs/rpm/lib/depends.c,v
retrieving revision 1.394
diff -u -b -B -w -p -r1.394 depends.c
--- depends.c 1 Apr 2008 09:08:49 -0000 1.394
+++ depends.c 14 Apr 2008 20:47:03 -0000
@@ -1764,11 +1764,12 @@ zapRelation(rpmte q, rpmte p,
requires = rpmteDS(p, tsi->tsi_tagn);
if (requires == NULL) continue; /* XXX can't happen */
- (void) rpmdsSetIx(requires, tsi->tsi_reqx);
-
+ { int ix = rpmdsSetIx(requires, tsi->tsi_reqx);
+assert(tsi->tsi_reqx >= 0 && tsi->tsi_reqx < rpmdsCount(requires));
Flags = rpmdsFlags(requires);
-
dp = rpmdsNewDNEVR( identifyDepend(Flags), requires);
+ (void) rpmdsSetIx(requires, ix);
+ }
/*
* Attempt to unravel a dependency loop by eliminating
Requires's.
The patch saves the current dependency index "just in case" and
adds a range check assertion on the dependency set index (which seems
to be the likeliest failure from looking at the backtrace).
73 de Jeff
Received on Mon Apr 14 22:51:24 2008