Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -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");

Expand Down Expand Up @@ -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) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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"
};
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand All @@ -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"
Expand All @@ -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"
Expand Down Expand Up @@ -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
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down Expand Up @@ -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) {
Expand All @@ -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;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -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",
Expand Down
Loading