OpenJDK 13/14 introduced change fb5b3981eac:

8222720: Provide extended VMWare/vSphere virtualization related info in the hs_error file on linux/windows x86_64

On SLES 12 (maybe also other Linuxes) the impl loads /usr/lib64/libguestlib.so.0 already during JVM startup. That library depends on /usr/lib64/libvmtools.so.0, which in turn depends on a lot of other libraries:

  NEEDED               libdnet.so.1
  NEEDED               libglib-2.0.so.0
  NEEDED               libicui18n.so.52.1
  NEEDED               libicuuc.so.52.1
  NEEDED               libpthread.so.0
  NEEDED               libdl.so.2
  NEEDED               libssl.so.1.0.0
  NEEDED               libcrypto.so.1.0.0
  NEEDED               libc.so.6
  NEEDED               ld-linux-x86-64.so.2
  NEEDED               libgcc_s.so.1

When building tcnative against OpenSSL 1.0.x, the JVM has already loaded OpenSSL 1.0 system libs via the above dependency and will not load our tcnative dependency. This lead to a subtle failure in my case:

/usr/local/jdk13/bin/java: symbol lookup error: /path/to/lib/libtcnative-1.so.0.2.23: undefined symbol: SSL_COMP_free_compression_methods

Even worse could be using OpenSSL 1.1.x for tcnative. Then the JVM would load the 1.0.x version, tcnative would load the 1.1.x version but symbols that exist in both would be resolved by the runtime linker in the older version, because it was loaded first (default symbol search order). All of that can be worked around by non-default linking tricks, but I wanted to point out this new behavior.

I have written to hotspot-runtime-...@openjdk.java.net about these new dependencies and potential problems.

Regards,

Rainer

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscr...@tomcat.apache.org
For additional commands, e-mail: dev-h...@tomcat.apache.org

Reply via email to