mirror of
https://github.com/flutter/flutter
synced 2024-08-25 02:46:31 +00:00
[flutter_tools] Fix missing stack trace from daemon (#144113)
When the daemon throws an exception, the receiving client is unable to surface stack traces from the daemon. This is because it is sent with the `trace` key here:1e8dd1e4d6/packages/flutter_tools/lib/src/daemon.dart (L308)
But the client tries to read it with the `stackTrace` key here:1e8dd1e4d6/packages/flutter_tools/lib/src/daemon.dart (L343)
Thanks to @mraleph for spotting this! *List which issues are fixed by this PR. You must list at least one issue. An issue is not required if the PR fixes something trivial like a typo.* b/326825892
This commit is contained in:
parent
331769f397
commit
c30f998eb5
|
@ -340,7 +340,7 @@ class DaemonConnection {
|
|||
// This is an error response.
|
||||
_logger.printTrace('<- Error response received from daemon, id = $id');
|
||||
final Object error = data['error']!;
|
||||
final String stackTrace = data['stackTrace'] as String? ?? '';
|
||||
final String stackTrace = data['trace'] as String? ?? '';
|
||||
_outgoingRequestCompleters.remove(id)?.completeError(error, StackTrace.fromString(stackTrace));
|
||||
} else {
|
||||
_logger.printTrace('<- Response received from daemon, id = $id');
|
||||
|
|
|
@ -173,7 +173,18 @@ void main() {
|
|||
|
||||
final String id = message.data['id']! as String;
|
||||
daemonStreams.inputs.add(DaemonMessage(<String, dynamic>{'id': id, 'error': 'some_error', 'trace': 'stack trace'}));
|
||||
expect(requestFuture, throwsA('some_error'));
|
||||
|
||||
Object? gotError;
|
||||
StackTrace? gotStackTrace;
|
||||
try {
|
||||
await requestFuture;
|
||||
} on Object catch (error, stackTrace) {
|
||||
gotError = error;
|
||||
gotStackTrace = stackTrace;
|
||||
}
|
||||
|
||||
expect(gotError, 'some_error');
|
||||
expect(gotStackTrace.toString(), 'stack trace');
|
||||
});
|
||||
});
|
||||
|
||||
|
|
Loading…
Reference in a new issue