diff --git a/src/main/java/com/google/devtools/build/skyframe/ErrorInfo.java b/src/main/java/com/google/devtools/build/skyframe/ErrorInfo.java
index 09925a3..205afea 100644
--- a/src/main/java/com/google/devtools/build/skyframe/ErrorInfo.java
+++ b/src/main/java/com/google/devtools/build/skyframe/ErrorInfo.java
@@ -20,6 +20,7 @@
 import com.google.devtools.build.lib.collect.nestedset.Order;
 import com.google.devtools.build.skyframe.SkyFunctionException.ReifiedSkyFunctionException;
 
+import java.io.IOException;
 import java.io.Serializable;
 import java.util.Collection;
 
@@ -31,10 +32,9 @@
  * <p>This is intended only for use in alternative {@code MemoizingEvaluator} implementations.
  */
 public class ErrorInfo implements Serializable {
-  /**
-   * The set of descendants of this value that failed to build
-   */
-  private final NestedSet<SkyKey> rootCauses;
+  /** The set of descendants of this value that failed to build. */
+  // Non-final only to allow for serialization.
+  private transient NestedSet<SkyKey> rootCauses;
 
   /**
    * An exception thrown upon a value's failure to build. The exception is used for reporting, and
@@ -154,4 +154,9 @@
   public boolean isCatastrophic() {
     return isCatastrophic;
   }
+
+  private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException {
+    in.defaultReadObject();
+    rootCauses = NestedSetBuilder.emptySet(Order.STABLE_ORDER);
+  }
 }
diff --git a/src/test/java/com/google/devtools/build/skyframe/MemoizingEvaluatorTest.java b/src/test/java/com/google/devtools/build/skyframe/MemoizingEvaluatorTest.java
index 352bbb1..ffb5bf8 100644
--- a/src/test/java/com/google/devtools/build/skyframe/MemoizingEvaluatorTest.java
+++ b/src/test/java/com/google/devtools/build/skyframe/MemoizingEvaluatorTest.java
@@ -130,6 +130,10 @@
     return true;
   }
 
+  protected boolean rootCausesStored() {
+    return true;
+  }
+
   @Before
   public void initializeReporter() {
     eventCollector = new EventCollector(EventKind.ALL_EVENTS);
@@ -369,7 +373,9 @@
       initializeReporter();
       EvaluationResult<StringValue> result = tester.eval(i == 0, "top");
       assertTrue(result.hasError());
-      assertThat(result.getError(topKey).getRootCauses()).containsExactly(topKey);
+      if (i == 0 || rootCausesStored()) {
+        assertThat(result.getError(topKey).getRootCauses()).containsExactly(topKey);
+      }
       assertEquals(topKey.toString(), result.getError(topKey).getException().getMessage());
       assertTrue(result.getError(topKey).getException() instanceof SomeErrorException);
       if (i == 0 || eventsStored()) {
