Bug 29491 - rpm 4.0 segfaults on third party package upgrade
Summary: rpm 4.0 segfaults on third party package upgrade
Keywords:
Status: CLOSED WORKSFORME
Alias: None
Product: Red Hat Linux
Classification: Retired
Component: rpm
Version: 7.0
Hardware: i386
OS: Linux
medium
high
Target Milestone: ---
Assignee: Jeff Johnson
QA Contact: David Lawrence
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2001-02-26 00:37 UTC by Gregory McLean
Modified: 2007-04-18 16:31 UTC (History)
0 users

Fixed In Version:
Doc Type: Bug Fix
Doc Text:
Clone Of:
Environment:
Last Closed: 2001-02-26 15:59:57 UTC
Embargoed:


Attachments (Terms of Use)

Description Gregory McLean 2001-02-26 00:37:02 UTC
From Bugzilla Helper:
User-Agent: Mozilla/5.0 (X11; U; Linux 2.4.1 i686; en-US; 0.8) Gecko/20010221


After installing nautilus to have a look at it, rpm will no longer upgrade
packages segfaulting on the upgrade process.
This is most prevelant in third party packages, though some official Red
Hat packages are affected.
This also affects the various frontends out there, up2date, redcarpet etc..

Reproducible: Always
Steps to Reproduce:
1.Install nautilus
2.uninstall nautilus 
3.Attempt to upgrade any third party package
	

Actual Results:  Segfault

Expected Results:  Package upgrade.

versions of things installed.
rpm-devel-4.0-4
rpm-python-4.0-4
rpmfind-1.5-3
rpm-4.0-4
rpmdb-redhat-7.0-0.20000830
gnorpm-0.95.1-5
rpmlint-0.14-4
rpm2html-1.4-4
rpm-build-4.0-4db1-devel-1.85-4
gdbm-devel-1.8.0-5
db3-3.1.14-6
db1-1.85-4
db3-devel-3.1.14-6
db3-utils-3.1.14-6
db2-devel-2.4.14-4
db2-2.4.14-4

Output of failed attempt: rpm -vv -Uvh
/var/cache/redcarpet/packages/libglade-0.1
4-0_helix_1.i386.rpm 
D: counting packages to install
D: found 1 packages
D: looking for packages to download
D: retrieved 0 packages
D: New Header signature
D: Signature size: 149
D: Signature pad : 3
D: sigsize         : 152
D: Header + Archive: 101556
D: expected size   : 101556
D: opening db index       /var/lib/rpm/Packages create mode=0x42
D: locked  db index       /var/lib/rpm/Packages
D: opening db index       /var/lib/rpm/Name create mode=0x42
D: found 0 source and 1 binary packages
D: opening db index       /var/lib/rpm/Depends create mode=0x42
D: opening db index       /var/lib/rpm/Providename create mode=0x42
D:  Requires: gnome-libs                                    YES (db provides)
D:  Requires: libxml                                        YES (db provides)
D: opening db index       /var/lib/rpm/Basenames create mode=0x42
D:  Requires: /sbin/ldconfig                                YES (db files)
D:   NO     A rpmlib(PayloadFilesHavePrefix) <= 4.0-1   B
rpmlib(VersionedDepend
encies) = 3.0.3-1
D:   NO     A rpmlib(PayloadFilesHavePrefix) <= 4.0-1   B
rpmlib(CompressedFileN
ames) = 3.0.4-1
D:   NO     A rpmlib(PayloadFilesHavePrefix) <= 4.0-1   B
rpmlib(PayloadIsBzip2)
 = 3.0.5-1
