From 3d9fd51e13f76861e21293143b23c6936e030dfc Mon Sep 17 00:00:00 2001
From: eapen <zhangyipeng7@huawei.com>
Date: Wed, 14 Dec 2022 16:54:06 +0800
Subject: [PATCH 16/33] I68TO2: Fix compactibleFreeListSpace::block_size_no_stall crash
 when use JMap parallel inspection of CMS GC
---
 .../concurrentMarkSweep/concurrentMarkSweepGeneration.cpp          | 7 ++++---
 1 file changed, 4 insertions(+), 3 deletions(-)

diff --git a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
index d31f9a5..c923e85 100644
--- a/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
+++ b/hotspot/src/share/vm/gc_implementation/concurrentMarkSweep/concurrentMarkSweepGeneration.cpp
@@ -2896,10 +2896,11 @@ void ConcurrentMarkSweepGeneration::object_iterate_block(ObjectClosure *cl, size
         }
       }
     }
-    if (prev_obj < span.end()) {
-      HeapWord *cur, *limit;
+    HeapWord *limit = MIN2(cmsSpace()->end(), span.end());
+    if (prev_obj < limit) {
+      HeapWord *cur;
       size_t curSize;
-      for (cur = prev_obj, limit = span.end(); cur < limit; cur += curSize) {
+      for (cur = prev_obj; cur < limit; cur += curSize) {
         curSize = cmsSpace()->block_size_no_stall(cur, _collector);
         if (curSize == 0) {
           break;
--
1.8.3.1
