xerial/snappy-java

version `GLIBCXX_3.4.21' not found

Closed this issue · 3 comments

I'm getting the following error when running in a Centos 7 container on ARM64:

java.lang.UnsatisfiedLinkError: /tmp/snappy-1.1.7-a12a7888-0c8c-4e7f-8722-83436104a644-libsnappyjava.so: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /tmp/snappy-1.1.7-a12a7888-0c8c-4e7f-8722-83436104a644-libsnappyjava.so)

The container is based on arm64v8/centos:7.

When comparing to x86_64, I noticed that the ARM version links to libstdc++, where the x86_64 one does not:

aarch64:

[root@a4c711ba5ffb /]# uname -m
aarch64
[root@a4c711ba5ffb /]# rpm -qa | grep libstdc
libstdc++-4.8.5-44.el7.aarch64
[root@a4c711ba5ffb /]# ldd -v /tmp/snappy-1.1.7-a12a7888-0c8c-4e7f-8722-83436104a644-libsnappyjava.so 
/tmp/snappy-1.1.7-a12a7888-0c8c-4e7f-8722-83436104a644-libsnappyjava.so: /lib64/libstdc++.so.6: version `GLIBCXX_3.4.21' not found (required by /tmp/snappy-1.1.7-a12a7888-0c8c-4e7f-8722-83436104a644-libsnappyjava.so)
/tmp/snappy-1.1.7-a12a7888-0c8c-4e7f-8722-83436104a644-libsnappyjava.so: /lib64/libstdc++.so.6: version `CXXABI_1.3.9' not found (required by /tmp/snappy-1.1.7-a12a7888-0c8c-4e7f-8722-83436104a644-libsnappyjava.so)
	libstdc++.so.6 => /lib64/libstdc++.so.6 (0x0000005501858000)
	libm.so.6 => /lib64/libm.so.6 (0x000000550197f000)
	libc.so.6 => /lib64/libc.so.6 (0x0000005501a30000)
	/lib/ld-linux-aarch64.so.1 (0x0000005500000000)
	libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x0000005501bb7000)

	Version information:
	/tmp/snappy-1.1.7-a12a7888-0c8c-4e7f-8722-83436104a644-libsnappyjava.so:
		libc.so.6 (GLIBC_2.17) => /lib64/libc.so.6
		libstdc++.so.6 (CXXABI_1.3) => /lib64/libstdc++.so.6
		libstdc++.so.6 (GLIBCXX_3.4.21) => not found
		libstdc++.so.6 (CXXABI_1.3.9) => not found
		libstdc++.so.6 (GLIBCXX_3.4) => /lib64/libstdc++.so.6
	/lib64/libstdc++.so.6:
		libm.so.6 (GLIBC_2.17) => /lib64/libm.so.6
		ld-linux-aarch64.so.1 (GLIBC_2.17) => /lib/ld-linux-aarch64.so.1
		libgcc_s.so.1 (GCC_4.2.0) => /lib64/libgcc_s.so.1
		libgcc_s.so.1 (GCC_3.3) => /lib64/libgcc_s.so.1
		libgcc_s.so.1 (GCC_3.0) => /lib64/libgcc_s.so.1
		libc.so.6 (GLIBC_2.17) => /lib64/libc.so.6
	/lib64/libm.so.6:
		libc.so.6 (GLIBC_PRIVATE) => /lib64/libc.so.6
		libc.so.6 (GLIBC_2.17) => /lib64/libc.so.6
	/lib64/libc.so.6:
		ld-linux-aarch64.so.1 (GLIBC_2.17) => /lib/ld-linux-aarch64.so.1
		ld-linux-aarch64.so.1 (GLIBC_PRIVATE) => /lib/ld-linux-aarch64.so.1
	/lib64/libgcc_s.so.1:
		libc.so.6 (GLIBC_2.17) => /lib64/libc.so.6

x86_64:

[root@412c67e3c9ef /]# rpm -qa | grep libstdc
libstdc++-4.8.5-44.el7.x86_64
[root@412c67e3c9ef /]# ldd -v /tmp/snappy-1.1.7-512d0af4-2622-454f-97ef-994aa617a9e6-libsnappyjava.so 
	linux-vdso.so.1 =>  (0x00007ffe841d8000)
	libm.so.6 => /lib64/libm.so.6 (0x00007fe9f31d4000)
	libc.so.6 => /lib64/libc.so.6 (0x00007fe9f2e06000)
	/lib64/ld-linux-x86-64.so.2 (0x00007fe9f372c000)

	Version information:
	/tmp/snappy-1.1.7-512d0af4-2622-454f-97ef-994aa617a9e6-libsnappyjava.so:
		ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
		libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
		libc.so.6 (GLIBC_2.3.2) => /lib64/libc.so.6
	/lib64/libm.so.6:
		ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2
		libc.so.6 (GLIBC_2.2.5) => /lib64/libc.so.6
		libc.so.6 (GLIBC_PRIVATE) => /lib64/libc.so.6
	/lib64/libc.so.6:
		ld-linux-x86-64.so.2 (GLIBC_2.3) => /lib64/ld-linux-x86-64.so.2
		ld-linux-x86-64.so.2 (GLIBC_PRIVATE) => /lib64/ld-linux-x86-64.so.2

I do in fact have an older version:

[root@412c67e3c9ef /]# strings /usr/lib64/libstdc++.so.6 | grep GLIBCXX
GLIBCXX_3.4
GLIBCXX_3.4.1
GLIBCXX_3.4.2
GLIBCXX_3.4.3
GLIBCXX_3.4.4
GLIBCXX_3.4.5
GLIBCXX_3.4.6
GLIBCXX_3.4.7
GLIBCXX_3.4.8
GLIBCXX_3.4.9
GLIBCXX_3.4.10
GLIBCXX_3.4.11
GLIBCXX_3.4.12
GLIBCXX_3.4.13
GLIBCXX_3.4.14
GLIBCXX_3.4.15
GLIBCXX_3.4.16
GLIBCXX_3.4.17
GLIBCXX_3.4.18
GLIBCXX_3.4.19
GLIBCXX_DEBUG_MESSAGE_LENGTH

Is this expected? Does the ARM version need to link to libstdc++ if the x86_64 does not?

Looks like a duplicate of #256, I'll try a newer version.

Hello,I have met exactly the same problem. Have you already solved this problem by updating the snappy-java version?? What is the qualified version? Thank you.

See my last comment. Try the latest version.