RFR: 8355631: The events might be generated after VM_DEATH event [v4]
Serguei Spitsyn
sspitsyn at openjdk.org
Tue Oct 28 00:33:03 UTC 2025
On Mon, 27 Oct 2025 15:36:41 GMT, Leonid Mesnik <lmesnik at openjdk.org> wrote:
>> The JVMTI spec says: https://docs.oracle.com/en/java/javase/24/docs/specs/jvmti.html#VMDeath
>> `The VM death event notifies the agent of the termination of the VM. No events will occur after the VMDeath event.`
>>
>> However, current implementation changes state and only after this start disabling events.
>>
>> It might be not a conformance issue, because there is no way to get thread state in the very beginning of event.
>> The main practical issue is that currently certain events are generated when VM is becoming dead. So any function in event should check error against JVMTI_PHASE_DEAD. We can easily trigger it by running tests with enabled https://bugs.openjdk.org/browse/JDK-8352654
>>
>> Also, it would be useful to guarantee that VM_DEATH is last event so users can safely close/destroy all supported all structures used by Jvmti agent (like RawMonitors).
>>
>> The proposed fix is to stop events posting and wait for already executing events before vm_death is posted.
>>
>> Currently, I haven't seen problems with this fix and https://bugs.openjdk.org/browse/JDK-8352654.
>
> Leonid Mesnik has updated the pull request incrementally with one additional commit since the last revision:
>
> fixed after David's comments
src/hotspot/share/prims/jvmtiEventController.cpp line 1231:
> 1229: const double start = os::elapsedTime();
> 1230: const double max_wait_time = 60;
> 1231: // The first time we see the callback count reach zero we know all actual
Nit: s/the callback count reach zero/the callback count reaches zero/g
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/27504#discussion_r2467522233
More information about the hotspot-dev
mailing list