D:   YES    A rpmlib(PayloadFilesHavePrefix) <= 4.0-1   B
rpmlib(PayloadFilesHav
ePrefix) = 4.0-1
D:  Requires: rpmlib(PayloadFilesHavePrefix) <= 4.0-1       YES (rpmlib
provides
)
D:  Requires: ld-linux.so.2                                 YES (db provides)
D:  Requires: libart_lgpl.so.2                              YES (db provides)
D:  Requires: libaudiofile.so.0                             YES (db provides)
D:  Requires: libc.so.6                                     YES (db provides)
D:  Requires: libdb.so.2                                    YES (db provides)
D:  Requires: libdl.so.2                                    YES (db provides)
D:  Requires: libesd.so.0                                   YES (db provides)
D:  Requires: libgdk-1.2.so.0                               YES (db provides)
D:  Requires: libgdk_imlib.so.1                             YES (db provides)
D:  Requires: libglib-1.2.so.0                              YES (db provides)
D:  Requires: libgmodule-1.2.so.0                           YES (db provides)
D:  Requires: libgnome.so.32                                YES (db provides)
D:  Requires: libgnomesupport.so.0                          YES (db provides)
D:  Requires: libgnomeui.so.32                              YES (db provides)
D:  Requires: libgtk-1.2.so.0                               YES (db provides)
D:  Requires: libICE.so.6                                   YES (db provides)
D:  Requires: libm.so.6                                     YES (db provides)
D:  Requires: libSM.so.6                                    YES (db provides)
D:  Requires: libX11.so.6                                   YES (db provides)
D:  Requires: libXext.so.6                                  YES (db provides)
D:  Requires: libXi.so.6                                    YES (db provides)
D:  Requires: libxml.so.1                                   YES (db provides)
D:  Requires: libz.so.1                                     YES (db provides)
D:  Requires: libc.so.6(GLIBC_2.0)                          YES (db provides)
D:  Requires: libc.so.6(GLIBC_2.1.3)                        YES (db provides)
D:   NO     A rpmlib(CompressedFileNames) <= 3.0.4-1    B
rpmlib(VersionedDepend
encies) = 3.0.3-1
D:   YES    A rpmlib(CompressedFileNames) <= 3.0.4-1    B
rpmlib(CompressedFileN
ames) = 3.0.4-1

D:  Requires: rpmlib(CompressedFileNames) <= 3.0.4-1        YES (rpmlib
provides
)
D: opening db index       /var/lib/rpm/Conflictname create mode=0x42
D: opening db index       /var/lib/rpm/Requirename create mode=0x42
D: the "B" dependency needs an epoch (assuming same as "A")
        A libglade = 1:0.14-0_helix_1   B libglade >= 0.11
D:   YES    A libglade = 1:0.14-0_helix_1       B libglade >= 0.11
D:  Requires: libglade >= 0.11                              YES (added provide)
D:   YES    A libglade = 1:0.14-0_helix_1       B libglade
D:  Requires: libglade                                      YES (added provide)
D: the "B" dependency needs an epoch (assuming same as "A")
        A libglade = 1:0.14-0_helix_1   B libglade >= 0.14
D:   YES    A libglade = 1:0.14-0_helix_1       B libglade >= 0.14
D:  Requires: libglade >= 0.14                              YES (added provide)
D: the "B" dependency needs an epoch (assuming same as "A")
        A libglade = 1:0.14-0_helix_1   B libglade >= 0.7-1
