anchor.diff:        " ${logsJsonUri.toFilePath()}");
     print("Entire run took ${totalRuntime.elapsed}.");
     // Return with exit code 1 if at least one suite timed out.
  -  bool timeout = timeouts.any((timeout) => timeout);
  -  if (timeout) {
  -    exitCode = 1;
  +  bool timedOutOrCrashed = timeoutsOrCrashes.any((timeout) => timeout);
  +  if (timedOutOrCrashed) {
  +    throw "Crashed or timed out. Check stdout for more details.";
     } else {
       // The testing framework (package:testing) sets the exitCode to `1` if any
       // test failed, so we reset it here to indicate that the test runner was
  
positive.code:           });
            await exitPort.first;
            errorPort.close();
            bool gotError = !await errorPort.isEmpty;
            if (gotError) {
              timedOutOrCrash = true;
            }
            timer.cancel();
            if (!timedOutOrCrash) {
              int seconds = stopwatch.elapsedMilliseconds ~/ 1000;
              print("Suite $naming finished (took ${seconds} seconds)");
            }
            return timedOutOrCrash;
          } finally {
  
negative.code:     }
    }
    // Wait for isolates to terminate and clean up.
    Iterable<bool> timeoutsOrCrashes = await Future.wait(futures);
    resultsPort.close();
    logsPort.close();
    // Write results.json and logs.json.
  