-
-
Notifications
You must be signed in to change notification settings - Fork 178
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
__getauxval symbols cannot be found after 2.0.66 on musl Linux #907
Comments
Since it breaks in 2.0.67, diff between 2.0.66 and 2.0.67: Diff between 2.0.66 and 2.0.67: netty-tcnative-parent-2.0.66.Final...netty-tcnative-parent-2.0.67.Final . |
I kind of suspect this is related to updating to latest boringssl and static compilation. |
@normanmaurer Are there plans to provide native libraries compiled explicitly for musl on Linux? That could be a more stable option in the long term. |
I digged more into this. It looks like checking linking requires using It appears that 2.0.69.Final succeed on both linux/arm64 and linux/amd64. This is the script I used for testing: function test_tcnative() {
local TCNATIVE_VERSION=$1
local PLATFORM=$2
local ALPINE_VERSION=3.20
echo "--------------------------------------------------------------------"
echo "Testing ${TCNATIVE_VERSION} on $PLATFORM"
docker run --platform $PLATFORM --env TCNATIVE_VERSION=$TCNATIVE_VERSION --rm -it alpine:$ALPINE_VERSION sh -c '
set -e
ARCH=$(arch)
[ "$ARCH" = "aarch64" ] && ARCH="aarch_64"
# Install dependencies
apk update
apk add gcompat libgcc
# Download and extract
wget -q https://repo1.maven.org/maven2/io/netty/netty-tcnative-boringssl-static/${TCNATIVE_VERSION}/netty-tcnative-boringssl-static-${TCNATIVE_VERSION}-linux-$ARCH.jar
unzip -q netty-tcnative-boringssl-static-${TCNATIVE_VERSION}-linux-$ARCH.jar
# Test library loading
echo "Checking library dependencies:"
LD_PRELOAD=/lib/libgcompat.so.0 ldd META-INF/native/libnetty_tcnative_linux_$ARCH.so
'
}
test_tcnative 2.0.69.Final linux/arm64
test_tcnative 2.0.69.Final linux/amd64
test_tcnative 2.0.66.Final linux/arm64
test_tcnative 2.0.66.Final linux/amd64 |
Summary
With 2.0.66, the
__getauxval
symbol can be found after installing thegcompat
dependency. However, 2.0.67 to 2.0.69 all failed.How to reproduce
Run an
alpine:3.20
container on macOS (my OS version is Ventura 13.6.4). Then go to the container and download these 4 JARs:Install the dependencies:
Take 2.0.69 for example:
As you can see, the
__getauxval
symbol is not found.The outputs of 2.0.68 is the same, while 2.0.67 is worse:
2.0.66 works well:
Not sure why
__getauxval
cannot be found fromlibgcompat.so
in 2.0.68 or later.The text was updated successfully, but these errors were encountered: