Consultor Eletrônico



Kbase 19768: HP-UX 11/Prog 9.1A Oracle DSV Cannot shl_load...libpthread
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   12/2/2008
Status: Verified

FACT(s) (Environment):

Progress 9.1A
Progress 9.1B
Progress 9.1C
HP-UX 11 32-bit
Oracle 8
Oracle DataServer

SYMPTOM(s):

Libraries errors are encountered when connecting to an Oracle 8

/usr/lib/dld.sl: can't shl_load() a library containing
THREAD LOCAL STORAGE: /usr/lib/libpthread.1
/usr/lib/dld.sl: exec format error

CAUSE:

The problem is caused by the fact that any shared library that contains what HP calls "thread-local storage" cannot be loaded into a running process address space by the shl_load() call. Such a shared library can only be loaded when the program is initially started.

Consequently, the error means that the _progres / _orasrv (if you use remote DataServer) executables must be linked against /usr/lib/libpthread.sl, so that it can be loaded at initial runtime.

FIX:

1. Avoid this problem by probuilding the executable(s).
2. Edit the link script and add the line:

-lpthread \

as the next-to-last line in the $CC command line.


FOR THE PROGRESS CLIENT:
For the Progress Client (configurable elements: ORACLE DATASERVER and TCP/IP), this makes the last three lines of the link script read:

-lcl \
-lpthread \
$PROLOAD/4gl/libavcall.a \

FOR THE REMOTE ORACLE DATASERVER:
For the Remote Oracle DataServer (configurable elements: TCP/IP),
the last three lines of the script read:

-lm \
-lpthread \
/usr/lib/libcl.sl \