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;