RFR: 8268129: LibraryLookup::ofDefault leaks symbols from loaded libraries [v7]

Maurizio Cimadamore mcimadamore at openjdk.java.net
Tue Oct 12 20:41:00 UTC 2021


On Tue, 12 Oct 2021 18:11:56 GMT, Cheng Jin <duke at openjdk.java.net> wrote:

> Just tried with `System.load()` but still ended up with pretty much the same failure given both of them eventually invokes `ClassLoader.loadLibrary` to load the library in which case there is no big difference at this point.

Yes and no. System::loadLibrary wants a library name (no extension). It will add a library prefix (e.g. `lib` on linux) and a library suffix (e.g. `.so` on linux). So, if you do:


System.loadLibrary("c")


You will end up with `libc.so`. The `System::loadLibrary` logic will then try to find that file in any of the known library paths.

`System.load` avoids this by accepting the full path of the library. So there's no guessing the path, nor guessing of prefix/suffix. But it seems like loading still fails, likely because we try to load this library with `dlopen` but this is a static library, so for `dlopen` it just doesn't make sense.

-------------

PR: https://git.openjdk.java.net/jdk/pull/4316



More information about the build-dev mailing list