RFR: 8281335: Allow a library already loaded via System::loadLibrary to be loaded as a raw library [v3]
Mandy Chung
mchung at openjdk.java.net
Tue Feb 15 20:06:16 UTC 2022
On Tue, 15 Feb 2022 19:59:11 GMT, Mandy Chung <mchung at openjdk.org> wrote:
>> src/java.base/share/classes/jdk/internal/loader/NativeLibraries.java line 427:
>>
>>> 425: new ConcurrentHashMap<>();
>>> 426:
>>> 427: static void acquireNativeLibraryLock(String libraryName) {
>>
>> Note sure about these two routines. Should they be shared? Should we have two locks, one for JNI, one for raw? Of course, as is the code looks fine - but I wonder if a single lock isn't overly strict.
>
> I initially planned to come back to this but I obviously forgot.
>
> This does not need the per-library locking for JNI library which avoids the deadlock due to the class and library loading scenarios involving JNI_OnLoad, class initialization, and `Sytem::loadLibrary`. I now removed the locking entirely as it uses the concurrent hash map to register/unregister the loaded libraries. Much simplified.
Thanks again for the feedback. This version is much cleaner.
-------------
PR: https://git.openjdk.java.net/jdk/pull/7435
More information about the core-libs-dev
mailing list