D:   YES    A libglade = 1:0.14-0_helix_1       B libglade >= 0.7-1
D:  Requires: libglade >= 0.7-1                             YES (added provide)
D:  Requires: R libglade >= 0.11                            YES (cached)
D:   YES    A libglade-gnome.so.0       B libglade-gnome.so.0
D:  Requires: libglade-gnome.so.0                           YES (added provide)
D:  Requires: R libglade-gnome.so.0                         YES (cached)
D:  Requires: R libglade-gnome.so.0                         YES (cached)
D:  Requires: R libglade-gnome.so.0                         YES (cached)
D:  Requires: R libglade-gnome.so.0                         YES (cached)
D:  Requires: R libglade-gnome.so.0                         YES (cached)
D:  Requires: R libglade-gnome.so.0                         YES (cached)
D:  Requires: R libglade-gnome.so.0                         YES (cached)
D:  Requires: R libglade-gnome.so.0                         YES (cached)
D:  Requires: R libglade-gnome.so.0                         YES (cached)
D:  Requires: R libglade-gnome.so.0                         YES (cached)
D:  Requires: R libglade-gnome.so.0                         YES (cached)
D:  Requires: R libglade-gnome.so.0                         YES (cached)
D:   YES    A libglade.so.0     B libglade.so.0
D:  Requires: libglade.so.0                                 YES (added provide)
D:  Requires: R libglade.so.0                               YES (cached)
D:  Requires: R libglade.so.0                               YES (cached)
D:  Requires: R libglade.so.0                               YES (cached)
D:  Requires: R libglade.so.0                               YES (cached)
D:  Requires: R libglade.so.0                               YES (cached)
D:  Requires: R libglade.so.0                               YES (cached)
D:  Requires: R libglade.so.0                               YES (cached)
D:  Requires: R libglade.so.0                               YES (cached)
D:  Requires: R libglade.so.0                               YES (cached)
D:  Requires: R libglade.so.0                               YES (cached)
D:  Requires: R libglade.so.0                               YES (cached)
D:  Requires: R libglade.so.0                               YES (cached)
D:  Requires: R libglade.so.0                               YES (cached)
D:  Requires: R libglade.so.0                               YES (cached)
D:  Requires: R libglade >= 0.11                            YES (cached)
D:  Requires: R libglade                                    YES (cached)
D:  Requires: R libglade >= 0.14                            YES (cached)
D:  Requires: R libglade >= 0.7-1                           YES (cached)
D:  Requires: R libglade >= 0.11                            YES (cached)
D: installing binary packages
D: getting list of mounted filesystems
D: opening db index       /var/lib/rpm/Group create mode=0x42
D: opening db index       /var/lib/rpm/Triggername create mode=0x42
Segmentation fault (core dumped)

rpm -vv -qip libglade-0.14-0_helix_1.i386.rpm 
D: New Header signature
D: Signature size: 149
D: Signature pad : 3
D: sigsize         : 152
D: Header + Archive: 101556
D: expected size   : 101556
Name        : libglade                     Relocations: (not relocateable)
Version     : 0.14                              Vendor: Helix Code, Inc.
Release     : 0_helix_1                     Build Date: Thu 05 Oct 2000
12:36:25 AM EDT
Install date: (not installed)               Build Host:
woolly-mammoth.helixcode.com
Group       : System Environment/Libraries   Source RPM:
libglade-0.14-0_helix_1.src.rpm
Size        : 277841                           License: LGPL
URL         : http://www.daa.com.au/~james/gnome/
Summary     : Library for loading a UI from an XML description at runtime.
Description :
Libglade is a small library that allows a program to load its user
interface from am XML description at runtime. Libglade uses the XML
file format used by the GLADE user interface builder GLADE, so
libglade acts as an alternative to GLADE's code generation
approach. Libglade also provides a simple interface for connecting
handlers to the various signals in the interface (on platforms where
the gmodule library works correctly, it is possible to connect all the
handlers with a single function call). Once the interface has been
instantiated, libglade gives no overhead, so other than the short
initial interface loading time, there is no performance tradeoff.

gdb interaction

 gdb rpm
GNU gdb 5.0
Copyright 2000 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you are
welcome to change it and/or distribute copies of it under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB.  Type "show warranty" for details.
This GDB was configured as "i386-redhat-linux"...
(no debugging symbols found)...
(gdb) run -Uvh /var/cache/redcarpet/packages/libglade-0.14-0_helix_1.i386.rpm
Starting program: /bin/rpm -Uvh
/var/cache/redcarpet/packages/libglade-0.14-0_he
lix_1.i386.rpm
warning: shared library handler failed to enable breakpoint

