On Wed, 27 Oct 2021 03:31:00 GMT, Jaikiran Pai <j...@openjdk.org> wrote:
>> On, macOS 11.x, system libraries are loaded from dynamic linker cache. The >> libraries are no longer present on the filesystem. >> `NativeLibraries::loadLibrary` checks for the file existence before calling >> `JVM_LoadLibrary`. Such check no longer applies on Big Sur. This >> proposes that on macOS >= 11, it will skip the file existence check and >> attempt to load a library for each path from java.library.path and system >> library path. > > src/java.base/share/classes/jdk/internal/loader/NativeLibraries.java line 166: > >> 164: return null; >> 165: } >> 166: return file.getCanonicalPath(); > > I think a `!file.exists()` check would still be needed here to handle the > case when `loadLibraryOnlyIfPresent` is `false`, isn't it? Ignore this previous comment. I read your JBS comment just now which says: > The JDK side determines the path of the given library name and checks if it > exists before calling JVM_LoadLibrary. A potential fix for MacOS might be to > skip the file presence check and pass it to JVM. So, I think, the whole point of this change in this block is to skip the file existence check and return back a file path. ------------- PR: https://git.openjdk.java.net/jdk/pull/6127