diff --git a/src/coreclr/gc/gc.cpp b/src/coreclr/gc/gc.cpp index d291743679238a..c5e976ed69ee9c 100644 --- a/src/coreclr/gc/gc.cpp +++ b/src/coreclr/gc/gc.cpp @@ -34648,6 +34648,11 @@ void gc_heap::revisit_written_pages (BOOL concurrent_p, BOOL reset_only_p) if (!reset_only_p) { + // refetch the high address in case it has changed while we fetched dirty pages + // this is only an issue for the page high_address is on - we may have new + // objects after high_address. + high_address = high_page (seg, concurrent_p); + for (unsigned i = 0; i < bcount; i++) { uint8_t* page = (uint8_t*)background_written_addresses[i];