Uh oh!
There was an error while loading. Please reload this page.
Use module as ID for debugger module cache instead of domain assembly - #118414
Conversation
There was a problem hiding this comment.
Pull Request Overview
This pull request fixes a debugger module cache inconsistency where ICorDebugClass.GetModule returned a different ICorDebugModule instance compared to the one received via ICorDebugManagedCallback::LoadModule. The fix changes the debugger's module caching strategy to consistently use the module pointer as the cache key instead of sometimes using the domain assembly pointer.
Key changes:
- Standardizes module cache lookups to always use the module pointer as the key
- Ensures module pointer is resolved early when only domain assembly is available
- Updates the CordbModule constructor to use module pointer for its base identifier
Reviewed Changes
Copilot reviewed 3 out of 3 changed files in this pull request and generated 1 comment.
| File | Description |
|---|---|
| src/coreclr/debug/di/rsappdomain.cpp | Updates module cache lookup to use module pointer consistently and resolves module pointer early |
| src/coreclr/debug/di/process.cpp | Changes class lookup to resolve and use module pointer instead of domain assembly for cache access |
| src/coreclr/debug/di/module.cpp | Updates CordbModule constructor to use module pointer for base class identifier |
Comments suppressed due to low confidence (1)
Uh oh!
There was an error while loading. Please reload this page.
Tagging subscribers to this area: @steveisok, @dotnet/dotnet-diag |
Uh oh!
There was an error while loading. Please reload this page.
/ba-g Failures are unrelated |
tommcdon
commented
Aug 6, 2025
/ba-g Failures are unrelated |
This pull request addresses an issue caused by #117224 found during Visual Studio debugger testing, where ICorDebugClass.GetModule returns a different instance of ICorDebugModule compared to the instance received via ICorDebugManagedCallback::LoadModule.