From 43eebea5a3715d7c3904cd85a35db5cffaae687e Mon Sep 17 00:00:00 2001 From: Vijay Menon Date: Wed, 17 Apr 2019 23:36:01 +0000 Subject: [PATCH] [kernel_worker] retry on failure Workaround for https://github.com/dart-lang/sdk/issues/36644 See similar for dartdevc: https://dart-review.googlesource.com/c/sdk/+/99442 Change-Id: Id02549a7bd8110b4691a724fa8930ede477464f8 Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/99735 Commit-Queue: Vijay Menon Reviewed-by: Jake Macdonald --- utils/bazel/kernel_worker.dart | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/utils/bazel/kernel_worker.dart b/utils/bazel/kernel_worker.dart index f28820883b0..53cf81874ad 100644 --- a/utils/bazel/kernel_worker.dart +++ b/utils/bazel/kernel_worker.dart @@ -53,11 +53,24 @@ class KernelWorker extends AsyncWorkerLoop { } else { previousState = null; } - var result = await computeKernel(request.arguments, - isWorker: true, - outputBuffer: outputBuffer, - inputs: request.inputs, - previousState: previousStateToPass); + ComputeKernelResult result; + // TODO(vsm): See https://github.com/dart-lang/sdk/issues/36644. + // If the CFE is crashing with previous state, then clear compilation + // state and try again. + try { + result = await computeKernel(request.arguments, + isWorker: true, + outputBuffer: outputBuffer, + inputs: request.inputs, + previousState: previousStateToPass); + } catch (_) { + outputBuffer.clear(); + result = await computeKernel(request.arguments, + isWorker: true, + outputBuffer: outputBuffer, + inputs: request.inputs, + previousState: null); + } previousState = result.previousState; if (!result.succeeded) { response.exitCode = 15;