Tech Info 066: Connection loss on Solaris 8 caused by wrong thread library

HELIOS Tech Info #066 

Mon, 20 Jan 2003

Connection loss on Solaris 8 caused by wrong thread library

On Solaris 8 HELIOS products beginning with CD018 require the thread library from “/usr/lib/lwp/libthread” and not the library from “/usr/lib/libthread”.
By default, the HELIOS processes are searching for the library “/usr/lib/lwp/libthread”. In case the environment variable “LD_LIBRARY_PATH” is set to begin with “/usr/lib” in the environment from which “$HELIOSDIR/bin/start-helios” is called, the HELIOS processes will load the wrong library.
As a result, Mac / PC clients or printer queues may loose the connection to the HELIOS server.
In order to load the required “/usr/lib/lwp/libthread” library, the environment variable “LD_LIBRARY_PATH” must be adjusted before starting the HELIOS processes.
We recommend to include in the “$HELIOSDIR/bin/start-helios” script just after the line:
# Attempt to find out the directory where we are installed and preset
the following two lines:
LD_LIBRARY_PATH=/usr/lib/lwp:$LD_LIBRARY_PATH
export LD_LIBRARY_PATH
Then stop / start the HELIOS products.
After “$HELIOSDIR/bin/start-helios” has finished, you can check that the proper libraries have been loaded using the Solaris “pldd” command.
Use ps -efl | grep afpsrv to locate the process id of an “afpsrv” process and then issue pldd <afpsrv_pid>.
The output of the “pldd” command should list the following line: 
/usr/lib/lwp/libthread.so.1
Solaris 9 does use the “lwp” based “libthread” library by default and there should be no change necessary. In case you encounter connection losses on a Solaris 9 system also, simply adjust the "start-helios" script as described above.

Note:

pldd <afpsrv_pid> on Solaris 9 should list “/usr/lib/libthread.so.1” as the “/usr/lib/lwp/libthread.so.1” is a symbolic link to “/usr/lib/libthread.so.1”.
Prior to CD018, HELIOS products were not linked to a threads library and there is no change necessary.
In case you call external programs from HELIOS processes which require a different “libthread”, you have to adjust the environment variable “LD_LIBRARY_PATH” before you call that program. This could be the case for notify scripts/programs of HELIOS printer queues, or scripts/ programs called from the “Script Server”.