mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +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.
|
// This is an error response.
|
||||||
_logger.printTrace('<- Error response received from daemon, id = $id');
|
_logger.printTrace('<- Error response received from daemon, id = $id');
|
||||||
final Object error = data['error']!;
|
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));
|
_outgoingRequestCompleters.remove(id)?.completeError(error, StackTrace.fromString(stackTrace));
|
||||||
} else {
|
} else {
|
||||||
_logger.printTrace('<- Response received from daemon, id = $id');
|
_logger.printTrace('<- Response received from daemon, id = $id');
|
||||||
|
@ -173,7 +173,18 @@ void main() {
|
|||||||
|
|
||||||
final String id = message.data['id']! as String;
|
final String id = message.data['id']! as String;
|
||||||
daemonStreams.inputs.add(DaemonMessage(<String, dynamic>{'id': id, 'error': 'some_error', 'trace': 'stack trace'}));
|
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 New Issue
Block a user