Version 2.3.0-dev.0.1

* Cherry-pick 43eebea5a3715d7c3904cd85a35db5cffaae687e to dev
diff --git a/CHANGELOG.md b/CHANGELOG.md
index 124f50a..4e6ff08 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -1,3 +1,7 @@
+## 2.3.0-dev.0.1
+
+* Cherry-pick 43eebea5a3715d7c3904cd85a35db5cffaae687e to dev
+
 ## 2.3.0-dev.0.0
 
 ### Tool Changes
diff --git a/tools/VERSION b/tools/VERSION
index cf8239f..a90ee68 100644
--- a/tools/VERSION
+++ b/tools/VERSION
@@ -34,6 +34,6 @@
 MINOR 3
 PATCH 0
 PRERELEASE 0
-PRERELEASE_PATCH 0
+PRERELEASE_PATCH 1
 ABI_VERSION 4
 OLDEST_SUPPORTED_ABI_VERSION 1
diff --git a/utils/bazel/kernel_worker.dart b/utils/bazel/kernel_worker.dart
index 3723077..c866ed2 100644
--- a/utils/bazel/kernel_worker.dart
+++ b/utils/bazel/kernel_worker.dart
@@ -53,11 +53,24 @@
       } 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;