Gen Solaris/Tuxedo relocation error for symbol kstat_open not found
search cancel

Gen Solaris/Tuxedo relocation error for symbol kstat_open not found

book

Article ID: 377392

calendar_today

Updated On:

Products

Gen Gen - Run Time Distributed

Issue/Introduction

When using Tuxedo 22c on Solaris 11.4, Gen executables $IEFH/bin/ieftuxcl and $IEFH/bin/aeft will not run due to symbol kstat_open not being found.

This article will provide details on this change.

Environment

Gen 8.6 Runtime (Implementation Toolset) on Solaris 11.4 systems with Tuxedo 22c.

Cause

When executing $IEFH/bin/ieftuxcl and $IEFH/bin/aeft, the following error message is displayed and the programs will not start:

% $IEFH/bin/ieftuxcl -i A

ld.so.1: ieftuxcl: relocation error: file /opt/tuxedo22.1.0.0.0/lib/libengine.so.71:  symbol kstat_open: referenced symbol not found

% $IEFH/bin/aeft

ld.so.1: aeft: relocation error: file /opt/tuxedo22.1.0.0.0/lib/libengine.so.71:  symbol kstat_open: referenced symbol not found

Note: TUXDIR has been set to /opt/tuxedo22.1.0.0.0 when executing the programs above.

Resolution

Use the environment variable LD_PRELOAD to resolve the unreferenced symbol.

Before launching $IEFH/bin/ieftuxcl, set LD_PRELOAD as follows:

If you are using the Bourne or Korn Shell, export LD_PRELOAD:

% export LD_PRELOAD="/lib/sparcv9/libkstat.so $IEFH/bin/ieftuxcl"

If you are using the C Shell, set LD_PRELOAD as follows:

% setenv LD_PRELOAD "/lib/sparcv9/libkstat.so $IEFH/bin/ieftuxcl"

Then launch $IEFH/bin/ieftuxcl:

% $IEFH/bin/ieftuxcl -i A

Unset the environment variable LD_PRELOAD to avoid issues related to "Address already in use" with other binaries:

If you are using the Bourne or Korn Shell:

% unset LD_PRELOAD

If you are using the C Shell:

% unsetenv LD_PRELOAD

Before executing $IEFH/bin/aeft, set LD_PRELOAD as follows:

If you are using the Bourne or Korn Shell, export LD_PRELOAD:

% export LD_PRELOAD="/lib/sparcv9/libkstat.so $IEFH/bin/aeft"

If you are using the C Shell, set LD_PRELOAD as follows:

% setenv LD_PRELOAD "/lib/sparcv9/libkstat.so $IEFH/bin/aeft"

Then execute $IEFH/bin/aeft:

% $IEFH/bin/aeft

Again, unset the environment variable LD_PRELOAD to avoid issue related to "Address already in use" with other binaries:

If you are using the Bourne or Korn Shell:

% unset LD_PRELOAD

If you are using the C Shell:

% unsetenv LD_PRELOAD