netty-tcnative: Unable to use pre-built binaries on alpine linux

I am trying to use the netty-tcnative libraries for my grpc application in a docker container. When i use the prebuilt binary I get the following error:

Inconsistency detected by ld.so: dl-lookup.c: 128: check_match: Assertion `version->filename == ((void *)0) || ! _dl_name_match_p (version->filename, map)' failed!

About this issue

  • Original URL
  • State: closed
  • Created 8 years ago
  • Reactions: 6
  • Comments: 29 (11 by maintainers)

Most upvoted comments

I would like to express strong interest in an alpine-version available from maven. Its just to cumbersome building it yourself if you do wanna use alpine images

I don’t think glibc is even an issue now. I think you just need apk update && apk add libc6-compat. That’s what it seemed like when I tested for grpc: https://github.com/grpc/grpc-java/blob/master/SECURITY.md#netty

@pires based on your work I have this automated via gradle. Thanks! @normanmaurer If you folks decide to support this some day, we’ve now automated it down to a single command. It’s written in gradle, though. I did not feel like writing such an involved thing in maven.

The built native jar as desribed above, under openssl-dynamic/target/netty-tcnative-<version>-linux-x86_64.jar , works for me, if I use the following, in a runtime image based FROM jeanblanchard/java:jdk-8:

run 'apk update'
run 'apk add apr-util apr-util-dev libuuid'

It’s very important to change the base image only if you know what you are doing otherwise you might end up not finding libuuid during tcnative load.

Hope this helps. Hopefully I get the time to provide this in a matter more automated than github comments someday.

Cheers, Dimitar