RFR: 8367475: Incorrect lock usage in LambdaFormInvokers::regenerate_holder_classes [v2]
Matias Saavedra Silva
matsaave at openjdk.org
Fri Sep 12 14:37:53 UTC 2025
On Fri, 12 Sep 2025 04:20:27 GMT, Ioi Lam <iklam at openjdk.org> wrote:
>> The assert happens because we attempt to allocate Java objects while holding a mutex:
>>
>>
>> MutexLocker ml(Thread::current(), LambdaFormInvokers_lock);
>> list_lines = oopFactory::new_objArray_handle(vmClasses::String_klass(), len, CHECK);
>> for (int i = 0; i < len; i++) {
>> Handle h_line = java_lang_String::create_from_str(_lambdaform_lines->at(i), CHECK);
>>
>>
>> It's possible for the allocations to trigger a call to Java when JVMTI is enabled.
>>
>> The fix is to do the allocation outside of the mutex. However, we still use the mutex to make sure we have a consistent view of `_lambdaform_lines`, which may be modified by concurrent Java threads.
>
> Ioi Lam has updated the pull request incrementally with one additional commit since the last revision:
>
> @dholmes-ora comment - Thread::current() never returns nullptr
Changes make sense, thanks!
-------------
Marked as reviewed by matsaave (Reviewer).
PR Review: https://git.openjdk.org/jdk/pull/27231#pullrequestreview-3217009121
More information about the hotspot-runtime-dev
mailing list