diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/BuildResult.java b/src/main/java/com/google/devtools/build/lib/buildtool/BuildResult.java
index 22f4672..8139136 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/BuildResult.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/BuildResult.java
@@ -27,6 +27,7 @@
 import com.google.devtools.build.lib.buildeventstream.BuildToolLogs;
 import com.google.devtools.build.lib.buildeventstream.BuildToolLogs.LogFileEntry;
 import com.google.devtools.build.lib.skyframe.AspectValueKey.AspectKey;
+import com.google.devtools.build.lib.util.CrashFailureDetails;
 import com.google.devtools.build.lib.util.DetailedExitCode;
 import com.google.devtools.build.lib.util.ExitCode;
 import com.google.devtools.build.lib.util.Pair;
@@ -51,8 +52,7 @@
   private Throwable crash = null;
   private boolean catastrophe = false;
   private boolean stopOnFirstFailure;
-  private DetailedExitCode detailedExitCode =
-      DetailedExitCode.justExitCode(ExitCode.BLAZE_INTERNAL_ERROR);
+  @Nullable private DetailedExitCode detailedExitCode;
 
   private BuildConfigurationCollection configurations;
   private Collection<ConfiguredTarget> actualTargets;
@@ -110,7 +110,7 @@
 
   /** True iff the build request has been successfully completed. */
   public boolean getSuccess() {
-    return detailedExitCode.isSuccess();
+    return detailedExitCode != null && detailedExitCode.isSuccess();
   }
 
   /**
@@ -118,15 +118,17 @@
    * to complete the command with.
    */
   public DetailedExitCode getDetailedExitCode() {
-    return detailedExitCode;
+    if (detailedExitCode != null) {
+      return detailedExitCode;
+    }
+    return CrashFailureDetails.detailedExitCodeForThrowable(
+        new IllegalStateException("Unspecified DetailedExitCode"));
   }
 
-  /**
-   * Sets the RuntimeException / Error that induced a Blaze crash.
-   */
+  /** Sets the RuntimeException / Error that induced a Blaze crash. */
   public void setUnhandledThrowable(Throwable crash) {
-    Preconditions.checkState(crash == null ||
-        ((crash instanceof RuntimeException) || (crash instanceof Error)));
+    Preconditions.checkState(
+        crash == null || ((crash instanceof RuntimeException) || (crash instanceof Error)));
     this.crash = crash;
   }
 
diff --git a/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java b/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java
index ff60b5d..5eaa996 100644
--- a/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java
+++ b/src/main/java/com/google/devtools/build/lib/buildtool/BuildTool.java
@@ -47,6 +47,7 @@
 import com.google.devtools.build.lib.runtime.CommandEnvironment;
 import com.google.devtools.build.lib.server.FailureDetails.Interrupted.Code;
 import com.google.devtools.build.lib.util.AbruptExitException;
+import com.google.devtools.build.lib.util.CrashFailureDetails;
 import com.google.devtools.build.lib.util.DetailedExitCode;
 import com.google.devtools.build.lib.util.ExitCode;
 import com.google.devtools.build.lib.util.InterruptedFailureDetails;
@@ -280,8 +281,7 @@
     maybeSetStopOnFirstFailure(request, result);
     int startSuspendCount = suspendCount();
     Throwable catastrophe = null;
-    DetailedExitCode detailedExitCode =
-        DetailedExitCode.justExitCode(ExitCode.BLAZE_INTERNAL_ERROR);
+    DetailedExitCode detailedExitCode = null;
     try {
       buildTargets(request, result, validator);
       detailedExitCode = DetailedExitCode.success();
@@ -335,9 +335,15 @@
       reportExceptionError(e);
       result.setCatastrophe();
     } catch (Throwable throwable) {
+      detailedExitCode = CrashFailureDetails.detailedExitCodeForThrowable(throwable);
       catastrophe = throwable;
       Throwables.propagate(throwable);
     } finally {
+      if (detailedExitCode == null) {
+        detailedExitCode =
+            CrashFailureDetails.detailedExitCodeForThrowable(
+                new IllegalStateException("Unspecified DetailedExitCode"));
+      }
       stopRequest(result, catastrophe, detailedExitCode, startSuspendCount);
     }
 
