[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]

Re: [Red-carpet] more questions on RPM database, specifically corruption



On Wed, Feb 28, 2001 at 11:51:36AM -0700, Dale Carstensen wrote:
> I see a lot of these from rpm:
> 
> Program received signal SIGSEGV, Segmentation fault.
> 0x805dcef in providePackageNVR (h=0x82a45a0) at misc.c:787
> (xxgdb) info stack
> #0  0x805dcef in providePackageNVR (h=0x82a45a0) at misc.c:787
> #1  0x8072712 in doGetRecord (pkgs=0x81ae2d8, offset=12686936) at db1.c:145

Bug in rpmlib.  RPM 4.0.2 inserts NULL entires in the database where
it shouldn't, and then RPM crashes when it reaches these.

> I'm learning more than I want to know about rpm.  Unfortunately, the
> docs don't say much about the database, except to try --rebuilddb when
> there are problems.  But --rebuilddb itself gets a seg fault, so that's
> of no use.

Bug in rpm, it can't handle a database it wrote.

> I have RedHat 6.2 on an i686, plus lots of dangerous updates from ximian
> cvs for evolution and redcarpet and rpms from ximian and elsewhere to
> satisfy prerequisites for those, rpm-4.0.2-0.34, glibc-2.2.1-3, db1-1.85-5,
> db2-2.4.14-5, db3-3.1.17-5, etc.  Some of these came from rawhide.redhat.com.

rpm 4.0.2 is not required by Red Carpet, it is brought in by Rawhide,
Red Hat betas, and Nautilus.  It is known broken, ie, it corrupts the
database such that older clients using stable versions of rpmlib (RC
uses 4.0) don't work.

We statically link against RPM because the API's change unpredictably
and we can't expect dynamic linking to work (all versions of the
library are called librpm.so.0.0.0).  We chose to statically link
against RPM 4.0, which is the released version of RPM used in Red Hat
7.0.

Red Carpet would continue to work fine except that you installed RPM
4.0.2 and used it at some point.

BTW rpm 4.0.2 isn't even released as such, which is why it is
4.0.2-0.34, that's a prerelease you've got there.

> The evolution cvs stuff is in /usr/local, and I hope that isolates it
> from rpm's world.  But, maybe that's too much to ask.  Anyway, it seems
> to be redcarpet, not evolution or its prerequisites, that broke the
> rpm database.

You're wrong.  It's RPM itself, and not even the version of RPM that
Red Carpet uses.

> Oh, I can't build redcarpet from source with rpm-4, either.  The
> redcarpet source wants a function named rpmErrorCode, and that's gone
> in rpm-4.  And rpm-4 doesn't seem to have an equivalent, either.

Yeah, the API was changed between RPM 4.0 and RPM 4.0.2 prerelease.  I
talked to the RPM maintainer and the function will be put back for the
RPM 4.0.2 released version.

Do you want me to predict when API's will change between microversions
somehow?

> The reason I looked at the redcarpet source is because it started
> giving me this, I'm thinking due to the rpm seg faults:
> 
>  libredcarpet-ERROR **: file rc-rpmman.c: line 934 (rc_rpmman_dep\
>   ends_fill): assertion failed: (package->spec.name)
>  aborting...

This is the only thing that might be a Red Carpet error, and should at
least be handled better, but until you weed out the other broken
software you have installed I can't help you.

-- 
Ian Peters      "...it is 5 am and the sun has charred the other
itp@gnu.org      side of the earth and come back to us and painted
itp@ximian.com   the smoke over our heads an imperial violet..."





[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index] []