-
Notifications
You must be signed in to change notification settings - Fork 5.2k
Closed
Description
Description
Heap dump generation for the server GC apps failure on Windows.
Configuration
Windows x64, Linux and MacOS
Latest rc2 builds from main (6.0.0-rc.2.21420.29)
Regression?
Yes, caused by the GC USE_REGION support
Other information
The failure (throws an exception) is on line 260 below. It is because "heap" is a local copy of the gc_heap struct and can't be cast to a dac ptr.
request_svr.cpp line 260:
for (int i = 0; i < heaps; i++)
{
TADDR heapAddress = HeapTableIndex(g_gcDacGlobals->g_heaps, i);
dac_gc_heap heap = LoadGcHeapData(heapAddress);
dac_gc_heap* pHeap = &heap;
size_t gen_table_size = g_gcDacGlobals->generation_size * (*g_gcDacGlobals->max_gen + 2);
--> DacEnumMemoryRegion(dac_cast<TADDR>(pHeap), sizeof(dac_gc_heap));
DacEnumMemoryRegion(dac_cast<TADDR>(pHeap->finalize_queue), sizeof(dac_finalize_queue));
TADDR taddrTable = dac_cast<TADDR>(pHeap) + offsetof(dac_gc_heap, generation_table);
DacEnumMemoryRegion(taddrTable, gen_table_size);
// address. To make sure there is always a base address, start with the first NT_FILE entry
// found and then replace it with the PageOffset == 0 entry found.