More robust GC verification and corruption dumping
Added a test for GC heap corruption dumping, added more info to the
dump like adjacent bytes and card table.
Added heap corruption detection in
ConcurrentCopying::MarkNonMoving().
Bug: 37187694
Bug: 12687968
Test: mm test-art-host-gtest-verification_test -j20
Change-Id: I8c90e45796d0784265aa091b2f8082f0cfb62719
diff --git a/runtime/gc/heap.cc b/runtime/gc/heap.cc
index e08784d..7a0eea4 100644
--- a/runtime/gc/heap.cc
+++ b/runtime/gc/heap.cc
@@ -60,6 +60,7 @@
#include "gc/space/space-inl.h"
#include "gc/space/zygote_space.h"
#include "gc/task_processor.h"
+#include "gc/verification.h"
#include "entrypoints/quick/quick_alloc_entrypoints.h"
#include "gc_pause_listener.h"
#include "heap-inl.h"
@@ -286,6 +287,7 @@
CHECK_EQ(foreground_collector_type_, kCollectorTypeCC);
CHECK_EQ(background_collector_type_, kCollectorTypeCCBackground);
}
+ verification_.reset(new Verification(this));
CHECK_GE(large_object_threshold, kMinLargeObjectThreshold);
ScopedTrace trace(__FUNCTION__);
Runtime* const runtime = Runtime::Current();
@@ -4267,5 +4269,9 @@
return ret;
}
+const Verification* Heap::GetVerification() const {
+ return verification_.get();
+}
+
} // namespace gc
} // namespace art