ART: Workaround for b/20019689
Don't throw InternalError as wrapped for now, swallowing the
original exception.
Bug: 20019689
Change-Id: I77a56262304b09b326232bee0c7916bb73401d74
diff --git a/runtime/transaction.cc b/runtime/transaction.cc
index 3b708f6..186cfea 100644
--- a/runtime/transaction.cc
+++ b/runtime/transaction.cc
@@ -75,7 +75,11 @@
CHECK(IsAborted()) << "Rethrow InternalError while transaction is not aborted";
}
std::string abort_msg(GetAbortMessage());
- self->ThrowNewWrappedException("Ljava/lang/InternalError;", abort_msg.c_str());
+ // Temporary workaround for b/20019689.
+ if (self->IsExceptionPending()) {
+ self->ClearException();
+ }
+ self->ThrowNewException("Ljava/lang/InternalError;", abort_msg.c_str());
}
bool Transaction::IsAborted() {