Skip to content

Commit 39191dc

Browse files
authored
Backport fix for issue #41311 to release/5.0 branch. (#41669)
1 parent cc705af commit 39191dc

File tree

1 file changed

+12
-2
lines changed

1 file changed

+12
-2
lines changed

src/coreclr/src/gc/gc.cpp

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -5703,6 +5703,7 @@ void gc_heap::gc_thread_function ()
57035703
END_TIMING(suspend_ee_during_log);
57045704

57055705
proceed_with_gc_p = TRUE;
5706+
gradual_decommit_in_progress_p = FALSE;
57065707

57075708
if (!should_proceed_with_gc())
57085709
{
@@ -11504,6 +11505,15 @@ BOOL gc_heap::grow_heap_segment (heap_segment* seg, uint8_t* high_address, bool*
1150411505

1150511506
assert (heap_segment_committed (seg) <= heap_segment_reserved (seg));
1150611507
assert (high_address <= heap_segment_committed (seg));
11508+
11509+
#ifdef MULTIPLE_HEAPS
11510+
// we should never increase committed beyond decommit target when gradual
11511+
// decommit is in progress - if we do, this means commit and decommit are
11512+
// going on at the same time.
11513+
assert (!gradual_decommit_in_progress_p ||
11514+
(seg != ephemeral_heap_segment) ||
11515+
(heap_segment_committed (seg) <= heap_segment_decommit_target (seg)));
11516+
#endif // MULTIPLE_HEAPS
1150711517
}
1150811518

1150911519
return !!ret;
@@ -32456,7 +32466,7 @@ void gc_heap::trim_youngest_desired_low_memory()
3245632466

3245732467
void gc_heap::decommit_ephemeral_segment_pages()
3245832468
{
32459-
if (settings.concurrent || use_large_pages_p)
32469+
if (settings.concurrent || use_large_pages_p || (settings.pause_mode == pause_no_gc))
3246032470
{
3246132471
return;
3246232472
}
@@ -32495,7 +32505,7 @@ void gc_heap::decommit_ephemeral_segment_pages()
3249532505
decommit_target += target_decrease * 2 / 3;
3249632506
}
3249732507

32498-
heap_segment_decommit_target(ephemeral_heap_segment) = decommit_target;
32508+
heap_segment_decommit_target (ephemeral_heap_segment) = decommit_target;
3249932509

3250032510
#ifdef MULTIPLE_HEAPS
3250132511
if (decommit_target < heap_segment_committed (ephemeral_heap_segment))

0 commit comments

Comments
 (0)