From 49e78159102b8562714ac69d6020331881ce8cb1 Mon Sep 17 00:00:00 2001 From: JiaWei Tang Date: Thu, 5 Jun 2025 11:10:53 +0800 Subject: [PATCH 1/3] [Wisp] fix testcases related to trace Summary: as title Testing: ci jtreg Reviewers: yulei, shuangheng Issue: https://github.com/dragonwell-project/dragonwell11/issues/952 CR: https://github.com/dragonwell-project/dragonwell11/pull/953 --- .../nsk/monitoring/share/ThreadController.java | 4 ++++ .../nsk/monitoring/stress/thread/strace001.java | 14 ++++++++++---- .../vmTestbase/nsk/stress/strace/strace003.java | 1 + .../vmTestbase/nsk/stress/strace/strace004.java | 1 + .../vmTestbase/nsk/stress/strace/strace005.java | 1 + .../vmTestbase/nsk/stress/strace/strace006.java | 1 + 6 files changed, 18 insertions(+), 4 deletions(-) diff --git a/test/hotspot/jtreg/vmTestbase/nsk/monitoring/share/ThreadController.java b/test/hotspot/jtreg/vmTestbase/nsk/monitoring/share/ThreadController.java index a6c13bcee8a..d9134792d24 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/monitoring/share/ThreadController.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/monitoring/share/ThreadController.java @@ -653,7 +653,9 @@ public SleepingThread(ThreadController controller, String name, Log log, Threads this.threadsGroupLocks = threadsGroupLocks; expectedLength += 3; + expectedLength += 1; // 1 for wisp + expectedMethods.add(Thread.class.getName() + ".sleep0"); expectedMethods.add(Thread.class.getName() + ".sleep"); expectedMethods.add(SleepingThread.class.getName() + ".run"); @@ -720,7 +722,9 @@ public RunningThread(ThreadController controller, String name, Log log, ThreadsG this.threadsGroupLocks = threadsGroupLocks; expectedLength += 2; + expectedLength += 1; // 1 for wisp + expectedMethods.add(Thread.class.getName() + ".yield0"); expectedMethods.add(Thread.class.getName() + ".yield"); switch (controller.invocationType) { diff --git a/test/hotspot/jtreg/vmTestbase/nsk/monitoring/stress/thread/strace001.java b/test/hotspot/jtreg/vmTestbase/nsk/monitoring/stress/thread/strace001.java index a0111ad3fc1..5ab3b9fa6c3 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/monitoring/stress/thread/strace001.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/monitoring/stress/thread/strace001.java @@ -139,7 +139,9 @@ private static boolean fillTrace() { switch (controller.getInvocationType()) { case ThreadController.JAVA_TYPE: expectedTrace = new String[] { - "java.lang.Thread.sleep" + "java.lang.Thread.sleep0" + ,"java.lang.Thread.sleep" + , "java.lang.Thread.yield0" , "java.lang.Thread.yield" , THREAD_NAME + ".waitForSign" , THREAD_NAME + ".recursionJava" @@ -149,7 +151,9 @@ private static boolean fillTrace() { case ThreadController.NATIVE_TYPE: expectedTrace = new String[] { - "java.lang.Thread.sleep" + "java.lang.Thread.sleep0" + ,"java.lang.Thread.sleep" + , "java.lang.Thread.yield0" , "java.lang.Thread.yield" , THREAD_NAME + ".waitForSign" , THREAD_NAME + ".recursionNative" @@ -159,7 +163,9 @@ private static boolean fillTrace() { case ThreadController.MIXED_TYPE: expectedTrace = new String[] { - "java.lang.Thread.sleep" + "java.lang.Thread.sleep0" + ,"java.lang.Thread.sleep" + , "java.lang.Thread.yield0" , "java.lang.Thread.yield" , THREAD_NAME + ".waitForSign" , THREAD_NAME + ".recursionNative" @@ -193,7 +199,7 @@ private static void printStackTrace(StackTraceElement[] elements) { // The method performs checks of the stack trace private static boolean checkTrace(StackTraceElement[] elements) { int length = elements.length; - int expectedLength = depth +3; + int expectedLength = depth + 3 + 1; // 1 for wisp boolean result = true; // Check the length of the trace. It must not be greater than diff --git a/test/hotspot/jtreg/vmTestbase/nsk/stress/strace/strace003.java b/test/hotspot/jtreg/vmTestbase/nsk/stress/strace/strace003.java index 496233346a3..d0cb15e458f 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/stress/strace/strace003.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/strace/strace003.java @@ -117,6 +117,7 @@ public class strace003 { "java.lang.System.arraycopy", "java.lang.Object.wait", "java.lang.Thread.exit", + "java.lang.Thread.yield0", "java.lang.Thread.yield", "java.lang.ThreadGroup.remove", "java.lang.ThreadGroup.threadTerminated", diff --git a/test/hotspot/jtreg/vmTestbase/nsk/stress/strace/strace004.java b/test/hotspot/jtreg/vmTestbase/nsk/stress/strace/strace004.java index 8719733e9d9..3c0acd2282a 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/stress/strace/strace004.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/strace/strace004.java @@ -110,6 +110,7 @@ public class strace004 { "java.lang.System.arraycopy", "java.lang.Object.wait", "java.lang.Thread.exit", + "java.lang.Thread.yield0", "java.lang.Thread.yield", "java.lang.ThreadGroup.remove", "java.lang.ThreadGroup.threadTerminated", diff --git a/test/hotspot/jtreg/vmTestbase/nsk/stress/strace/strace005.java b/test/hotspot/jtreg/vmTestbase/nsk/stress/strace/strace005.java index 4f453bb8599..6148cdea78d 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/stress/strace/strace005.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/strace/strace005.java @@ -136,6 +136,7 @@ public class strace005 { "java.lang.System.arraycopy", "java.lang.Object.wait", "java.lang.Thread.exit", + "java.lang.Thread.yield0", "java.lang.Thread.yield", "java.lang.ThreadGroup.remove", "java.lang.ThreadGroup.threadTerminated", diff --git a/test/hotspot/jtreg/vmTestbase/nsk/stress/strace/strace006.java b/test/hotspot/jtreg/vmTestbase/nsk/stress/strace/strace006.java index 07da1a1e335..7ccf7b021e1 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/stress/strace/strace006.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/stress/strace/strace006.java @@ -76,6 +76,7 @@ public class strace006 { "java.lang.System.arraycopy", "java.lang.Object.wait", "java.lang.Thread.exit", + "java.lang.Thread.yield0", "java.lang.Thread.yield", "java.lang.ThreadGroup.remove", "java.lang.ThreadGroup.threadTerminated", From 81ba2a5dfcdaffa5b6d82501e47bf077ab1b740c Mon Sep 17 00:00:00 2001 From: JiaWei Tang Date: Thu, 5 Jun 2025 16:00:49 +0800 Subject: [PATCH 2/3] [Wisp] fix testcases related to trace Summary: as title Testing: vmTestbase/nsk/monitoring/ThreadMXBean/ Reviewers: yulei, shuangheng Issue: https://github.com/dragonwell-project/dragonwell11/pull/952 CR: https://github.com/dragonwell-project/dragonwell11/pull/953 --- .../vmTestbase/nsk/monitoring/share/thread/SleepingThread.java | 1 + 1 file changed, 1 insertion(+) diff --git a/test/hotspot/jtreg/vmTestbase/nsk/monitoring/share/thread/SleepingThread.java b/test/hotspot/jtreg/vmTestbase/nsk/monitoring/share/thread/SleepingThread.java index 05e3b9de418..61a0fc52c01 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/monitoring/share/thread/SleepingThread.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/monitoring/share/thread/SleepingThread.java @@ -35,6 +35,7 @@ public class SleepingThread extends RecursiveMonitoringThread { private volatile boolean sleeping = false; private Object readyLock = new Object(); private static final String[] expectedMethods = { + "java.lang.Thread.sleep0", "java.lang.Thread.sleep", "nsk.monitoring.share.thread.SleepingThread.runInside" }; From 7d2d5c5d3e8b8164b28321c5fe1c0359c7c7a3fa Mon Sep 17 00:00:00 2001 From: JiaWei Tang Date: Wed, 11 Jun 2025 10:36:58 +0800 Subject: [PATCH 3/3] [Wisp] fix trace related testcase for wisp Summary: The depth of object.wait is different with thread.sleep, so we add an extra function for object.wait. Testing: vmTestbase/nsk/jdi/ThreadReference/ownedMonitorsAndFrames/ownedMonitorsAndFrames002/ownedMonitorsAndFrames002.java vmTestbase/nsk/jdi/ThreadReference/ownedMonitorsAndFrames/ownedMonitorsAndFrames003/ownedMonitorsAndFrames003.java vmTestbase/nsk/jdi/ThreadReference/ownedMonitorsAndFrames/ownedMonitorsAndFrames005/ownedMonitorsAndFrames005.java vmTestbase/nsk/jdi/ThreadReference/ownedMonitorsAndFrames/ownedMonitorsAndFrames006/ownedMonitorsAndFrames006.java vmTestbase/nsk/jdi/ThreadReference/ownedMonitorsAndFrames/ownedMonitorsAndFrames007/ownedMonitorsAndFrames007.java vmTestbase/nsk/jdi/ThreadReference/ownedMonitorsAndFrames/ownedMonitorsAndFrames008/TestDescription.java vmTestbase/nsk/jdi/stress/serial/mixed001/TestDescription.java vmTestbase/nsk/jdi/stress/serial/mixed002/TestDescription.java vmTestbase/nsk/jdi/stress/serial/ownedMonitorsAndFrames001/TestDescription.java vmTestbase/nsk/jdi/stress/serial/ownedMonitorsAndFrames002/TestDescription.java Reviewers: yulei, shuangheng Issue: https://github.com/dragonwell-project/dragonwell11/pull/952 CR: https://github.com/dragonwell-project/dragonwell11/pull/953 --- .../jtreg/vmTestbase/nsk/share/locks/LockingThread.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/test/hotspot/jtreg/vmTestbase/nsk/share/locks/LockingThread.java b/test/hotspot/jtreg/vmTestbase/nsk/share/locks/LockingThread.java index 0ad364e4007..68d78aba6ef 100644 --- a/test/hotspot/jtreg/vmTestbase/nsk/share/locks/LockingThread.java +++ b/test/hotspot/jtreg/vmTestbase/nsk/share/locks/LockingThread.java @@ -228,7 +228,8 @@ void removeMonitorInfo(DebugMonitorInfo removedMonitor) { // synchronizedObjectBlock() // monitor for instance of Object is acquired here // createStackFrame() // doWait() - // relinquishedMonitor.wait() + // callWait + // relinquishedMonitor.wait() // LockingThread still holds all other locks because of it didn't exit from corresponding synchronized methods and blocks. // To let LockingThread acquire relinquished monitor 'relinquishedMonitor.notifyAll()' should be called, after this @@ -440,7 +441,7 @@ private void doWait() { // and this method waits when LockingThred change state to 'Thread.State.WAITING' while (relinquishMonitor) - relinquishedMonitor.wait(0); + callWait(relinquishedMonitor); log("Acquire relinquished monitor: " + relinquishedMonitor); } catch (Exception e) { @@ -460,6 +461,10 @@ private void doWait() { } } + private void callWait(Object monitor) throws InterruptedException { + monitor.wait(0); + } + public void run() { // LockingThread call Thread.sleep() when required stack frame was created requiredState = Thread.State.TIMED_WAITING;