diff --git a/pkg/vm_service/test/resume_shutdown_race_test.dart b/pkg/vm_service/test/resume_shutdown_race_test.dart index 1f6addf720e..c5d057ea499 100644 --- a/pkg/vm_service/test/resume_shutdown_race_test.dart +++ b/pkg/vm_service/test/resume_shutdown_race_test.dart @@ -50,16 +50,25 @@ Future resumer(_) async { // Wait for the main isolate and children to all be paused at exit. final paused = []; do { - paused.clear(); - final vm = (await get('getVM', {}))['result']; - for (Map isolate in vm['isolates']) { - final id = isolate['id']; - isolate = (await get('getIsolate', {'isolateId': id}))['result']; - if ((isolate['pauseEvent'] != null) && - (isolate['pauseEvent']['kind'] == 'PauseExit')) { - paused.add(id); + try { + paused.clear(); + final vmResult = await get('getVM', {}); + final vm = vmResult['result']; + if (vm != null) { + for (Map isolate in vm['isolates']) { + final id = isolate['id']; + final isolateResult = await get('getIsolate', {'isolateId': id}); + isolate = isolateResult['result'] ?? {}; + if ((isolate['pauseEvent'] != null) && + (isolate['pauseEvent']['kind'] == 'PauseExit')) { + paused.add(id); + } + } } + } catch (e) { + print('Transient error in resumer: $e'); } + await Future.delayed(const Duration(milliseconds: 10)); } while (paused.length != childCount + 1); // Resume the main isolate and children. When the main isolate resumes, it