ART: Modify --abort-on-hard-verifier-error
Add --no-abort-on-hard-verifier-error to turn off the behavior.
Use FATAL_WITHOUT_ABORT and abort() instead of LOG(FATAL) to avoid
multiple printouts of stacks. Just shutting down thread pools still
leads to three redundant stack dumps.
Bug: 36902714
Test: m
Change-Id: I35fef23fb36567b0d1deb7f16c2a2b43c3af47e8
diff --git a/compiler/driver/compiler_driver.cc b/compiler/driver/compiler_driver.cc
index 341ca59..756481d 100644
--- a/compiler/driver/compiler_driver.cc
+++ b/compiler/driver/compiler_driver.cc
@@ -924,8 +924,11 @@
VLOG(compiler) << "Verify: " << GetMemoryUsageString(false);
if (had_hard_verifier_failure_ && GetCompilerOptions().AbortOnHardVerifierFailure()) {
- LOG(FATAL) << "Had a hard failure verifying all classes, and was asked to abort in such "
- << "situations. Please check the log.";
+ // Avoid dumping threads. Even if we shut down the thread pools, there will still be three
+ // instances of this thread's stack.
+ LOG(FATAL_WITHOUT_ABORT) << "Had a hard failure verifying all classes, and was asked to abort "
+ << "in such situations. Please check the log.";
+ abort();
}
if (compiler_options_->IsAnyCompilationEnabled()) {