solarwinds/appoptics-apm-node

Can't load bindings Error: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found

Closed this issue · 4 comments

Hi,

node and pm2 version
v10.10.0 and 3.2.2

cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"

gcc (GCC) 4.8.5 20150623 (Red Hat 4.8.5-39)

Getting below error in logs and service is not getting registered.

Logs:
appoptics:error Can't load bindings Error: /lib64/libstdc++.so.6: version `CXXABI_1.3.8' not found (required by /data/pwaReact/capistranoDeployment_PWA/releases/20201203201522/node_modules/appoptics-bindings/build/Release/appoptics-bindings.node)
appoptics:error AppopticsAPM disabled due to: require failed:
appoptics:error api key _stats conflicts, ignoring

It looks like your issue might be installing appoptics on a different machine and copying the installations?

I created a container and installed, using node v10.23.0, and loaded. if built on centos 7 there are not references to CXXABI_1.3.8 or CXXABI_1.3.9. if built on centos 8 they are present.

build on centos:7

cat /etc/os-release
NAME="CentOS Linux"
VERSION="7 (Core)"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="7"
PRETTY_NAME="CentOS Linux 7 (Core)"
ANSI_COLOR="0;31"
CPE_NAME="cpe:/o:centos:centos:7"
HOME_URL="https://www.centos.org/"
BUG_REPORT_URL="https://bugs.centos.org/"

CENTOS_MANTISBT_PROJECT="CentOS-7"
CENTOS_MANTISBT_PROJECT_VERSION="7"
REDHAT_SUPPORT_PRODUCT="centos"
REDHAT_SUPPORT_PRODUCT_VERSION="7"

g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/4.8.5/lto-wrapper
Target: x86_64-redhat-linux
Configured with: ../configure --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-bootstrap --enable-shared --enable-threads=posix --enable-checking=release --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-linker-hash-style=gnu --enable-languages=c,c++,objc,obj-c++,java,fortran,ada,go,lto --enable-plugin --enable-initfini-array --disable-libgcj --with-isl=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/isl-install --with-cloog=/builddir/build/BUILD/gcc-4.8.5-20150702/obj-x86_64-redhat-linux/cloog-install --enable-gnu-indirect-function --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
Thread model: posix
gcc version 4.8.5 20150623 (Red Hat 4.8.5-44) (GCC)

strings ao-metrics.node | grep CXXABI
CXXABI_1.3
__cxa_begin_catch@@CXXABI_1.3
__cxa_rethrow@@CXXABI_1.3
__cxa_end_catch@@CXXABI_1.3
__gxx_personality_v0@@CXXABI_1.3

strings appoptics-bindings.node | grep CXXABI
CXXABI_1.3
__cxa_begin_catch@@CXXABI_1.3
__cxa_allocate_exception@@CXXABI_1.3
_ZTVN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
__cxa_free_exception@@CXXABI_1.3
_ZTVN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
__cxa_rethrow@@CXXABI_1.3
__cxa_end_catch@@CXXABI_1.3
__gxx_personality_v0@@CXXABI_1.3
__cxa_throw@@CXXABI_1.3
_ZTVN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
__cxa_pure_virtual@@CXXABI_1.3
[root@e33541433f09 Release]#

build on centos:8

g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/libexec/gcc/x86_64-redhat-linux/8/lto-wrapper
OFFLOAD_TARGET_NAMES=nvptx-none
OFFLOAD_TARGET_DEFAULT=1
Target: x86_64-redhat-linux
Configured with: ../configure --enable-bootstrap --enable-languages=c,c++,fortran,lto --prefix=/usr --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=http://bugzilla.redhat.com/bugzilla --enable-shared --enable-threads=posix --enable-checking=release --enable-multilib --with-system-zlib --enable-__cxa_atexit --disable-libunwind-exceptions --enable-gnu-unique-object --enable-linker-build-id --with-gcc-major-version-only --with-linker-hash-style=gnu --enable-plugin --enable-initfini-array --with-isl --disable-libmpx --enable-offload-targets=nvptx-none --without-cuda-driver --enable-gnu-indirect-function --enable-cet --with-tune=generic --with-arch_32=x86-64 --build=x86_64-redhat-linux
Thread model: posix
gcc version 8.3.1 20191121 (Red Hat 8.3.1-5) (GCC)

strings appoptics-bindings.node | grep CXXABI
CXXABI_1.3.8
CXXABI_1.3.9
CXXABI_1.3
__cxa_begin_catch@@CXXABI_1.3
__cxa_allocate_exception@@CXXABI_1.3
_ZTVN10__cxxabiv117__class_type_infoE@@CXXABI_1.3
__cxa_free_exception@@CXXABI_1.3
_ZdlPvm@@CXXABI_1.3.9
_ZTVN10__cxxabiv120__si_class_type_infoE@@CXXABI_1.3
__cxa_throw_bad_array_new_length@@CXXABI_1.3.8
__cxa_rethrow@@CXXABI_1.3
__cxa_end_catch@@CXXABI_1.3
__gxx_personality_v0@@CXXABI_1.3
__cxa_throw@@CXXABI_1.3
_ZTVN10__cxxabiv121__vmi_class_type_infoE@@CXXABI_1.3
__cxa_pure_virtual@@CXXABI_1.3

Yes, you’re right. We copy whole zipped installation from our pre prod server to production and then run it. I just checked pre prod server is on centos 6 which might be creating an issue here.
But as per the details shared by you, will it not work on centos 7 either then?

it depends on what libraries and compilers are installed. i would guess that the centos 6 pre-prod server has updated versions of the compiler and libraries because i would expect it to work if they were the libraries originally supplied. new versions may have new CXXABI versions but they don't drop the newest versions when they create new versions of the libraries and compiler.

the compiler that was distributed with centos 6 is not supported but it seems like the version installed now on your centos 6 system skipped g++ 4.8.5 (because it doesn't supply CXXABI 1.3.8 or 1.3.9).

the easiest suggestion would be to do the pre-prod using centos 7. if that's not possible then the centos 6 system should have gcc/g++ 4.8.5 and libraries.

i'm working on pre-built binaries now; we will build with the lowest version of the OS and compiler that we support.

i will post a message on one of these issues when pre-built binaries are ready to go. i appreciate the information you provide when you submit an issue.