> 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 with a new target base due to a merge or a rebase. The incremental webrev excludes the unrelated changes brought in by the merge/rebase. The pull request contains 28 additional commits since the last revision: - fixed comment - renamed macros - Merge branch 'master' of https://github.com/openjdk/jdk into 8355631 - fixed after David's comments - cleanup - fixed comments - fixed comments - cleanup - The global flag implemented - the post compiled method updated - ... and 18 more: https://git.openjdk.org/jdk/compare/2146c55c...398c808a ------------- Changes: - all: https://git.openjdk.org/jdk/pull/27504/files - new: https://git.openjdk.org/jdk/pull/27504/files/7b0fd51e..398c808a Webrevs: - full: https://webrevs.openjdk.org/?repo=jdk&pr=27504&range=04 - incr: https://webrevs.openjdk.org/?repo=jdk&pr=27504&range=03-04 Stats: 29577 lines in 804 files changed: 17398 ins; 7671 del; 4508 mod Patch: https://git.openjdk.org/jdk/pull/27504.diff Fetch: git fetch https://git.openjdk.org/jdk.git pull/27504/head:pull/27504 PR: https://git.openjdk.org/jdk/pull/27504
