Stale shared libraries in /etc/vx/slib causing vxconfigd fail to start during system boot

book

Article ID: 100031463

calendar_today

Updated On:

Description

Error Message

/var/svc/log/system-vxvm-vxvm-startup2:default.log:
 
[ Oct 16 17:18:56 Executing start method ("/lib/svc/method/vxvm-startup2") ]
voldctl: Configuration daemon is not accessible
VxVM vxvm-startup2 INFO V-5-2-503 VxVM general startup...
ld.so.1: vxconfigd: fatal: libc.so.1: version 'SUNW_1.22' not found (required by file /sbin/vxconfigd)
ld.so.1: vxconfigd: fatal: libc.so.1: open failed: No such file or directory
Killed
VxVM vxdctl ERROR V-5-1-307 vxconfigd is not running, cannot enable
voldctl: Configuration daemon is not accessible
VxVM vxdmpadm ERROR V-5-1-684 IPC failure: Configuration daemon is not accessible
VxVM vxvm-startup2 ERROR V-5-2-3656 Vold is not enabled for transactions
        No volumes started
[ Oct 16 17:22:09 Method "start" exited with status 0 ]

Cause

The Solaris operating system and the Veritas Stroage Foundation both were upgraded.  The upgrade was done by using Solaris Live Upgrade and not by Veritas Storage Foundation installation program (e.g. installsf).   The stale shared libraries from previous Solaris version was not cleaned up properly.

# pwd
/etc/vx/slib

# ls -l libc.so.1
-rwxr-xr-x   1 root    bin        867796 Sep 29  2007 libc.so.1    <<< stale library from Solaris 9

# /usr/ccs/bin/nm libc.so.1 | grep 'SUNW_1\.2.*'
[3186]  |         0|         0|OBJT |GLOB |0    |ABS    |SUNW_1.2
[3948]  |         0|         0|OBJT |GLOB |0    |ABS    |SUNW_1.20
[4250]  |         0|         0|OBJT |GLOB |0    |ABS    |SUNW_1.20.1
[4254]  |         0|         0|OBJT |GLOB |0    |ABS    |SUNW_1.20.4
[3950]  |         0|         0|OBJT |GLOB |0    |ABS    |SUNW_1.21
[4017]  |         0|         0|OBJT |GLOB |0    |ABS    |SUNW_1.21.1
[4018]  |         0|         0|OBJT |GLOB |0    |ABS    |SUNW_1.21.2

Version SUNW_1.22 is not listed in the above libc.so.1 file and caused vxconfgd fail to start.

Resolution

Remove all the shared libraries from /etc/vx/slib except those files starting with libvx and
start vxconfigd using below command.

# vxconfigd -x syslog -m enable


Note: 

In the SMF method /lib/svc/method/vxvm-startup2, we only need to copy the "libvx" libraries for Solaris 10 and 11.

if [ "$rel" = "5.10" -o "$rel" = "5.11" ]
then
    # For Solaris 10 release, only copy the vxvm
    # libraries (libvx).
    # Stop vxconfigd before copying libraries as to avoid corruption.
    SO_LIBS=`LD_LIBRARY_PATH=$LD_LIBS ldd /sbin/vxconfigd | awk '$NF ~ /libvx/ { print $NF; }'`; 
                  <<< For Solaris 10 and 11 copy "libvx" only
    stop_vold=0;
    for SO_LIB in ${SO_LIBS};
    do
        name=`basename ${SO_LIB}`
        cmp -s ${SO_LIB} /etc/vx/slib/${name} || {
        [ $stop_vold -eq 0 ] && {
            stop_vold=1; vxdctl stop;
            }
        cp -f ${SO_LIB} /etc/vx/slib;
        }
    done
else
    SO_LIBS=`LD_LIBRARY_PATH=$LD_LIBS ldd /sbin/vxconfigd | awk '$NF ~ /\/usr\// { print $NF; }'`;
              <<< For solaris 9, copy everything "/usr/".


 

Issue/Introduction

Stale shared libraries (e.g. libc.so.1) in /etc/vx/slib causing vxconfigd fail to start during system boot