flutter / flutter/devtools

Embedded Perfetto trace viewer reports "failure parsing JSON" error for large traces

Abierto
#6,674 1 comentario 1 reacción 1 asignado Reclamado por @kenzieschmoll Ver en GitHub
P1 performance > perfetto screen: performance
Lenguaje dominante
Dart
Estrellas
1.7k
Forks
404
Merge medio
6 d 17 h
PR fusionados (30 d)
18

Descripción

It looks like there's something going wrong in the communcation between DevTools and the embedded trace viewer when sending large traces. This was originally reported in the Dart SDK repo as https://github.com/dart-lang/sdk/issues/53967, but I think it belongs here instead.

Reproduction steps:

1. Add the following code after https://github.com/flutter/devtools/blob/master/packages/devtools_app/lib/src/screens/performance/panes/timeline_events/perfetto/_perfetto_web.dart#L165.

```
final blob = html.Blob([encodedJson]);
final blobURL = html.Url.createObjectUrl(blob);

final link = html.document.createElement('a') as html.AnchorElement;
link.href = blobURL;
link.download = 'dart-trace.json';
link.click();
```

2.

```
import 'dart:isolate';

main() {
for (int i = 0; i < 20; i++) {
Isolate.spawn((msg) async {
print('${Isolate.current.debugName} started $msg');
for (int i = 0; i < 1000; i++) {
for (int j = 0; j < 100000; j++) {
if (j % 100000 == 0) {
print('${Isolate.current.debugName} $i $j');
//await Future.delayed(Duration(seconds: 0));
}
}
}
print('${Isolate.current.debugName} done');
}, 'Hi', debugName: 'worker $i');
}
for (int i = 0; i < 10; i++) {
for (int j = 0; j < 100000; j++) {
if (j % 100000 == 0) {
print('main $i $j');
}
}
}
}
```

Run the above program with `dart --observe --timeline-streams=all --timeline-recorder=endless example.dart`.
3. Open the performance page in DevTools, and observe that it reports a "failure parsing JSON" error.
4. Observe that the saved `dart-trace.json` file can be succesfully loaded by ui.perfetto.dev.

Guía de contribución

Abrir la guía de contribución

Evaluación

Este issue todavía no se ha evaluado.

Recibe los nuevos issues en tu correo

Un resumen breve de issues de GitHub para principiantes.