Skip to content

Commit

Permalink
filter out empty stack frames
Browse files Browse the repository at this point in the history
  • Loading branch information
denrase committed Sep 4, 2023
1 parent d312548 commit a863aeb
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 2 deletions.
7 changes: 5 additions & 2 deletions flutter/lib/src/jvm/jvm_exception.dart
Original file line number Diff line number Diff line change
Expand Up @@ -256,8 +256,11 @@ class JvmException {
frames.add(trimmed);
}

final thisExceptionFrames =
thisException.map((e) => JvmFrame.parse(e)).toList(growable: false);
final thisExceptionFrames = thisException
.map((e) => JvmFrame.parse(e))
.where(
(e) => e.originalFrame.trim() != 'at' && e.originalFrame.isNotEmpty)
.toList(growable: false);

final suppressedExceptions = supressed
.map((e) => JvmException.parse(e.join(_newLine)))
Expand Down
29 changes: 29 additions & 0 deletions flutter/test/jvm/jvm_exception_test.dart
Original file line number Diff line number Diff line change
Expand Up @@ -85,6 +85,17 @@ void main() {
expect(exception.stackTrace[0].fileName, 'StandardMessageCodec.java');
expect(exception.stackTrace[0].lineNumber, 292);
});

test('parse drops frames with `at ` and empty original frame', () {
final exception =
JvmException.parse(platformExceptionWithEmptyLastStackFrame);
expect(exception.stackTrace.length, 13);
expect(exception.stackTrace.last.className,
'com.android.internal.os.ZygoteInit');
expect(exception.stackTrace.last.fileName, 'ZygoteInit.java');
expect(exception.stackTrace.last.method, 'main');
expect(exception.stackTrace.last.lineNumber, 936);
});
}

const javaExceptionWithCauses = '''
Expand Down Expand Up @@ -194,3 +205,21 @@ java.lang.IllegalArgumentException: Unsupported value: '[Ljava.lang.StackTraceEl
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit\$MethodAndArgsCaller.run(RuntimeInit.java:556)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1037)''';

const platformExceptionWithEmptyLastStackFrame = '''
java.lang.RuntimeException: Catch this platform exception!
at io.sentry.samples.flutter.MainActivity\$configureFlutterEngine\$1.onMethodCall(MainActivity.kt:40)
at io.flutter.plugin.common.MethodChannel\$IncomingMethodCallHandler.onMessage(MethodChannel.java:258)
at io.flutter.embedding.engine.dart.DartMessenger.invokeHandler(DartMessenger.java:295)
at io.flutter.embedding.engine.dart.DartMessenger.lambda\$dispatchMessageToQueue\$0\$io-flutter-embedding-engine-dart-DartMessenger(DartMessenger.java:322)
at io.flutter.embedding.engine.dart.DartMessenger\$\$ExternalSyntheticLambda0.run(Unknown Source:12)
at android.os.Handler.handleCallback(Handler.java:942)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:201)
at android.os.Looper.loop(Looper.java:288)
at android.app.ActivityThread.main(ActivityThread.java:7872)
at java.lang.reflect.Method.invoke
at com.android.internal.os.RuntimeInit\$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936)
at
''';

0 comments on commit a863aeb

Please sign in to comment.