private void OnSetGCHandle(SetGCHandleTraceData data) { if (ProcessId != data.ProcessID) { return; } // This is not a pinned handle. if ((GCHandleKind.AsyncPinned != data.Kind) && (GCHandleKind.Pinned != data.Kind)) { return; } PinningStackAnalysisObject objectInfo = GetPinningInfo(data.ObjectID); Debug.Assert(objectInfo != null); if (objectInfo == null) { return; } // TODO FIX NOW worry about duplicates between the public and private CLR providers. if (objectInfo.PinInfo == null) { objectInfo.PinInfo = new List <PinningStackAnalysisPinInfo>(); } var stackIndex = StackSource.GetCallStack(data.CallStackIndex(), data); objectInfo.PinInfo.Add(new PinningStackAnalysisPinInfo(data.TimeStampRelativeMSec, stackIndex, data.Kind)); }