RFR: 8319935: Ensure only one JvmtiThreadState is create for one JavaThread associated with attached native thread [v3]

Serguei Spitsyn sspitsyn at openjdk.org
Tue Nov 21 23:35:09 UTC 2023


On Mon, 20 Nov 2023 19:28:13 GMT, Jiangli Zhou <jiangli at openjdk.org> wrote:

>> Please review JvmtiThreadState::state_for_while_locked change to handle the state->get_thread_oop() null case. Please see https://bugs.openjdk.org/browse/JDK-8319935 for details.
>
> Jiangli Zhou has updated the pull request incrementally with one additional commit since the last revision:
> 
>   Add a check for a thread is_attaching_via_jni, based on David Holmes' comment.

src/hotspot/share/prims/jvmtiThreadState.inline.hpp line 100:

> 98:     assert(state->get_thread_oop() != nullptr, "incomplete state");
> 99:   }
> 100: #endif

Nit: I would suggest to write this assert in the form:

  // Make sure we don't see an incomplete state. An incomplete state can cause
  // a duplicate JvmtiThreadState being created below and bound to the 'thread'
  // incorrectly, which leads to stale JavaThread* from the JvmtiThreadState
  // after the thread exits.
   assert(state == nullptr || state->get_thread_oop() != nullptr, "incomplete state");

The `#ifdef ASSERT` and `#endif` are not needed then.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/16642#discussion_r1401332452


More information about the serviceability-dev mailing list