Troubleshooting
Problem
While accessing Cognos Gateway URL getting error "Internal Server error". In IBM HTTP Server logs we were getting error "Error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory"
Symptom
IBM HTTP Server is used as a webserver. When Cognos Gateway URL is access through browser we end up getting error "Internal Server Error".
In IBM HTTP Server logs we were getting error
"File does not exist: /app/IBM/HTTPServer/htdocs/favicon.ico
/app/IBM/cognos/c10_64/cgi-bin/cognos.cgi: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory"
Cause
libstdc++.so.6 and libstdc++.so.6.0.8 did not exist on the system
Diagnosing The Problem
Go to <Install Dir>/cgi-bin and execute below command only if cgi is being used in Gateway URL.
ldd cognos.cgi
The output of the above command will point out the missing libraries if any.
In this scenario we observed that libstdc++.so.6 and libstdc++.so.6.0.8 were mentioned as missing. The output of ldd cognos.cgi as observed
libdl.so.2 => /lib/libdl.so.2 (0x00511000)
libnsl.so.1 => /lib/libnsl.so.1 (0x00516000)
libstdc++.so.6 => not found
libm.so.6 => /lib/libm.so.6 (0x00ea0000)
libgcc_s.so.1 => /lib/libgcc_s.so.1 (0x00c41000)
libpthread.so.0 => /lib/libpthread.so.0 (0x00531000)
libc.so.6 => /lib/libc.so.6 (0xf75b2000)
libz.so.1 => ./libz.so.1 (0x0054c000)
libstdc++.so.6 => not found
libicucogi18n.so.40 => ./libicucogi18n.so.40 (0xf73fd000)
libicucoguc.so.40 => ./libicucoguc.so.40 (0xf72c3000)
libstdc++.so.6 => not found
libCCLCryptoShared.so => ./libCCLCryptoShared.so (0x00cfe000)
libstdc++.so.6 => not found
libstdc++.so.6 => not found
libstdc++.so.6 => not found
libicucogdata.so.40 => ./libicucogdata.so.40 (0xf6648000)
libstdc++.so.6 => not found
libxcb.so.1 => /usr/lib/libxcb.so.1 (0x0058f000)
/lib/ld-linux.so.2 (0x00a72000)
libstdc++.so.6 => not found
libstdc++.so.6 => not found
libstdc++.so.6 => not found
libXau.so.6 => /usr/lib/libXau.so.6 (0x0055d000)
Resolving The Problem
If you traverse to location /usr/lib and execute command [ file libstdc++.so.6 ] it actually has a symbolic link to libstdc++.so.6.0.8 and the output of the command is seen as below.
libstdc++.so.6: symbolic link to `libstdc++.so.6.0.8'
So ultimately it ends up referencing libstdc++.so.6.0.8 file. One important point to note is that libstdc++.so.6.0.8 is a 32-bit file.
To resolve the issue you can either copy libstdc++.so.6 and libstdc++.so.6.0.8 to /usr/lib location from the system where they exist or you can install the libraries if you have the appropriate installable library file.
Was this topic helpful?
Document Information
Modified date:
15 June 2018
UID
swg21641750