diff --git a/src/native/managed/cdac/mscordaccore_universal/Legacy/SOSDacImpl.cs b/src/native/managed/cdac/mscordaccore_universal/Legacy/SOSDacImpl.cs index b166959f107728..4a07701f68daa1 100644 --- a/src/native/managed/cdac/mscordaccore_universal/Legacy/SOSDacImpl.cs +++ b/src/native/managed/cdac/mscordaccore_universal/Legacy/SOSDacImpl.cs @@ -242,7 +242,31 @@ int ISOSDacInterface.GetCodeHeapList(ClrDataAddress jitManager, uint count, void int ISOSDacInterface.GetDacModuleHandle(void* phModule) => _legacyImpl is not null ? _legacyImpl.GetDacModuleHandle(phModule) : HResults.E_NOTIMPL; int ISOSDacInterface.GetDomainFromContext(ClrDataAddress context, ClrDataAddress* domain) - => _legacyImpl is not null ? _legacyImpl.GetDomainFromContext(context, domain) : HResults.E_NOTIMPL; + { + int hr = HResults.S_OK; + if (context == 0 || domain == null) + { + return HResults.E_INVALIDARG; + } + try + { + *domain = context; + } + catch (System.Exception ex) + { + hr = ex.HResult; + } +#if DEBUG + if (_legacyImpl is not null) + { + ClrDataAddress domainLocal; + int hrLocal = _legacyImpl.GetDomainFromContext(context, &domainLocal); + Debug.Assert(hrLocal == hr, $"cDAC: {hr:x}, DAC: {hrLocal:x}"); + Debug.Assert(domainLocal == context, $"cDAC: {context:x}, DAC: {domainLocal:x}"); + } +#endif + return hr; + } int ISOSDacInterface.GetDomainLocalModuleData(ClrDataAddress addr, void* data) { // CoreCLR does not use domain local modules anymore