program tw40077; uses Generics.Collections, Generics.Defaults; type TRec = record X: Int64; Y: Int64; end; TDict = specialize TObjectDictionary<TRec, TObject>; var Dict: TDict; R: TRec; begin Dict := TDict.Create([doOwnsValues]); R.X := 1; R.Y := 1; if not Dict.ContainsKey(R) then // <---------- SIGSEGV here Dict.Add(R, TObject.Create); Dict.Free; end.