diff options
| -rw-r--r-- | openjdkjvmti/ti_stack.cc | 6 | ||||
| -rw-r--r-- | test/911-get-stack-trace/expected.txt | 14 | ||||
| -rw-r--r-- | test/911-get-stack-trace/src/art/OtherThread.java | 1 | ||||
| -rw-r--r-- | test/911-get-stack-trace/src/art/SameThread.java | 1 |
4 files changed, 15 insertions, 7 deletions
diff --git a/openjdkjvmti/ti_stack.cc b/openjdkjvmti/ti_stack.cc index 62204c9957..75f055652e 100644 --- a/openjdkjvmti/ti_stack.cc +++ b/openjdkjvmti/ti_stack.cc @@ -232,7 +232,7 @@ struct GetStackTraceDirectClosure : public art::Closure { size_t index = 0; }; -jvmtiError StackUtil::GetStackTrace(jvmtiEnv* jvmti_env ATTRIBUTE_UNUSED, +jvmtiError StackUtil::GetStackTrace(jvmtiEnv* jvmti_env, jthread java_thread, jint start_depth, jint max_frame_count, @@ -282,7 +282,9 @@ jvmtiError StackUtil::GetStackTrace(jvmtiEnv* jvmti_env ATTRIBUTE_UNUSED, return ERR(THREAD_NOT_ALIVE); } *count_ptr = static_cast<jint>(closure.index); - if (closure.index < static_cast<size_t>(start_depth)) { + if (closure.index == 0) { + JVMTI_LOG(INFO, jvmti_env) << "The stack is not large enough for a start_depth of " + << start_depth << "."; return ERR(ILLEGAL_ARGUMENT); } return ERR(NONE); diff --git a/test/911-get-stack-trace/expected.txt b/test/911-get-stack-trace/expected.txt index 31794243da..42e8aa7e96 100644 --- a/test/911-get-stack-trace/expected.txt +++ b/test/911-get-stack-trace/expected.txt @@ -55,6 +55,8 @@ From top bar (IIILart/ControlData;)J 0 26 foo (IIILart/ControlData;)I 0 21 baz (IIILart/ControlData;)Ljava/lang/Object; 8 34 +--------- + printOrWait (IILart/ControlData;)V 6 41 From bottom --------- run ()V 0 25 @@ -62,7 +64,7 @@ From bottom baz (IIILart/ControlData;)Ljava/lang/Object; 8 34 bar (IIILart/ControlData;)J 0 26 foo (IIILart/ControlData;)I 0 21 - doTest ()V 58 32 + doTest ()V 61 33 run ()V 0 25 --------- bar (IIILart/ControlData;)J 0 26 @@ -132,6 +134,8 @@ From top foo (IIILart/ControlData;)I 0 21 baz (IIILart/ControlData;)Ljava/lang/Object; 8 34 bar (IIILart/ControlData;)J 0 26 +--------- + wait ()V 2 568 From bottom --------- run ()V 4 28 @@ -169,7 +173,7 @@ From top baz (IIILart/ControlData;)Ljava/lang/Object; 8 34 bar (IIILart/ControlData;)J 0 26 foo (IIILart/ControlData;)I 0 21 - run ()V 4 61 + run ()V 4 62 --------- baz (IIILart/ControlData;)Ljava/lang/Object; 2 32 bar (IIILart/ControlData;)J 0 26 @@ -186,7 +190,7 @@ From top baz (IIILart/ControlData;)Ljava/lang/Object; 8 34 bar (IIILart/ControlData;)J 0 26 foo (IIILart/ControlData;)I 0 21 - run ()V 4 61 + run ()V 4 62 --------- printOrWait (IILart/ControlData;)V 45 54 baz (IIILart/ControlData;)Ljava/lang/Object; 2 32 @@ -201,13 +205,13 @@ From top foo (IIILart/ControlData;)I 0 21 From bottom --------- - run ()V 4 61 + run ()V 4 62 --------- foo (IIILart/ControlData;)I 0 21 baz (IIILart/ControlData;)Ljava/lang/Object; 8 34 bar (IIILart/ControlData;)J 0 26 foo (IIILart/ControlData;)I 0 21 - run ()V 4 61 + run ()V 4 62 --------- baz (IIILart/ControlData;)Ljava/lang/Object; 8 34 bar (IIILart/ControlData;)J 0 26 diff --git a/test/911-get-stack-trace/src/art/OtherThread.java b/test/911-get-stack-trace/src/art/OtherThread.java index 3f5ae59e18..a513a1b10f 100644 --- a/test/911-get-stack-trace/src/art/OtherThread.java +++ b/test/911-get-stack-trace/src/art/OtherThread.java @@ -38,6 +38,7 @@ public class OtherThread { PrintThread.print(t, 1, 25); PrintThread.print(t, 0, 7); PrintThread.print(t, 2, 7); + PrintThread.print(t, 2, 1); System.out.println("From bottom"); PrintThread.print(t, -1, 25); diff --git a/test/911-get-stack-trace/src/art/SameThread.java b/test/911-get-stack-trace/src/art/SameThread.java index c9afad5570..c7efd6af1a 100644 --- a/test/911-get-stack-trace/src/art/SameThread.java +++ b/test/911-get-stack-trace/src/art/SameThread.java @@ -26,6 +26,7 @@ public class SameThread { Recurse.foo(4, 1, 25, null); Recurse.foo(4, 0, 5, null); Recurse.foo(4, 2, 5, null); + Recurse.foo(4, 2, 1, null); System.out.println("From bottom"); Recurse.foo(4, -1, 25, null); |