Program received signal SIGSEGV, Segmentation fault.
0x806e4d4 in ?? ()
(gdb) bt
#0  0x806e4d4 in ?? ()
#1  0x8070371 in ?? ()
#2  0x8067974 in ?? ()
#3  0x804b29a in ?? ()
#4  0x8101801 in ?? ()
(gdb) quit

Comment 1 Jeff Johnson 2001-02-26 14:01:59 UTC
This is a Nautilus problem, not a Red Hat problem, dunno how to fix Nautilus
packaging.

FWIW, I believe the problem is fixed with rpm-4.0.2 packages at
	ftp://ftp.rpm.org/pub/rpm/test-4.0.2
(which may be unavailable for another 24 hours or so). Please reopen if not.


Comment 2 Gregory McLean 2001-02-26 15:55:25 UTC
Jeff, 
  Please explain how this can be a nautilus problem when nautilus is _no longer
installed_ ?
So if I read your explaination correctly:

rpm -i <bunch of packages>
test package, decied you don't like said package(s)
rpm -e <above packages>

rpm -U <some random third party package>
Segfault

Bug in no longer installed package?

In any case off to get the 4.0.2 test bits.

Comment 3 Gregory McLean 2001-02-26 15:59:53 UTC
Ok more fun:
 ls rpm*.rpm
rpm-4.0.2-7x.i386.rpm        rpm-devel-4.0.2-7x.i386.rpm
rpm-build-4.0.2-7x.i386.rpm  rpm-python-4.0.2-7x.i386.rpm

 rpm -Uvh rpm-*
Segmentation fault (core dumped)

