Uh oh!
There was an error while loading. Please reload this page.
[DAC] Properly dereference internal_root_array - #119396
Conversation
There was a problem hiding this comment.
Pull Request Overview
This PR fixes a data access consistency issue in the DAC (Data Access Component) by properly dereferencing the internal_root_array pointer in GetHeapAnalyzeStaticData. The change ensures that both GetHeapAnalyzeStaticData and GetHeapAnalyzeData return the same data format (uint8_t** instead of uint8_t***), which is expected by external tools like ClrMD.
- Adds proper dereferencing of
g_gcDacGlobals->internal_root_arrayto match the expected return type - Ensures consistency between
GetHeapAnalyzeStaticDataandGetHeapAnalyzeDataAPIs - Fixes compatibility with external diagnostic tools that expect uniform data formats
Tagging subscribers to this area: @steveisok, @dotnet/dotnet-diag |
max-charlamb
commented
Sep 9, 2025
/ba-g test failures unrelated to DAC change |
Uh oh!
There was an error while loading. Please reload this page.
max-charlamb
commented
Sep 9, 2025
/backport to release/10.0 |
Started backporting to release/10.0: https://github.com/dotnet/runtime/actions/runs/17588280032 |
* Adds new DumpGCData test to verify bug fixed in dotnet/runtime#119393 * Adds new FindRootsOlderGeneration to verify bug fixed in dotnet/runtime#119396
Found while working on #119324
GetHeapAnalyzeStaticDatais inconsistent with its pairGetHeapAnalyzeData. The former returns auint8_t***whereas the latter returns auint8_t**. I checked the usage of these APIs in clrmd and it expects both to return the same format.I modified
GetHeapAnalyzeStaticDatato dereference theg_gcDacGlobals->internal_root_arraymatchingGetHeapAnalyzeData.dotnet/diagnostics#5562 adds a test
FindRootsOlderGenerationwhich verifies this behaves correctly. The test fails in the current main branch.Pipeline with fixes: https://dev.azure.com/dnceng-public/public/_build/results?buildId=1143226&view=results