Description

This is a slightly common crash coming out of the 4.17.2 hotfix. Users have not provided any descriptions of their actions when the crash occurred.

Source Context

 951       	/**
  952       	 * Removes a function from this multi-cast delegate's invocation list (performance is O(N)).
  953       	 *
  954       	 * The function is not actually removed, but deleted and marked as removed.
  955       	 * It will be removed next time the invocation list is compacted within Broadcast().
  956       	 *
  957       	 * @param Handle The handle of the delegate instance to remove.
  958       	 */
  959       	void RemoveDelegateInstance( FDelegateHandle Handle )
  960       	{
  961       		const TInvocationList& LocalInvocationList = Super::GetInvocationList();
  962       
  963 ***** 		for (int32 InvocationListIndex = 0; InvocationListIndex < LocalInvocationList.Num(); ++InvocationListIndex)
  964       		{
  965       			// InvocationList is const, so we const_cast to be able to unbind the entry
  966       			// TODO: This is horrible, can we get the base class to do it?
  967       			FDelegateBase& DelegateBase = const_cast<FDelegateBase&>(LocalInvocationList[InvocationListIndex]);
  968       
  969       			IDelegateInstance* DelegateInstanceInterface = Super::GetDelegateInstanceProtectedHelper(DelegateBase);
  970       			if ((DelegateInstanceInterface != nullptr) && DelegateInstanceInterface->GetHandle() == Handle)
  971       			{
  972       				DelegateBase.Unbind();
  973       
  974       				break; // each delegate binding has a unique handle, so once we find it, we can stop
  975       			}
  976       		}
Steps to Reproduce

repro steps currently unknown

Callstack
Access violation - code c0000005 (first/second chance not available)

UE4Editor_Sequencer!TBaseMulticastDelegate<void>::RemoveDelegateInstance() [delegatesignatureimpl.inl:964]
UE4Editor_Sequencer!FAcquiredResources::Release() [acquiredresources.h:60]
UE4Editor_Sequencer!FSequencer::~FSequencer() [sequencer.cpp:343]
UE4Editor_Sequencer!FSequencer::`scalar deleting destructor'()
UE4Editor_MovieSceneTools!TBaseFunctorDelegateInstance<TSharedRef<IPropertyTypeCustomization,0> __cdecl()
UE4Editor_PropertyEditor!TSparseArray<TSetElement<TTuple<FName,FPropertyTypeLayoutCallbackList> >,TSparseArrayAllocator<FDefaultAllocator,FDefaultBitArrayAllocator> >::Empty() [sparsearray.h:231]
UE4Editor_PropertyEditor!UE4Tuple_Private::TTupleStorage<TIntegerSequence<unsigned int,0,1>,TWeakPtr<IDetailsView,0>,TMap<FName,FPropertyTypeLayoutCallbackList,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<FName,FPropertyTypeLayoutCallbackList,0> > >::~TT()
UE4Editor_PropertyEditor!TSparseArray<TSetElement<TTuple<TWeakPtr<IDetailsView,0>,TMap<FName,FPropertyTypeLayoutCallbackList,FDefaultSetAllocator,TDefaultMapHashableKeyFuncs<FName,FPropertyTypeLayoutCallbackList,0> > > >,TSparseArrayAllocator<FDefaultAllocat() [sparsearray.h:228]
UE4Editor_PropertyEditor!FPropertyEditorModule::~FPropertyEditorModule()
UE4Editor_PropertyEditor!FPropertyEditorModule::`scalar deleting destructor'()
UE4Editor_Core!FModuleManager::UnloadModulesAtShutdown() [modulemanager.cpp:694]
UE4Editor!FEngineLoop::Exit() [launchengineloop.cpp:2844]
UE4Editor!GuardedMain() [launch.cpp:177]
UE4Editor!GuardedMainWrapper() [launchwindows.cpp:134]
UE4Editor!WinMain() [launchwindows.cpp:210]
UE4Editor!__scrt_common_main_seh() [exe_common.inl:253]
kernel32!BaseThreadInitThunk()
ntdll!RtlUserThreadStart()

Have Comments or More Details?

There's no existing public thread on this issue, so head over toAnswerHub just mention UE-50835 in the post.

1
Login to Vote

Fixed
ComponentTools - Sequencer
Affects Versions4.17.2
Target Fix4.18
Fix Commit3658534
Release Commit3658534
CreatedOct 5, 2017
ResolvedOct 5, 2017
UpdatedApr 27, 2018