Skip to content

Commit 47f44f0

Browse files
author
Lauri Alanko
committed
Mark JNI method frames as "native"
Use the "native" attribute of stack frames to indicate JNI invocation frames, like SentryStackTraceFactory does.
1 parent 9240d3f commit 47f44f0

File tree

2 files changed

+18
-0
lines changed

2 files changed

+18
-0
lines changed

sentry-android-core/src/main/java/io/sentry/android/core/internal/threaddump/ThreadDumpParser.java

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -239,6 +239,7 @@ private SentryStackTrace parseStacktrace(
239239
frame.setModule(module);
240240
frame.setFunction(jniRe.group(3));
241241
frame.setInApp(stackTraceFactory.isInApp(module));
242+
frame.setNative(true);
242243
frames.add(frame);
243244
lastJavaFrame = frame;
244245
} else if (matches(lockedRe, text)) {

sentry-android-core/src/test/java/io/sentry/android/core/internal/threaddump/ThreadDumpParserTest.kt

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,23 @@ class ThreadDumpParserTest {
7373
assertEquals("HandlerThread.java", firstFrame.filename)
7474
assertEquals(67, firstFrame.lineno)
7575
assertEquals(null, firstFrame.isInApp)
76+
assertNull(firstFrame.isNative)
77+
assertNull(firstFrame.platform)
78+
79+
val jniFrame = randomThread.stacktrace!!.frames!!.get(4)
80+
assertEquals("android.os.MessageQueue", jniFrame.module)
81+
assertEquals("nativePollOnce", jniFrame.function)
82+
assertNull(jniFrame.lineno)
83+
assertEquals(true, jniFrame.isNative)
84+
assertNull(firstFrame.platform)
85+
86+
val nativeFrame = randomThread.stacktrace!!.frames!!.get(5)
87+
assertEquals("/system/lib64/libandroid_runtime.so", nativeFrame.`package`)
88+
assertEquals("android::android_os_MessageQueue_nativePollOnce(_JNIEnv*, _jobject*, long, int)",
89+
nativeFrame.function)
90+
assertEquals(44, nativeFrame.lineno)
91+
assertNull(nativeFrame.isNative) // Confusing, but "isNative" means JVM frame for a JNI method
92+
assertEquals("native", nativeFrame.platform)
7693
}
7794

7895
@Test

0 commit comments

Comments
 (0)