The Functional Test framework crashes when adding a delegate instance if multiplayer PIE is enabled. The crash occurs at the check code in the block below from ..\Engine\Source\Runtime\Core\Public\Delegates\DelegateSignatureImpl_Variadics.inl:
#if !UE_BUILD_SHIPPING && !UE_BUILD_TEST // verify that the same function isn't already bound for (IDelegateInstance* DelegateInstance : GetInvocationList()) { if (DelegateInstance != nullptr) { // this down-cast is OK! allows for managing invocation list in the base class without requiring virtual functions TDelegateInstanceInterface* DelegateInstanceInterface = (TDelegateInstanceInterface*)DelegateInstance; check(!DelegateInstanceInterface->IsSameFunction(*InDelegateInstance)); } } #endif
RESULTS: Two game sessions will launch, then crash
UE4Editor-FunctionalTesting.dll!TBaseMulticastDelegate<void,bool const >::AddDelegateInstance(IBaseDelegateInstance<void __cdecl(bool)> * InDelegateInstance) Line 1015	C++
UE4Editor-FunctionalTesting.dll!TBaseMulticastDelegate<void,bool const >::AddUObject<UFunctionalTestingManager>(UFunctionalTestingManager * InUserObject, void (bool) * InFunc) Line 733	C++
UE4Editor-FunctionalTesting.dll!UFunctionalTestingManager::RunAllFunctionalTests(UObject * WorldContext, bool bNewLog, bool bRunLooped, bool bInWaitForNavigationBuildFinish, FString ReproString) Line 134	C++
UE4Editor-FunctionalTesting.dll!UFunctionalTestingManager::execRunAllFunctionalTests(FFrame & Stack, void * const Z_Param__Result) Line 20	C++
UE4Editor-CoreUObject.dll!UFunction::Invoke(UObject * Obj, FFrame & Stack, void * const Z_Param__Result) Line 4166	C++
UE4Editor-CoreUObject.dll!UObject::CallFunction(FFrame & Stack, void * const Z_Param__Result, UFunction * Function) Line 484	C++
UE4Editor-CoreUObject.dll!UObject::ProcessContextOpcode(FFrame & Stack, void * const Z_Param__Result, bool bCanFailSilently) Line 1597	C++
UE4Editor-CoreUObject.dll!UObject::execLetBool(FFrame & Stack, void * const Z_Param__Result) Line 1515	C++
UE4Editor-CoreUObject.dll!UObject::ProcessInternal(FFrame & Stack, void * const Z_Param__Result) Line 698	C++
UE4Editor-CoreUObject.dll!UFunction::Invoke(UObject * Obj, FFrame & Stack, void * const Z_Param__Result) Line 4166	C++
UE4Editor-CoreUObject.dll!UObject::ProcessEvent(UFunction * Function, void * Parms) Line 1050	C++
UE4Editor-Engine.dll!AActor::ProcessEvent(UFunction * Function, void * Parameters) Line 520	C++
UE4Editor-Engine.dll!AActor::BeginPlay() Line 2603	C++
UE4Editor-Engine.dll!AWorldSettings::NotifyBeginPlay() Line 132	C++
UE4Editor-Engine.dll!AGameState::OnRep_MatchState() Line 245	C++
UE4Editor-CoreUObject.dll!UFunction::Invoke(UObject * Obj, FFrame & Stack, void * const Z_Param__Result) Line 4166	C++
UE4Editor-CoreUObject.dll!UObject::ProcessEvent(UFunction * Function, void * Parms) Line 1046	C++
UE4Editor-Engine.dll!AActor::ProcessEvent(UFunction * Function, void * Parameters) Line 520	C++
UE4Editor-Engine.dll!FRepLayout::CallRepNotifies(FRepState * RepState, UObject * Object) Line 1550	C++
UE4Editor-Engine.dll!FObjectReplicator::CallRepNotifies(bool bSkipIfChannelHasQueuedBunches) Line 1150	C++
UE4Editor-Engine.dll!FObjectReplicator::PostReceivedBunch() Line 765	C++
UE4Editor-Engine.dll!UActorChannel::ProcessBunch(FInBunch & Bunch) Line 2015	C++
UE4Editor-Engine.dll!UActorChannel::ReceivedBunch(FInBunch & Bunch) Line 1884	C++
UE4Editor-Engine.dll!UChannel::ReceivedSequencedBunch(FInBunch & Bunch) Line 270	C++
UE4Editor-Engine.dll!UChannel::ReceivedNextBunch(FInBunch & Bunch, bool & bOutSkipAck) Line 609	C++
UE4Editor-Engine.dll!UChannel::ReceivedRawBunch(FInBunch & Bunch, bool & bOutSkipAck) Line 354	C++
UE4Editor-Engine.dll!UNetConnection::ReceivedPacket(FBitReader & Reader) Line 1036	C++
UE4Editor-Engine.dll!UNetConnection::ReceivedRawPacket(void * InData, int Count) Line 476	C++
UE4Editor-OnlineSubsystemUtils.dll!UIpNetDriver::TickDispatch(float DeltaTime) Line 174	C++
UE4Editor-Engine.dll!TBaseUObjectMethodDelegateInstance<0,UNetDriver,void __cdecl(float)>::ExecuteIfSafe(float <Params_0>) Line 772	C++
UE4Editor-Engine.dll!TBaseMulticastDelegate<void,float>::Broadcast(float <Params_0>) Line 1043	C++
UE4Editor-Engine.dll!UWorld::Tick(ELevelTick TickType, float DeltaSeconds) Line 1052	C++
UE4Editor-UnrealEd.dll!UEditorEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 1346	C++
UE4Editor-UnrealEd.dll!UUnrealEdEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 364	C++
UE4Editor.exe!FEngineLoop::Tick() Line 2379	C++
UE4Editor.exe!GuardedMain(const wchar_t * CmdLine, HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, int nCmdShow) Line 142	C++
UE4Editor.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow) Line 189	C++
[External Code]	
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-17343 in the post.
| 0 | 
| Component | UE - Gameplay | 
|---|---|
| Affects Versions | 4.9 | 
| Target Fix | 4.9 | 
| Fix Commit | 2593297 | 
|---|
| Created | Jun 18, 2015 | 
|---|---|
| Resolved | Jun 19, 2015 | 
| Updated | Apr 27, 2018 |