Alright, so I made a barebones example of using the save system as we use it, and it already crashes on just using a couple of nodes:
<unknown> 0x00007ff73f367f14
<unknown> 0x00007ff73f36e38c
<unknown> 0x00007ff73f36d1d5
<unknown> 0x00007ff73f3b0240
<unknown> 0x00007ff73f3b0532
<unknown> 0x00007ff73db581e7
TSet<TTuple<FGuid,FMatScalarRecord>,TDefaultMapHashableKeyFuncs<FGuid,FMatScalarRecord,0>,FDefaultSetAllocator>::operator=(const TSet<TTuple<FGuid,FMatScalarRecord>,TDefaultMapHashableKeyFuncs<FGuid,FMatScalarRecord,0>,FDefaultSetAllocator> &) Set.h:341
[Inlined] TSet<TTuple<FGuid,FMatScalarRecord>,TDefaultMapHashableKeyFuncs<FGuid,FMatScalarRecord,0>,FDefaultSetAllocator>::{ctor}(const TSet<TTuple<FGuid,FMatScalarRecord>,TDefaultMapHashableKeyFuncs<FGuid,FMatScalarRecord,0>,FDefaultSetAllocator> &) Set.h:312
[Inlined] TMapBase<FGuid,FMatScalarRecord,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<FGuid,FMatScalarRecord,0> >::{ctor}(const TMapBase<FGuid,FMatScalarRecord,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<FGuid,FMatScalarRecord,0> > &) 0x00007ff73ec5cbaa
[Inlined] TSortableMapBase<FGuid,FMatScalarRecord,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<FGuid,FMatScalarRecord,0> >::{ctor}(const TSortableMapBase<FGuid,FMatScalarRecord,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<FGuid,FMatScalarRecord,0> > &) 0x00007ff73ec5cbaa
[Inlined] TMap<FGuid,FMatScalarRecord,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<FGuid,FMatScalarRecord,0> >::{ctor}(const TMap<FGuid,FMatScalarRecord,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<FGuid,FMatScalarRecord,0> > &) 0x00007ff73ec5cbaa
FMaterialRecord::FMaterialRecord(const FMaterialRecord &) 0x00007ff73ec5cbaa
[Inlined] UE4Tuple_Private::TTupleBaseElement<FMaterialRecord,1,2>::{ctor}(const UE4Tuple_Private::TTupleBaseElement<FMaterialRecord,1,2> &) 0x00007ff73ec618d6
[Inlined] UE4Tuple_Private::TTupleBase<TIntegerSequence<unsigned int,0,1>,FName,FMaterialRecord>::{ctor}(const UE4Tuple_Private::TTupleBase<TIntegerSequence<unsigned int,0,1>,FName,FMaterialRecord> &) 0x00007ff73ec618d1
[Inlined] TTuple<FName,FMaterialRecord>::{ctor}(const TTuple<FName,FMaterialRecord> &) 0x00007ff73ec618c1
[Inlined] TSetElementBase<TTuple<FName,FMaterialRecord>,1>::{ctor}(const TSetElementBase<TTuple<FName,FMaterialRecord>,1> &) 0x00007ff73ec618c1
[Inlined] TSetElement<TTuple<FName,FMaterialRecord> >::{ctor}(const TSetElement<TTuple<FName,FMaterialRecord> > &) 0x00007ff73ec618c1
[Inlined] TSparseArray<TSetElement<TTuple<FName,FMaterialRecord> >,TSparseArrayAllocator<TSizedDefaultAllocator<32>,FDefaultBitArrayAllocator> >::operator=(const TSparseArray<TSetElement<TTuple<FName,FMaterialRecord> >,TSparseArrayAllocator<TSizedDefaultAllocator<32>,FDefaultBitArrayAllocator> > &) SparseArray.h:746
TSet<TTuple<FName,FMaterialRecord>,TDefaultMapHashableKeyFuncs<FName,FMaterialRecord,0>,FDefaultSetAllocator>::operator=(const TSet<TTuple<FName,FMaterialRecord>,TDefaultMapHashableKeyFuncs<FName,FMaterialRecord,0>,FDefaultSetAllocator> &) Set.h:345
[Inlined] TSet<TTuple<FName,FMaterialRecord>,TDefaultMapHashableKeyFuncs<FName,FMaterialRecord,0>,FDefaultSetAllocator>::{ctor}(const TSet<TTuple<FName,FMaterialRecord>,TDefaultMapHashableKeyFuncs<FName,FMaterialRecord,0>,FDefaultSetAllocator> &) Set.h:312
[Inlined] TMapBase<FName,FMaterialRecord,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<FName,FMaterialRecord,0> >::{ctor}(const TMapBase<FName,FMaterialRecord,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<FName,FMaterialRecord,0> > &) 0x00007ff73ec5ce14
[Inlined] TSortableMapBase<FName,FMaterialRecord,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<FName,FMaterialRecord,0> >::{ctor}(const TSortableMapBase<FName,FMaterialRecord,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<FName,FMaterialRecord,0> > &) 0x00007ff73ec5ce0b
[Inlined] TMap<FName,FMaterialRecord,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<FName,FMaterialRecord,0> >::{ctor}(const TMap<FName,FMaterialRecord,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<FName,FMaterialRecord,0> > &) 0x00007ff73ec5ce0b
FSaviorRecord::FSaviorRecord(const FSaviorRecord &) 0x00007ff73ec5ce0b
[Inlined] UE4Tuple_Private::TTupleBaseElement<FSaviorRecord,1,2>::{ctor}(const UE4Tuple_Private::TTupleBaseElement<FSaviorRecord,1,2> &) 0x00007ff73ec61c46
[Inlined] UE4Tuple_Private::TTupleBase<TIntegerSequence<unsigned int,0,1>,FName,FSaviorRecord>::{ctor}(const UE4Tuple_Private::TTupleBase<TIntegerSequence<unsigned int,0,1>,FName,FSaviorRecord> &) 0x00007ff73ec61c41
[Inlined] TTuple<FName,FSaviorRecord>::{ctor}(const TTuple<FName,FSaviorRecord> &) 0x00007ff73ec61c31
[Inlined] TSetElementBase<TTuple<FName,FSaviorRecord>,1>::{ctor}(const TSetElementBase<TTuple<FName,FSaviorRecord>,1> &) 0x00007ff73ec61c31
[Inlined] TSetElement<TTuple<FName,FSaviorRecord> >::{ctor}(const TSetElement<TTuple<FName,FSaviorRecord> > &) 0x00007ff73ec61c31
[Inlined] TSparseArray<TSetElement<TTuple<FName,FSaviorRecord> >,TSparseArrayAllocator<TSizedDefaultAllocator<32>,FDefaultBitArrayAllocator> >::operator=(const TSparseArray<TSetElement<TTuple<FName,FSaviorRecord> >,TSparseArrayAllocator<TSizedDefaultAllocator<32>,FDefaultBitArrayAllocator> > &) SparseArray.h:746
TSet<TTuple<FName,FSaviorRecord>,TDefaultMapHashableKeyFuncs<FName,FSaviorRecord,0>,FDefaultSetAllocator>::operator=(const TSet<TTuple<FName,FSaviorRecord>,TDefaultMapHashableKeyFuncs<FName,FSaviorRecord,0>,FDefaultSetAllocator> &) Set.h:345
[Inlined] TMapBase<FName,FSaviorRecord,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<FName,FSaviorRecord,0> >::operator=(const TMapBase<FName,FSaviorRecord,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<FName,FSaviorRecord,0> > &) 0x00007ff73ecc50fa
[Inlined] TSortableMapBase<FName,FSaviorRecord,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<FName,FSaviorRecord,0> >::operator=(const TSortableMapBase<FName,FSaviorRecord,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<FName,FSaviorRecord,0> > &) 0x00007ff73ecc50f5
[Inlined] TMap<FName,FSaviorRecord,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<FName,FSaviorRecord,0> >::operator=(const TMap<FName,FSaviorRecord,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<FName,FSaviorRecord,0> > &) 0x00007ff73ecc50f5
[Inlined] USavior::SlotDataToOBJ() 0x00007ff73ecc50f5
USavior::WriteSlotToFile(const int,ESaviorResult &) 0x00007ff73ecc5049
OnFinishSerializeLevel(USavior *,ESaviorResult,const bool) 0x00007ff73ecab2f0
[Inlined] Invoke(void (*const &)(USavior *, ESaviorResult, bool),USavior *const &,const ESaviorResult &,const bool &) Invoke.h:51
[Inlined] UE4Tuple_Private::TTupleBase<TIntegerSequence<unsigned int,0,1,2>,USavior *,enum ESaviorResult,bool>::ApplyAfter(void (*const &)(USavior *, ESaviorResult, bool)) Tuple.h:306
TBaseStaticDelegateInstance<void __cdecl(void),FDefaultDelegateUserPolicy,USavior *,enum ESaviorResult,bool>::ExecuteIfSafe() DelegateInstancesImpl.h:729
[Inlined] TDelegate<void __cdecl(void),FDefaultDelegateUserPolicy>::ExecuteIfBound() DelegateSignatureImpl.inl:599
[Inlined] FSimpleDelegateGraphTask::DoTask(Type,const TRefCountPtr<FGraphEvent> &) TaskGraphInterfaces.h:1215
TGraphTask<FSimpleDelegateGraphTask>::ExecuteTask(TArray<FBaseGraphTask *,TSizedDefaultAllocator<32> > &,Type) TaskGraphInterfaces.h:886
<unknown> 0x00007ff73f2c933b
<unknown> 0x00007ff73f2c966a
<unknown> 0x00007ff73f2c9932
<unknown> 0x00007ff7438a535c
<unknown> 0x00007ff73db35080
<unknown> 0x00007ff73db48f5f
<unknown> 0x00007ff73db4b497
<unknown> 0x00007ff73db5cc74
[Inlined] invoke_main() 0x00007ff744b0d2ae
__scrt_common_main_seh() 0x00007ff744b0d28d
<unknown> 0x00007ff91f9e7034
<unknown> 0x00007ff9219c2651
and another crash log:
<unknown> 0x00007ff73f7cb0c6
<unknown> 0x00007ff73f7cae4b
<unknown> 0x00007ff73f5a9035
<unknown> 0x00007ff73fb5351e
<unknown> 0x00007ff73fb91845
<unknown> 0x00007ff73f962082
<unknown> 0x00007ff73f95fc08
<unknown> 0x00007ff73fb91612
<unknown> 0x00007ff73fb533ca
<unknown> 0x00007ff73fb91845
<unknown> 0x00007ff73f962082
<unknown> 0x00007ff73faed85e
<unknown> 0x00007ff73faeb263
<unknown> 0x00007ff73faeb0d0
<unknown> 0x00007ff742f8dee7
<unknown> 0x00007ff742f8df7b
USavior::WriteSlotToFile(const int,ESaviorResult &) 0x00007ff73ecc5115
OnFinishSerializeLevel(USavior *,ESaviorResult,const bool) 0x00007ff73ecab2f0
[Inlined] Invoke(void (*const &)(USavior *, ESaviorResult, bool),USavior *const &,const ESaviorResult &,const bool &) Invoke.h:51
[Inlined] UE4Tuple_Private::TTupleBase<TIntegerSequence<unsigned int,0,1,2>,USavior *,enum ESaviorResult,bool>::ApplyAfter(void (*const &)(USavior *, ESaviorResult, bool)) Tuple.h:306
TBaseStaticDelegateInstance<void __cdecl(void),FDefaultDelegateUserPolicy,USavior *,enum ESaviorResult,bool>::ExecuteIfSafe() DelegateInstancesImpl.h:729
[Inlined] TDelegate<void __cdecl(void),FDefaultDelegateUserPolicy>::ExecuteIfBound() DelegateSignatureImpl.inl:599
[Inlined] FSimpleDelegateGraphTask::DoTask(Type,const TRefCountPtr<FGraphEvent> &) TaskGraphInterfaces.h:1215
TGraphTask<FSimpleDelegateGraphTask>::ExecuteTask(TArray<FBaseGraphTask *,TSizedDefaultAllocator<32> > &,Type) TaskGraphInterfaces.h:886
<unknown> 0x00007ff73f2c933b
<unknown> 0x00007ff73f2c966a
<unknown> 0x00007ff73f2c9932
<unknown> 0x00007ff7438a535c
<unknown> 0x00007ff73db35080
<unknown> 0x00007ff73db48f5f
<unknown> 0x00007ff73db4b497
<unknown> 0x00007ff73db5cc74
[Inlined] invoke_main() 0x00007ff744b0d2ae
__scrt_common_main_seh() 0x00007ff744b0d28d
<unknown> 0x00007ff91f9e7034
<unknown> 0x00007ff9219c2651
and the Blueprint graph:
This is all there is to it really. Crash happens frequently when trying to save (relatively) a lot of actors, but also sometimes occurs when trying to save like 10 actors (just not as likely as trying to save 100)