On Mon, 29 Jul 2024 09:49:11 GMT, Jiawei Tang <jwt...@openjdk.org> wrote:

>> I add the testcase which can reproduce the crash. I hope that I could get 
>> some advise if the codes need changing.
>
> Jiawei Tang has refreshed the contents of this pull request, and previous 
> commits have been removed. The incremental views will show differences 
> compared to the previous content of the PR. The pull request contains one new 
> commit since the last revision:
> 
>   8337331: crash: pinned virtual thread will lead to jvm crash when running 
> with the javaagent option

Can we not just preload the problematic class so that it won't happen during 
the transition?

test/hotspot/jtreg/serviceability/jvmti/vthread/VThreadTraceWithAgent/TestPinCaseWithTrace.java
 line 2:

> 1: /*
> 2:  * Copyright (c) 2024, 2024, Oracle and/or its affiliates. All rights 
> reserved.

Please only use a single year here.

test/hotspot/jtreg/serviceability/jvmti/vthread/VThreadTraceWithAgent/TestPinCaseWithTrace.java
 line 36:

> 34:  * @run main/othervm/timeout=100 -Djdk.tracePinnedThreads=full 
> TestPinCaseWithTrace
> 35:  * @run main/othervm/timeout=100 -javaagent:TestPinCaseWithTrace.jar 
> TestPinCaseWithTrace
> 36:  * @run main/othervm/timeout=100 -Djdk.tracePinnedThreads=full 
> -javaagent:TestPinCaseWithTrace.jar TestPinCaseWithTrace

Unclear why we need the three variants.

Also where does the timeout value come from? How long does the test take to run?

test/hotspot/jtreg/serviceability/jvmti/vthread/VThreadTraceWithAgent/TestPinCaseWithTrace.java
 line 62:

> 60:     public static void main(String[] args) throws Exception{
> 61:         ExecutorService scheduler = Executors.newFixedThreadPool(1);
> 62:         Thread.Builder builder = 
> TestPinCaseWithTrace.virtualThreadBuilder(scheduler);

Can you not just create a Virtual Thread directly rather than defining a 
single-threaded executor??

test/hotspot/jtreg/serviceability/jvmti/vthread/VThreadTraceWithAgent/libPinJNI.c
 line 28:

> 26: JNIEXPORT jint JNICALL
> 27: Java_TestPinCaseWithTrace_nativeFuncPin(JNIEnv* env, jclass klass, jint 
> x) {
> 28:     jmethodID nativeBaz = (*env)->GetStaticMethodID(env, klass, 
> "native2Java", "(I)I");

Suggestion: just use `m` rather than `nativeBaz`.

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

PR Review: https://git.openjdk.org/jdk/pull/20373#pullrequestreview-2204496515
PR Review Comment: https://git.openjdk.org/jdk/pull/20373#discussion_r1694947729
PR Review Comment: https://git.openjdk.org/jdk/pull/20373#discussion_r1694949670
PR Review Comment: https://git.openjdk.org/jdk/pull/20373#discussion_r1694952022
PR Review Comment: https://git.openjdk.org/jdk/pull/20373#discussion_r1694954328

Reply via email to