Bug 79734

Summary: rpm segfaults when installing mysql-server
Product: [Retired] Red Hat Linux Reporter: Ian Collier <imc>
Component: rpmAssignee: Jeff Johnson <jbj>
Status: CLOSED WORKSFORME QA Contact:
Severity: medium Docs Contact:
Priority: medium    
Version: 8.0   
Target Milestone: ---   
Target Release: ---   
Hardware: i386   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2003-02-26 17:19:32 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Ian Collier 2002-12-16 12:33:41 UTC
Description of problem:

rpm segfaults when asked to install mysql-server-3.23.52-3.i386.rpm
if the mysql user is present in the NIS passwd file but not in the local
passwd file.  The mysql-server package I tried to install is the
one on the Red Hat 8.0 installation media (also tried rebuilding
from the SRPM, but attempting to install that gave the same result).

Version-Release number of selected component (if applicable):
rpm-4.1-1.06

How reproducible:
Always, until I fixed the problem manually by temporarily excluding the user
from the NIS passwd file; since then it can't be reproduced because the user
has been successfully registered in the local passwd file.

Steps to Reproduce:
1. Install a Red Hat 8.0 machine as a NIS client, but don't install mysql.
   The passwd file obtained from NIS contains the following entry:
   mysql:*:65003:65003:Pseudo-account for mysql package:/nodir:/bin/false
   The nsswitch.conf file says "passwd: compat" and the local passwd file
   ends with "+:*:::::/bin/false".  There is no mysql user in the local
   passwd file.
2. Install the package mysql-3.23.52 and anything else necessary for
   mysql-server-3.23.52.
3. Type: rpm -ivh mysql-server-3.23.52-3.i386.rpm
    
Actual results:
Preparing...                ########################################### [100%]
Segmentation fault

Expected results:
Package should be installed.

Comment 1 Jeff Johnson 2002-12-17 20:30:35 UTC
Are you using LDAP passwords by any chance? If so
you need to run nscd. In fact, are you running
nscd?

Comment 2 Ian Collier 2002-12-18 13:35:44 UTC
Afraid I don't know what "LDAP passwords" is.  There is no LDAP server on the
network.  Passwords of local users are stored in /etc/shadow; those of NIS users
are inline in the NIS passwd file.  The "mysql" user in the NIS domain has no
password (password field is "*").

nscd is installed but not referenced in any runlevel.

imc

Comment 3 Jeff Johnson 2002-12-23 21:43:05 UTC
Sanity check:

What happens if you start nscd ("service nscd start")?

Comment 4 Ian Collier 2003-02-26 17:14:12 UTC
Apologies for the delay, but it wasn't possible to test on the original
machine as it was required to be kept up and running.

> What happens if you start nscd ("service nscd start")?

# service nscd start
Starting nscd:                                             [  OK  ]
# rpm -ivh mysql-server-3.23.54a-4.i386.rpm 
warning: mysql-server-3.23.54a-4.i386.rpm: V3 DSA signature: NOKEY, key ID db42a60e
Preparing...                ########################################### [100%]
warning: group mysql does not exist - using root
warning: group mysql does not exist - using root
warning: group mysql does not exist - using root
   1:mysql-server           ########################################### [100%]

So this did avoid the segfault and install the package.

Thinks... could it be the missing group that is the problem?
Answer: nope - still segfaults if nscd is not running even when the group
exists.  Installation is successful without warnings if nscd is running.

Comment 5 Jeff Johnson 2003-02-26 17:19:32 UTC
If problem depends on whether nscd is running, then
this is almost certainly the LDAP lookup problem which
affects statically linked binaries like /bin/rpm.

BTW, doing
    rpm --import /usr/share/doc/rpm-4*/RPM-GPG-KEY
will make the NOKEY warning go away.