---
rpm -vv -Uh rpm-*
D: counting packages to install
D: found 4 packages
D: looking for packages to download
D: retrieved 0 packages
D: New Header signature
D: Signature size: 68
D: Signature pad : 4
D: sigsize         : 72
D: Header + Archive: 1274806
D: expected size   : 1274806
D: opening db index       /var/lib/rpm/Packages create mode=0x42
D: locked  db index       /var/lib/rpm/Packages
D: opening db index       /var/lib/rpm/Name create mode=0x42
D: New Header signature
D: Signature size: 68
D: Signature pad : 4
D: sigsize         : 72
D: Header + Archive: 62668
D: expected size   : 62668
D: New Header signature
D: Signature size: 68
D: Signature pad : 4
D: sigsize         : 72
D: Header + Archive: 286189
D: expected size   : 286189
D: New Header signature
D: Signature size: 68
D: Signature pad : 4
D: sigsize         : 72
D: Header + Archive: 31696
D: expected size   : 31696
D: found 0 source and 4 binary packages
D: opening db index       /var/lib/rpm/Depends create mode=0x42
D: opening db index       /var/lib/rpm/Providename create mode=0x42
D:  Requires: gawk                                          YES (db provides)
D:  Requires: fileutils                                     YES (db provides)
D:  Requires: textutils                                     YES (db provides)
D:  Requires: mktemp                                        YES (db provides)
D:  Requires: popt                                          YES (db provides)
D:   YES    A glibc = 2.2-12    B glibc >= 2.1.92
D:  Requires: glibc >= 2.1.92                               YES (db provides)
D:   YES    A db1 = 1.85-4      B db1 = 1.85
D:  Requires: db1 = 1.85                                    YES (db provides)
D: opening db index       /var/lib/rpm/Basenames create mode=0x42
D:  Requires: /bin/sh                                       YES (db files)
D:  Requires: /sbin/ldconfig                                YES (db files)
D:  Requires: ld-linux.so.2                                 YES (db provides)
D:  Requires: libbz2.so.1                                   YES (db provides)
D:  Requires: libc.so.6                                     YES (db provides)
D:  Requires: libdb-3.1.so                                  YES (db provides)
D:  Requires: libdb.so.2                                    YES (db provides)
D:  Requires: libpopt.so.0                                  YES (db provides)
D:   YES    A librpm.so.0       B librpm.so.0
D:  Requires: librpm.so.0                                   YES (added provide)
D:   YES    A librpmbuild.so.0  B librpmbuild.so.0
D:  Requires: librpmbuild.so.0                              YES (added provide)
D:   YES    A librpmio.so.0     B librpmio.so.0
D:  Requires: librpmio.so.0                                 YES (added provide)
D:  Requires: libz.so.1                                     YES (db provides)
D:  Requires: R /bin/sh                                     YES (cached)
D:  Requires: libc.so.6(GLIBC_2.0)                          YES (db provides)
D:  Requires: libc.so.6(GLIBC_2.1)                          YES (db provides)
D:  Requires: libc.so.6(GLIBC_2.1.3)                        YES (db provides)
D:  Requires: libc.so.6(GLIBC_2.2)                          YES (db provides)
D:  Requires: libdb.so.2(GLIBC_2.0)                         YES (db provides)
D:   NO     A rpmlib(CompressedFileNames) <= 3.0.4-1    B rpmlib(VersionedDepend
encies) = 3.0.3-1
D:   YES    A rpmlib(CompressedFileNames) <= 3.0.4-1    B rpmlib(CompressedFileN
ames) = 3.0.4-1
D:  Requires: rpmlib(CompressedFileNames) <= 3.0.4-1        YES (rpmlib provides
)
D:   NO     A patch = 2.5.4-4   B patch < 2.5
D: Conflicts: patch < 2.5                                   NO
D: opening db index       /var/lib/rpm/Conflictname create mode=0x42
D:   NO     A rpm = 4.0.2-7x    B rpm <= 4.0-0.65
D: Conflicts: rpm <= 4.0-0.65                               NO
D: Conflicts: C rpm <= 4.0-0.65                             NO  (cached)
D:   YES    A rpm = 4.0.2-7x    B rpm = 4.0.2
D:  Requires: rpm = 4.0.2                                   YES (added provide)
D:  Requires: R ld-linux.so.2                               YES (cached)
D:  Requires: R libbz2.so.1                                 YES (cached)
D:  Requires: R libc.so.6                                   YES (cached)
D:  Requires: R libdb-3.1.so                                YES (cached)
D:  Requires: R libdb.so.2                                  YES (cached)
D:  Requires: R libpopt.so.0                                YES (cached)
D:  Requires: R librpm.so.0                                 YES (cached)
D:  Requires: R librpmbuild.so.0                            YES (cached)
D:  Requires: R librpmio.so.0                               YES (cached)
D:  Requires: R libz.so.1                                   YES (cached)
D:  Requires: /bin/bash                                     YES (db files)
D:  Requires: R /bin/sh                                     YES (cached)
D:  Requires: /usr/bin/perl                                 YES (db files)
D:  Requires: R libc.so.6(GLIBC_2.0)                        YES (cached)
D:  Requires: R libc.so.6(GLIBC_2.1)                        YES (cached)
D:  Requires: R libc.so.6(GLIBC_2.1.3)                      YES (cached)
D:  Requires: R rpmlib(CompressedFileNames) <= 3.0.4-1      YES (cached)
D:  Requires: R rpm = 4.0.2                                 YES (cached)
D:  Requires: R popt                                        YES (cached)
D:  Requires: R /sbin/ldconfig                              YES (cached)
D:  Requires: R rpmlib(CompressedFileNames) <= 3.0.4-1      YES (cached)
D:   YES    A popt = 1.6-4      B popt >= 1.5
D:  Requires: popt >= 1.5                     YES (db provides)
D:   YES    A python = 1.5.2-27 B python >= 1.5.2
D:  Requires: python >= 1.5.2                               YES (db provides)
D:  Requires: R /sbin/ldconfig                              YES (cached)
D:  Requires: R ld-linux.so.2                               YES (cached)
D:  Requires: R libbz2.so.1                                 YES (cached)
D:  Requires: R libc.so.6                                   YES (cached)
D:  Requires: R libdb-3.1.so                                YES (cached)
D:  Requires: R libdb.so.2                                  YES (cached)
D:  Requires: R libpopt.so.0                                YES (cached)
D:  Requires: R librpm.so.0                                 YES (cached)
D:  Requires: R librpmio.so.0                               YES (cached)
D:  Requires: R libz.so.1                                   YES (cached)
D:  Requires: R libc.so.6(GLIBC_2.0)                        YES (cached)
D:  Requires: R libc.so.6(GLIBC_2.1.3)                      YES (cached)
D:  Requires: R rpmlib(CompressedFileNames) <= 3.0.4-1      YES (cached)
D: opening db index       /var/lib/rpm/Requirename create mode=0x42
D:   YES    A rpm-python = 4.0.2-7x     B rpm-python >= 3.0.5
D:  Requires: rpm-python >= 3.0.5                           YES (added provide)
D:   YES    A rpm-python = 4.0.2-7x     B rpm-python
D:  Requires: rpm-python                                    YES (added provide)
D:   YES    A rpm-python = 4.0.2-7x     B rpm-python >= 3.0.4
D:  Requires: rpm-python >= 3.0.4                           YES (added provide)
D:  Requires: R rpm-python                                  YES (cached)
D:  Requires: R rpm-python >= 3.0.5                         YES (cached)
D:  Requires: R rpm-python                                  YES (cached)
D:  Requires: R rpm-python >= 3.0.4                         YES (cached)
D:  Requires: R rpm-python                                  YES (cached)
D:   YES    A rpm = 4.0.2-7x    B rpm >= 3.0.5
D:  Requires: rpm >= 3.0.5                                  YES (added provide)
D:  Requires: R rpm >= 3.0.5                                YES (cached)
D:   YES    A rpm = 4.0.2-7x    B rpm >= 3.0.4
D:  Requires: rpm >= 3.0.4                                  YES (added provide)
D:  Requires: R librpm.so.0                                 YES (cached)
D:  Requires: R librpm.so.0                                 YES (cached)
D:  Requires: R librpm.so.0                                 YES (cached)
D:  Requires: R librpmio.so.0                               YES (cached)
D:  Requires: R librpmio.so.0                               YES (cached)
D:  Requires: R librpmio.so.0                               YES (cached)
D:  Requires: R rpm >= 3.0.5                                YES (cached)
D:  Requires: R rpm >= 3.0.5                                YES (cached)
D:  Requires: R rpm >= 3.0.4                                YES (cached)
D: installing binary packages
D: getting list of mounted filesystems
D: opening db index       /var/lib/rpm/Group create mode=0x42
D: opening db index       /var/lib/rpm/Triggername create mode=0x42
Segmentation fault (core dumped)

And the only thing left from the nautilus install is as follows:
 rpm -qa | grep eazel
freetype2-devel-2.0.1-1_eazel_1
freetype2-2.0.1-1_eazel_1



Comment 4 Jeff Johnson 2001-02-26 16:10:06 UTC
Because Nautilus added packages to the rpm database that don't have
RPMTAG_FILESTATES
exercising known segfaults in rpm-4.0 from "can't happen" conditions triggered
by the Nautilus
upgrade.

Go try rpm-4.0.2 from ftp.rpm.org, I believe your problem is fixed there.

Comment 5 Jeff Johnson 2001-02-26 16:46:30 UTC
Again, the problem is in your database, and you're using rpm-4.0 (which will
segfault
when presented with the lack of the RPMTAG_FILESTATES).

If all else fails, do this:
	cd /var/tmp
	rpm2cpio rpm-4.0.2-7x.i386.rpm | cpio -dim
	cp bin/rpm /bin
and then install the rpm-4.0.2 packages using the rpm-4.0.2 executable.

Fun, ain't it :-(


Note You need to log in before you can comment on or make changes to this bug.