diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/StarlarkAttributeTransitionProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/StarlarkAttributeTransitionProvider.java
index 2767b44..64abac5 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/StarlarkAttributeTransitionProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/StarlarkAttributeTransitionProvider.java
@@ -105,7 +105,16 @@
     public final Map<String, BuildOptions> split(BuildOptions buildOptions) {
       try {
         return applyAndValidate(buildOptions, starlarkDefinedConfigTransition, attrObject);
-      } catch (InterruptedException | EvalException e) {
+      } catch (InterruptedException e) {
+        Thread.currentThread().interrupt();
+        starlarkDefinedConfigTransition
+            .getEventHandler()
+            .handle(
+                Event.error(
+                    starlarkDefinedConfigTransition.getLocationForErrorReporting(),
+                    "Starlark transition interrupted during attribute transition implementation"));
+        return ImmutableMap.of("error", buildOptions.clone());
+      } catch (EvalException e) {
         starlarkDefinedConfigTransition
             .getEventHandler()
             .handle(
diff --git a/src/main/java/com/google/devtools/build/lib/analysis/skylark/StarlarkRuleTransitionProvider.java b/src/main/java/com/google/devtools/build/lib/analysis/skylark/StarlarkRuleTransitionProvider.java
index 9024366..123f3ec 100644
--- a/src/main/java/com/google/devtools/build/lib/analysis/skylark/StarlarkRuleTransitionProvider.java
+++ b/src/main/java/com/google/devtools/build/lib/analysis/skylark/StarlarkRuleTransitionProvider.java
@@ -109,7 +109,16 @@
       Map<String, BuildOptions> result;
       try {
         result = applyAndValidate(buildOptions, starlarkDefinedConfigTransition, attrObject);
-      } catch (EvalException | InterruptedException e) {
+      } catch (InterruptedException e) {
+        Thread.currentThread().interrupt();
+        starlarkDefinedConfigTransition
+            .getEventHandler()
+            .handle(
+                Event.error(
+                    starlarkDefinedConfigTransition.getLocationForErrorReporting(),
+                    "Starlark transition interrupted during rule transition implementation"));
+        return buildOptions.clone();
+      } catch (EvalException e) {
         starlarkDefinedConfigTransition
             .getEventHandler()
             .handle(
