stack_trace icon indicating copy to clipboard operation
stack_trace copied to clipboard

Should org-dartlang-sdk frames be stripped by `terse`?

Open patkujawa-wf opened this issue 4 years ago • 0 comments

Our code runs through Trace.terse, and we see (repeat) frames with the scheme 'org-dartlang-sdk' logged. I wasn't able to find much via google, and no issues here, but it seems like that would be a "core" frame that should be folded, doesn't it? (The current implementation is that only 'dart' scheme Uris in Frames are considered core.)

Here's an obfuscated example from our codebase:

org-dartlang-sdk:///sdk/lib/_internal/js_runtime/lib/js_helper.dart 1342:37                                                     wrapException
https://cdn.foo.com/foo/packages/foo_sdk/src/public/client.dart 50:27                                                 createAuthenticatedFContext
https://cdn.foo.com/foo/packages/foo_sdk/src/public/client.dart 122:5                                                 FooClient.createFContext
https://cdn.foo.com/foo/packages/foo_sdk/src/public/client.dart 121:12                                                FooClient.createFContext[function-entry$0]
https://cdn.foo.com/foo/packages/foo_client/src/services/foo_service.dart 57:35                                       fooService._context
https://cdn.foo.com/foo/packages/foo_client/src/services/foo_service.dart 119:66                                      fooService.loadfooForAttachment
org-dartlang-sdk:///sdk/lib/_internal/js_runtime/lib/async_patch.dart 307:19                                                    _wrapJsFunctionForAsync
org-dartlang-sdk:///sdk/lib/_internal/js_runtime/lib/async_patch.dart 332:23                                                    _wrapJsFunctionForAsync.<anonymous function>
org-dartlang-sdk:///sdk/lib/_internal/js_runtime/lib/async_patch.dart 237:3                                                     _asyncStartSync
https://cdn.foo.com/foo/packages/foo_client/src/services/foo_service.dart 111:59                                      fooService.loadfooForAttachment
https://cdn.foo.com/foo/packages/foo_client/src/services/foo_service.dart 111:59                                      fooService.loadfooForAttachment
https://cdn.foo.com/foo/packages/foo_client/src/experiences/foo/providers/foo_service_foo_provider.dart 117:40  fooServicefooProvider.fetchfoo
org-dartlang-sdk:///sdk/lib/_internal/js_runtime/lib/async_patch.dart 307:19                                                    _wrapJsFunctionForAsync
org-dartlang-sdk:///sdk/lib/_internal/js_runtime/lib/async_patch.dart 332:23                                                    _wrapJsFunctionForAsync.<anonymous function>
org-dartlang-sdk:///sdk/lib/_internal/js_runtime/lib/async_patch.dart 237:3                                                     _asyncStartSync
https://cdn.foo.com/foo/packages/foo_client/src/experiences/foo/providers/foo_service_foo_provider.dart 114:56  fooServicefooProvider.fetchfoo
https://cdn.foo.com/foo/packages/foo_client/src/experiences/foo/providers/polling_foo_provider.dart 35:82          PollingfooProvider.startPolling.<anonymous function>
org-dartlang-sdk:///sdk/lib/async/zone.dart 1134:37                                                                             _rootRunUnary
org-dartlang-sdk:///sdk/lib/async/zone.dart 1132:3                                                                              _rootRunUnary[function-entry$5]
org-dartlang-sdk:///sdk/lib/async/zone.dart 1030:46                                                                             _CustomZone.runUnary
org-dartlang-sdk:///sdk/lib/async/zone.dart 1026:5                                                                              _CustomZone.runUnary[function-entry$2]
org-dartlang-sdk:///sdk/lib/async/zone.dart 933:7                                                                               _CustomZone.runUnaryGuarded
org-dartlang-sdk:///sdk/lib/async/zone.dart 931:8                                                                               _CustomZone.runUnaryGuarded[function-entry$2]
org-dartlang-sdk:///sdk/lib/async/zone.dart 970:26                                                                              _CustomZone.bindUnaryCallbackGuarded.<anonymous function>
org-dartlang-sdk:///sdk/lib/async/zone.dart 1138:12                                                                             _rootRunUnary
org-dartlang-sdk:///sdk/lib/async/zone.dart 1132:3                                                                              _rootRunUnary[function-entry$5]
org-dartlang-sdk:///sdk/lib/async/zone.dart 1030:46                                                                             _CustomZone.runUnary
org-dartlang-sdk:///sdk/lib/async/zone.dart 1026:5                                                                              _CustomZone.runUnary[function-entry$2]
org-dartlang-sdk:///sdk/lib/async/zone.dart 954:26                                                                              _CustomZone.bindUnaryCallback.<anonymous function>
org-dartlang-sdk:///sdk/lib/_internal/js_runtime/lib/async_patch.dart 159:13                                                    _TimerImpl.periodic.<anonymous function>
org-dartlang-sdk:///sdk/lib/_internal/js_runtime/lib/js_helper.dart 2015:14                                                     invokeClosure
https://app.foo.com/home/?next_url=https%3A%2F%2Fapp.foo.com%2Fhome%2F 16:23900                                             nrWrapper

If others want to fold those runs down to single frames, this code will do so:

  static String formatStackTrace(StackTrace stackTrace) =>
      Trace.from(stackTrace)
          .foldFrames(
            (Frame frame) => frame.uri.scheme.contains('org-dartlang-sdk'),
            terse: true,
          )
          .toString();

patkujawa-wf avatar Oct 31 '20 20:10 patkujawa-wf