* Fix issue with enregistered values
* Fix assert and enregistered ref reporting
* Fix issue from merge
---------
Co-authored-by: Lee Culver <leculver@microsoft.com>
Co-authored-by: Juan Sebastian Hoyos Ayala <juan.hoyos@microsoft.com>
Co-authored-by: Juan Hoyos <19413848+hoyosjs@users.noreply.github.com>
stackRefs[i].i64ExtraData = 0;
const SOSStackRefData &sosStackRef = mList.Get(i);
- if (sosStackRef.Flags & GC_CALL_INTERIOR)
+ if (sosStackRef.Flags & GC_CALL_INTERIOR || sosStackRef.Address == 0)
{
+ // Direct pointer case - interior pointer, Frame ref, or enregistered var.
stackRefs[i].pObject = CLRDATA_ADDRESS_TO_TADDR(sosStackRef.Object) | 1;
}
else
IMetaDataImport * pImport = NULL;
EX_TRY
{
+ RSLockHolder lockHolder(GetProcess()->GetProcessLock());
pImport = GetModule()->GetMetaDataImporter(); // throws
// Validate the token.
// Well, the field doesn't even belong to this class...
ThrowHR(E_INVALIDARG);
}
-