RFR: 8365192: post_meth_exit should be in vm state when calling get_jvmti_thread_state [v7]

David Holmes dholmes at openjdk.org
Tue Sep 9 07:00:16 UTC 2025


On Mon, 8 Sep 2025 18:31:51 GMT, Leonid Mesnik <lmesnik at openjdk.org> wrote:

>> This is the second attempt to fix method `post_meth_exit` to correctly set state and preserve result.
>> The related fix here:
>> https://github.com/openjdk/jdk/commit/b7b64bb6c800b45e32ff37b1b92b5927a3b3fb56
>> Hope fix became clarere now.
>> 
>> There 2 problems in this post_meth_exit:
>> 1) The result is preserved only if `state->is_enabled(JVMTI_EVENT_METHOD_EXIT)` however transition in the JRT_BLOCK_END happens always. So there is a risk of loosing method results in the interp_only mode.
>> 2) The method `get_jvmti_thread_state` should be called when thread is in vm state only.
>> 
>> The fix adds `post_method_exit_transition` to have single exit point with oop restoration.
>
> Leonid Mesnik has updated the pull request incrementally with one additional commit since the last revision:
> 
>   interopnly_state should be saved

Thanks that looks clearer to me now.

One pre-existing typo.

src/hotspot/share/prims/jvmtiExport.cpp line 1870:

> 1868:   JRT_BLOCK_END
> 1869:   if (interp_only) {
> 1870:     // The JRT_BLOCK_END can safepoint in ThreadInVMfromJava desctructor. Now it is safe to allow

Suggestion:

    // The JRT_BLOCK_END can safepoint in ThreadInVMfromJava destructor. Now it is safe to allow

-------------

Marked as reviewed by dholmes (Reviewer).

PR Review: https://git.openjdk.org/jdk/pull/27112#pullrequestreview-3199680287
PR Review Comment: https://git.openjdk.org/jdk/pull/27112#discussion_r2332223595


More information about the serviceability-dev mailing list