RFR: 8297286: runtime/vthread tests crashing after JDK-8296324
Leonid Mesnik
lmesnik at openjdk.org
Wed Nov 23 02:21:10 UTC 2022
On Wed, 23 Nov 2022 00:24:28 GMT, Serguei Spitsyn <sspitsyn at openjdk.org> wrote:
> This problem has two sides.
> One is that the `VirtualThread::run() `cashes the field `notifyJvmtiEvents` value.
> It caused the native method `notifyJvmtiUnmountBegin()` not called after the field `notifyJvmtiEvents`
> value has been set to `true` when an agent library is loaded into running VM.
> The fix is to get rid of this cashing.
> Another is that enabling `notifyJvmtiEvents` notifications needs a synchronization.
> Otherwise, a VTMS transition start can be missed which will cause some asserts to fire.
> The fix is to use a JvmtiVTMSTransitionDisabler helper for sync.
>
> Testing:
> The originally failed tests are passed now:
>
> runtime/vthread/RedefineClass.java
> runtime/vthread/TestObjectAllocationSampleEvent.java
>
> In progress:
> Run the tiers 1-6 to make sure there are no regression.
Marked as reviewed by lmesnik (Reviewer).
src/java.base/share/classes/java/lang/VirtualThread.java line 273:
> 271: private void run(Runnable task) {
> 272: assert state == RUNNING;
> 273: boolean notifyJvmti = notifyJvmtiEvents;
Don't we have same issue in yieldContinuation() method? (line 396)
-------------
PR: https://git.openjdk.org/jdk/pull/11304
More information about the hotspot-dev
mailing list