diff --git a/pkg/observatory/bin/observatory.dart b/pkg/observatory/bin/observatory.dart index 63ca6a1e5d1..ae72ee2aab5 100644 --- a/pkg/observatory/bin/observatory.dart +++ b/pkg/observatory/bin/observatory.dart @@ -90,11 +90,9 @@ ${result.stderr} ]); final uriCompleter = Completer(); final uriRegExp = RegExp('Serving `web` on (http://.*)'); - late StreamSubscription sub; - sub = process.stdout.transform(utf8.decoder).listen((e) { + final sub = process.stdout.transform(utf8.decoder).listen((e) { if (uriRegExp.hasMatch(e)) { uriCompleter.complete(uriRegExp.firstMatch(e)!.group(1)); - sub.cancel(); } }); @@ -105,6 +103,11 @@ ${result.stderr} Chrome.start([observatoryUri]); } await process.exitCode; + + // Don't cancel this stream until the process has exited as it will close + // the file descriptor for stdout and cause a crash when webdev tries to + // write logs. + await sub.cancel(); } String _findObservatoryProjectRoot() { diff --git a/pkg/observatory/web/main.dart b/pkg/observatory/web/main.dart index f719b0714fd..4c6402c6c46 100644 --- a/pkg/observatory/web/main.dart +++ b/pkg/observatory/web/main.dart @@ -4,7 +4,7 @@ import 'package:web/web.dart'; import 'package:logging/logging.dart'; -import '../lib/elements.dart'; +import 'package:observatory/elements.dart'; import 'package:stack_trace/stack_trace.dart'; main() async {