summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Alex Light <allight@google.com> 2019-05-08 12:56:34 -0700
committer android-build-merger <android-build-merger@google.com> 2019-05-08 12:56:34 -0700
commit539376351abd8de035aae3a7ea2c9edd186a1b8c (patch)
treeab3cbcdd37a1afc1b0ae96bf756c332a2b4ccbdc
parentc45f9d8b633c7fe9599a33f4f3a0676cd2864338 (diff)
parent342b69492cd0789d1c0903bb6d948e505e708048 (diff)
Fix JVMTI GetStackTrace bug
am: 342b69492c Change-Id: Iaef2b64238d73baff2a0f534d0cef2f68eff46e3
-rw-r--r--openjdkjvmti/ti_stack.cc6
-rw-r--r--test/911-get-stack-trace/expected.txt14
-rw-r--r--test/911-get-stack-trace/src/art/OtherThread.java1
-rw-r--r--test/911-get-stack-trace/src/art/SameThread.java1
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);