Skip to content

Commit a863aeb

Browse files
committed
filter out empty stack frames
1 parent d312548 commit a863aeb

File tree

2 files changed

+34
-2
lines changed

2 files changed

+34
-2
lines changed

flutter/lib/src/jvm/jvm_exception.dart

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -256,8 +256,11 @@ class JvmException {
256256
frames.add(trimmed);
257257
}
258258

259-
final thisExceptionFrames =
260-
thisException.map((e) => JvmFrame.parse(e)).toList(growable: false);
259+
final thisExceptionFrames = thisException
260+
.map((e) => JvmFrame.parse(e))
261+
.where(
262+
(e) => e.originalFrame.trim() != 'at' && e.originalFrame.isNotEmpty)
263+
.toList(growable: false);
261264

262265
final suppressedExceptions = supressed
263266
.map((e) => JvmException.parse(e.join(_newLine)))

flutter/test/jvm/jvm_exception_test.dart

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,17 @@ void main() {
8585
expect(exception.stackTrace[0].fileName, 'StandardMessageCodec.java');
8686
expect(exception.stackTrace[0].lineNumber, 292);
8787
});
88+
89+
test('parse drops frames with `at ` and empty original frame', () {
90+
final exception =
91+
JvmException.parse(platformExceptionWithEmptyLastStackFrame);
92+
expect(exception.stackTrace.length, 13);
93+
expect(exception.stackTrace.last.className,
94+
'com.android.internal.os.ZygoteInit');
95+
expect(exception.stackTrace.last.fileName, 'ZygoteInit.java');
96+
expect(exception.stackTrace.last.method, 'main');
97+
expect(exception.stackTrace.last.lineNumber, 936);
98+
});
8899
}
89100

90101
const javaExceptionWithCauses = '''
@@ -194,3 +205,21 @@ java.lang.IllegalArgumentException: Unsupported value: '[Ljava.lang.StackTraceEl
194205
at java.lang.reflect.Method.invoke(Native Method)
195206
at com.android.internal.os.RuntimeInit\$MethodAndArgsCaller.run(RuntimeInit.java:556)
196207
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1037)''';
208+
209+
const platformExceptionWithEmptyLastStackFrame = '''
210+
java.lang.RuntimeException: Catch this platform exception!
211+
at io.sentry.samples.flutter.MainActivity\$configureFlutterEngine\$1.onMethodCall(MainActivity.kt:40)
212+
at io.flutter.plugin.common.MethodChannel\$IncomingMethodCallHandler.onMessage(MethodChannel.java:258)
213+
at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:295)
214+
at io.flutter.embedding.engine.dart.DartMessenger.lambda\$dispatchMessageToQueue\$0\$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:322)
215+
at io.flutter.embedding.engine.dart.DartMessenger\$\$ExternalSyntheticLambda0.run(Unknown Source:12)
216+
at android.os.Handler.handleCallback(Handler.java:942)
217+
at android.os.Handler.dispatchMessage(Handler.java:99)
218+
at android.os.Looper.loopOnce(Looper.java:201)
219+
at android.os.Looper.loop(Looper.java:288)
220+
at android.app.ActivityThread.main(ActivityThread.java:7872)
221+
at java.lang.reflect.Method.invoke
222+
at com.android.internal.os.RuntimeInit\$MethodAndArgsCaller.run(RuntimeInit.java:548)
223+
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
224+
at
225+
''';

0 commit comments

Comments
 (0)