RFR: 8224852: JVM crash on watched field access from native code [v4]
Serguei Spitsyn
sspitsyn at openjdk.org
Wed Oct 22 04:51:03 UTC 2025
On Wed, 22 Oct 2025 03:39:57 GMT, Leonid Mesnik <lmesnik at openjdk.org> wrote:
>> The field access/modification events set interp only mode and compiled frame is not expected. However JNI might call `post_field_access_by_jni` while the last java frame is compiled.
>>
>> 1) The thread switched to interponly mode while it is in JNI code. The deoptimization is triggered but each frame is really changed only execution returns to it. So last java frame was not executed and thus is still compiled.
>> 2) The JNI accessed field from the thread where field events are not enabled. So the `post_field_access_by_jni` is called in threads in interp_only mode.
>>
>> The original example doesn't reproduce issue because of JDK changes and I don't know of it is 1) or 2)I. I implemented regression test for both problems.
>>
>> The location should be zero for JNI access.
>
> Leonid Mesnik has updated the pull request incrementally with one additional commit since the last revision:
>
> feedback
test/hotspot/jtreg/serviceability/jvmti/events/FieldAccess/FieldsEventsFromJNI/libJvmtiFieldEventsFromJNI.cpp line 167:
> 165:
> 166: JNIEXPORT void JNICALL
> 167: Java_FieldsEventsFromJNI_enableEventsAndModifyField(
Need to rename these as well: `s/Java_FieldsEventsFromJNI/Java_FieldEventsFromJNI/g`.
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/27584#discussion_r2450427318
More information about the serviceability-dev
mailing list