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 \