diff options
author | Alex Light <allight@google.com> | 2016-04-04 13:23:14 -0700 |
---|---|---|
committer | Alex Light <allight@google.com> | 2016-04-04 21:06:52 +0000 |
commit | 06039ba7c5d1251be7bc041cf64069827364d4ce (patch) | |
tree | f4ca699dd52f9095d0da5dc661751ae536509479 /runtime/class_linker.cc | |
parent | 1669fe3219f295d14c43d5bd3b4e8d255e52be3f (diff) | |
download | android_art-06039ba7c5d1251be7bc041cf64069827364d4ce.tar.gz android_art-06039ba7c5d1251be7bc041cf64069827364d4ce.tar.bz2 android_art-06039ba7c5d1251be7bc041cf64069827364d4ce.zip |
Fix issue with verification check failure on erroneous classes.
Bug: 27924355
Change-Id: I7d680e7196aeb9e2e6ef54139634564e058174d7
Diffstat (limited to 'runtime/class_linker.cc')
-rw-r--r-- | runtime/class_linker.cc | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/runtime/class_linker.cc b/runtime/class_linker.cc index 706059369c..d73f205b80 100644 --- a/runtime/class_linker.cc +++ b/runtime/class_linker.cc @@ -3786,7 +3786,9 @@ void ClassLinker::VerifyClass(Thread* self, Handle<mirror::Class> klass, LogSeve while (old_status == mirror::Class::kStatusVerifying || old_status == mirror::Class::kStatusVerifyingAtRuntime) { lock.WaitIgnoringInterrupts(); - CHECK_GT(klass->GetStatus(), old_status); + CHECK(klass->IsErroneous() || (klass->GetStatus() > old_status)) + << "Class '" << PrettyClass(klass.Get()) << "' performed an illegal verification state " + << "transition from " << old_status << " to " << klass->GetStatus(); old_status = klass->GetStatus(); } |