void Verification::LogHeapCorruption(ObjPtr<mirror::Object> holder,
MemberOffset offset,
mirror::Object* ref, bool fatal) const { // Highest priority logging first. // Buffer the output in the string stream since it is more important than the stack traces // and we want it to have log priority. The stack traces are printed from Runtime::Abort // which is called from LOG(FATAL) but before the abort message.
std::ostringstream oss;
oss << "GC tried to mark invalid reference " << ref << std::endl;
oss << DumpObjectInfo(ref, "ref") << "\n";
oss << DumpObjectInfo(holder.Ptr(), "holder") << "\n"; if (holder != nullptr) {
mirror::Class* holder_klass = holder->GetClass<kVerifyNone, kWithoutReadBarrier>(); if (IsValidClass(holder_klass)) {
oss << " field_offset=" << offset.Uint32Value();
ArtField* field = holder->FindFieldByOffset(offset); if (field != nullptr) {
oss << " name=" << field->GetName();
}
}
mirror::HeapReference<mirror::Object>* addr = holder->GetFieldObjectReferenceAddr(offset);
oss << " reference addr"
<< DumpRAMAroundAddress(reinterpret_cast<uintptr_t>(addr), 4 * kObjectAlignment);
}
Runtime::Current()->GetHeap()->DumpSpaces(oss);
MemMap::DumpMaps(oss, /* terse= */ true);
using ObjectSet = std::set<mirror::Object*>; using WorkQueue = std::deque<std::pair<mirror::Object*, std::string>>;
// Use for visiting the GcRoots held live by ArtFields, ArtMethods, and ClassLoaders. class Verification::BFSFindReachable { public: explicit BFSFindReachable(ObjectSet* visited) : visited_(visited) {}
¤ Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.0.13Bemerkung:
(vorverarbeitet am 2026-09-28)
¤
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.