Integrated: 8367475: Incorrect lock usage in LambdaFormInvokers::regenerate_holder_classes
Ioi Lam
iklam at openjdk.org
Sat Sep 13 20:46:23 UTC 2025
On Thu, 11 Sep 2025 17:22:20 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.
This pull request has now been integrated.
Changeset: c85c5cb5
Author: Ioi Lam <iklam at openjdk.org>
URL: https://git.openjdk.org/jdk/commit/c85c5cb50e0bd80732af9d45c85fc01032ed332c
Stats: 40 lines in 3 files changed: 23 ins; 8 del; 9 mod
8367475: Incorrect lock usage in LambdaFormInvokers::regenerate_holder_classes
Reviewed-by: dholmes, matsaave, liach
-------------
PR: https://git.openjdk.org/jdk/pull/27231
More information about the hotspot-runtime-dev
mailing list