Please, review the following `interp-only` issue related to carrier threads.
There are 3 problems fixed here:
 - The  `EnterInterpOnlyModeClosure::do_threads` is taking the 
`JvmtiThreadState` with the `jt->jvmti_thread_state()` which is incorrect when 
we have a deal with a carrier thread. The target state is known at the point 
when the `HandshakeClosure` is set, so the fix is to pass it as a constructor 
parameter.
 - The `state->is_pending_interp_only_mode())` was processed at mounts only but 
it has to be processed for unmounts as well. 
 - The test 
`test/hotspot/jtreg/serviceability/jvmti/vthread/MethodExitTest/libMethodExitTest.cpp`
 has a wrong assumption that there can't be `MethodExit` event on the carrier 
thread when the function `breakpoint_hit1` is being executed. However, it can 
happen if the virtual thread gets unmounted.
 
 The fix also includes new test case `vthread/CarrierThreadEventNotification` 
developed by Patricio.
 
 Testing:
 - Ran new test case locally
 - Ran mach5 tiers 1-6

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

Commit messages:
 - fix trailing spaces in new test
 - 8311177: Switching to interpreter only mode in carrier thread can lead to 
crashes

Changes: https://git.openjdk.org/jdk/pull/19438/files
  Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=19438&range=00
  Issue: https://bugs.openjdk.org/browse/JDK-8311177
  Stats: 251 lines in 7 files changed: 231 ins; 9 del; 11 mod
  Patch: https://git.openjdk.org/jdk/pull/19438.diff
  Fetch: git fetch https://git.openjdk.org/jdk.git pull/19438/head:pull/19438

PR: https://git.openjdk.org/jdk/pull/19438

Reply via email to