From 55dd35d0450deb45e679d9cd8a1d2d6b9ce87f28 Mon Sep 17 00:00:00 2001 From: Andrew Au Date: Thu, 29 Jul 2021 00:04:47 -0700 Subject: [PATCH] We should check against alloc_allocated instead of heap_segment_allocated for ephemeral segment (#2450) --- src/SOS/Strike/eeheap.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/SOS/Strike/eeheap.cpp b/src/SOS/Strike/eeheap.cpp index 9651fe234..3fcec0382 100644 --- a/src/SOS/Strike/eeheap.cpp +++ b/src/SOS/Strike/eeheap.cpp @@ -700,7 +700,12 @@ BOOL GCObjInSegment(TADDR taddrObj, const GCHeapDetails &heap, ExtOut("Error requesting heap segment %p\n", SOS_PTR(taddrSeg)); return FALSE; } - if (taddrObj >= TO_TADDR(dacpSeg.mem) && taddrObj && taddrObj < TO_TADDR(dacpSeg.allocated)) + TADDR allocated = TO_TADDR(dacpSeg.allocated); + if (taddrSeg == TO_TADDR(heap.ephemeral_heap_segment)) + { + allocated = TO_TADDR(heap.alloc_allocated); + } + if (taddrObj >= TO_TADDR(dacpSeg.mem) && taddrObj < allocated) { rngSeg.segAddr = (TADDR)dacpSeg.segmentAddr; rngSeg.start = (TADDR)dacpSeg.mem; @@ -776,7 +781,7 @@ BOOL GCObjInLargeSegment(TADDR taddrObj, const GCHeapDetails &heap, TADDR_SEGINF ExtOut("Error requesting heap segment %p\n", SOS_PTR(taddrSeg)); return FALSE; } - if (taddrObj >= TO_TADDR(dacpSeg.mem) && taddrObj && taddrObj < TO_TADDR(dacpSeg.allocated)) + if (taddrObj >= TO_TADDR(dacpSeg.mem) && taddrObj < TO_TADDR(dacpSeg.allocated)) { rngSeg.segAddr = (TADDR)dacpSeg.segmentAddr; rngSeg.start = (TADDR)dacpSeg.mem; @@ -809,7 +814,7 @@ BOOL GCObjInPinnedObjectSegment(TADDR taddrObj, const GCHeapDetails &heap, TADDR ExtOut("Error requesting heap segment %p\n", SOS_PTR(taddrSeg)); return FALSE; } - if (taddrObj >= TO_TADDR(dacpSeg.mem) && taddrObj && taddrObj < TO_TADDR(dacpSeg.allocated)) + if (taddrObj >= TO_TADDR(dacpSeg.mem) && taddrObj < TO_TADDR(dacpSeg.allocated)) { rngSeg.segAddr = (TADDR)dacpSeg.segmentAddr; rngSeg.start = (TADDR)dacpSeg.mem; -- 2.34.1