From 7913b792f3b86798d8952debb1437f8794580f68 Mon Sep 17 00:00:00 2001 From: Dmitri Pivkine Date: Tue, 17 Dec 2024 15:13:38 -0500 Subject: [PATCH] Do not interrupt heap iteration if dataAddr is bad in DDR GC Check If dataAddr field is discovered bad and error code is returned this fact should not prevent continue to iterate through the region. Signed-off-by: Dmitri Pivkine --- .../vm29/tools/ddrinteractive/gccheck/CheckEngine.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/debugtools/DDR_VM/src/com/ibm/j9ddr/vm29/tools/ddrinteractive/gccheck/CheckEngine.java b/debugtools/DDR_VM/src/com/ibm/j9ddr/vm29/tools/ddrinteractive/gccheck/CheckEngine.java index 307452078c0..594c9d4f857 100644 --- a/debugtools/DDR_VM/src/com/ibm/j9ddr/vm29/tools/ddrinteractive/gccheck/CheckEngine.java +++ b/debugtools/DDR_VM/src/com/ibm/j9ddr/vm29/tools/ddrinteractive/gccheck/CheckEngine.java @@ -228,11 +228,11 @@ public int checkObjectHeap(J9ObjectPointer object, GCHeapRegionDescriptor region CheckError error = new CheckError(object, _cycle, _currentCheck, elementName, result, _cycle.nextErrorCount()); _reporter.report(error); /* There are some error cases would not prevent further iteration */ - if (!(J9MODRON_GCCHK_RC_CLASS_IS_UNLOADED == result)) { + if ((J9MODRON_GCCHK_RC_CLASS_IS_UNLOADED == result) || (J9MODRON_GCCHK_RC_INVALID_INDEXABLE_DATA_ADDRESS == result)) { + return J9MODRON_SLOT_ITERATOR_OK; + } else { _reporter.reportHeapWalkError(error, _lastHeapObject1, _lastHeapObject2, _lastHeapObject3); return J9MODRON_SLOT_ITERATOR_UNRECOVERABLE_ERROR; - } else { - return J9MODRON_SLOT_ITERATOR_OK; } }