From 0fc16a09b4d2323f9c2b6aabc81ce120b278329b Mon Sep 17 00:00:00 2001 From: Andreas Gampe Date: Wed, 3 Jun 2015 15:43:16 -0700 Subject: [PATCH] Revert "Revert "Turn off duplicate-classes checking"" This reverts commit 18a1827a159f1b235f3fcc934f428059185f550e. Bug: 21333911 Change-Id: I8cb96efbf7151b238f3ee137a938b20ddfaf0ebc --- runtime/class_linker.cc | 7 +++++++ test/Android.run-test.mk | 5 +++++ 2 files changed, 12 insertions(+) diff --git a/runtime/class_linker.cc b/runtime/class_linker.cc index 79c5a0803..2a0e4e8f6 100644 --- a/runtime/class_linker.cc +++ b/runtime/class_linker.cc @@ -85,6 +85,9 @@ namespace art { static constexpr bool kSanityCheckObjects = kIsDebugBuild; +// For b/21333911. +static constexpr bool kDuplicateClassesCheck = false; + static void ThrowNoClassDefFoundError(const char* fmt, ...) __attribute__((__format__(__printf__, 1, 2))) SHARED_LOCKS_REQUIRED(Locks::mutator_lock_); @@ -840,6 +843,10 @@ const OatFile* ClassLinker::GetPrimaryOatFile() { // the two elements agree on whether their dex file was from an already-loaded oat-file or the // new oat file. Any disagreement indicates a collision. bool ClassLinker::HasCollisions(const OatFile* oat_file, std::string* error_msg) { + if (!kDuplicateClassesCheck) { + return false; + } + // Dex files are registered late - once a class is actually being loaded. We have to compare // against the open oat files. Take the dex_lock_ that protects oat_files_ accesses. ReaderMutexLock mu(Thread::Current(), dex_lock_); diff --git a/test/Android.run-test.mk b/test/Android.run-test.mk index f6c92318b..c9e512ed5 100644 --- a/test/Android.run-test.mk +++ b/test/Android.run-test.mk @@ -256,6 +256,11 @@ ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,$(TARGET_TYPES),$(RUN_TYPES), $(COMPILER_TYPES),$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES),$(IMAGE_TYPES), \ $(PICTEST_TYPES),$(DEBUGGABLE_TYPES),131-structural-change,$(ALL_ADDRESS_SIZES)) +# 138-duplicate-classes-check. Turned off temporarily, b/21333911. +ART_TEST_KNOWN_BROKEN += $(call all-run-test-names,$(TARGET_TYPES),$(RUN_TYPES),$(PREBUILD_TYPES), \ + $(COMPILER_TYPES),$(RELOCATE_TYPES),$(TRACE_TYPES),$(GC_TYPES),$(JNI_TYPES),$(IMAGE_TYPES), \ + $(PICTEST_TYPES),$(DEBUGGABLE_TYPES),138-duplicate-classes-check,$(ALL_ADDRESS_SIZES)) + # All these tests check that we have sane behavior if we don't have a patchoat or dex2oat. # Therefore we shouldn't run them in situations where we actually don't have these since they # explicitly test for them. These all also assume we have an image. -- 2.11.0