From 4fde29d1aa0bd76a07b9d542e388e021b1ce2ae1 Mon Sep 17 00:00:00 2001 From: Ben Konyi Date: Fri, 12 Mar 2021 18:34:08 +0000 Subject: [PATCH] [ CLI ] Poll for VM service URI before launching DDS Service.getInfo().serverUri can be null if the VM service server hasn't finished starting up. The CLI isolate should wait for this URI to not be null before attempting to start DDS. Fixes https://github.com/dart-lang/sdk/issues/44787 Fixed: 44787 Change-Id: Iadce0901351c0bc5238a4dc805483cce818e9e15 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/190361 Commit-Queue: Ben Konyi Reviewed-by: Devon Carew --- pkg/dartdev/lib/src/commands/run.dart | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/pkg/dartdev/lib/src/commands/run.dart b/pkg/dartdev/lib/src/commands/run.dart index 45bfd1e2f9c..db32bfed057 100644 --- a/pkg/dartdev/lib/src/commands/run.dart +++ b/pkg/dartdev/lib/src/commands/run.dart @@ -243,13 +243,18 @@ String maybeUriToFilename(String maybeUri) { class _DebuggingSession { Future start( String host, String port, bool disableServiceAuthCodes) async { - final serviceInfo = await Service.getInfo(); final ddsSnapshot = (dirname(sdk.dart).endsWith('bin')) ? sdk.ddsSnapshot : absolute(dirname(sdk.dart), 'gen', 'dds.dart.snapshot'); if (!Sdk.checkArtifactExists(ddsSnapshot)) { return false; } + ServiceProtocolInfo serviceInfo = await Service.getInfo(); + // Wait for VM service to publish its connection info. + while (serviceInfo.serverUri == null) { + await Future.delayed(Duration(milliseconds: 10)); + serviceInfo = await Service.getInfo(); + } final process = await Process.start( sdk.dart, [