On Thu, 14 May 2026 02:12:39 GMT, Serguei Spitsyn <[email protected]> wrote:
>> I think so, there are no java code invocations between setting and the
>> actual code updating counters in jvmti callback.
>>
>> The synchronization is impossible (I think),.
>> To be more detailed. There is a gap between reading callback and executing
>> it in the.
>>
>>
>> jvmtiEventCompiledMethodUnload callback =
>> env->callbacks()->CompiledMethodUnload;
>> if (callback != nullptr) {
>> (*callback)(env->jvmti_external(), method, code_begin);
>> }
>>
>>
>> the` env->callbacks()->CompiledMethodUnload` might be updated after read and
>> before callback is invoked.
>> This is done while thread is already in native state, so it is not synced
>> with callback setting.
>>
>> The issue is known. The synchronization has major performance issues and not
>> strictly required by JVMTi specification.
>>
>>
>> However, it might be possible to put in the Monitor blocks the jvmt event
>> handling and events resetting to minimize the gap.
>
> The JVMTI code that sends events is intentionally racy. The agents can do
> their own synchronization if necessary.
>
> The fragment below is kind of strange:
>
> 494 agentProc(jvmtiEnv* jvmti, JNIEnv* agentJNI, void* arg) {
> 495
> 496 int i;
> 497
> 498 for (i = 1; i <= STEP_AMOUNT; i++) {
> 499
> 500 if (!nsk_jvmti_waitForSync(timeout))
> 501 return;
> 502
> 503 NSK_DISPLAY0("Check received events\n");
> 504
> 505 if (i < STEP_AMOUNT) {
> 506 showEventStatistics(i);
> 507 if (!checkEvents(i))
> 508 nsk_jvmti_setFailStatus();
> 509
> 510 if (!setCallBacks(i + 1)) { <== ???
> 511 return;
> 512 }
> 513 }
> 514
> 515 if (!nsk_jvmti_resumeSync())
> 516 return;
> 517 }
> . . .
>
>
> The `setCallBacks()` is never called with the step 1 from the `agentProc()`
> but called with step 1 from `Agent_Initialize()`. It is kind of unusual. It
> is not clear what was a reason for that.
Also, why the steps are not numbered starting from 0?
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/31128#discussion_r3238678781