https://udn.unrealengine.com/questions/236428/bug-blueprints-executing-zombie-code.html
Blueprint MyCharacter is based on native class CodeFirstPersonCharacter.
CodeFirstPersonCharacter has component PawnSensing, that is not overriden/modified in MyCharacter.
In CodeFirstPersonCharacter's constructor a multicast delegate from PawnSensing is filled:
PawnSensing->OnSeePawn.AddDynamic(this, &ACodeFirstPersonCharacter::OnSeePawn);
PawnSensing component in MyCharacter's CDO (lets call it P1) should be exactly the same as in CodeFirstPersonCharacter's CDO (P2).
The delegate in P1 references MyCharacter's CDO and the delegate in P2 references CodeFirstPersonCharacter's CDO.
Although P1 and P2 are conceptually identical, they are not handled as identical while delta-serialization.
Let me know if the description is clear.
1. Do we want to fix the issue at all?
2. Can it be fixed?
4.20 Bug Scrub
public: ACodeFirstPersonCharacter(const FObjectInitializer& ObjectInitializer); UPROPERTY(VisibleAnywhere, BlueprintReadOnly, Category = AI) class UPawnSensingComponent* PawnSensing; UFUNCTION() void OnSeePawn(APawn* Pawn);
#include "Perception/PawnSensingComponent.h"
ACodeFirstPersonCharacter::ACodeFirstPersonCharacter(const FObjectInitializer& ObjectInitializer) : ACodeFirstPersonCharacter() { PawnSensing = ObjectInitializer.CreateDefaultSubobject<UPawnSensingComponent>(this, TEXT("PawnSensing")); PawnSensing->OnSeePawn.AddDynamic(this, &ACodeFirstPersonCharacter::OnSeePawn); } void ACodeFirstPersonCharacter::OnSeePawn(APawn* Pawn) { }
PublicDependencyModuleNames.AddRange(new string[] { "Core", "CoreUObject", "Engine", "InputCore","AIModule" });
PawnSensing->OnSeePawn.AddDynamic(this, ACodeFirstPersonCharacter::OnSeePawn);
from the end our new constructor to the end of ACodeFirstPersonCharacter::BeginPlay()
Result:
Ensure is thrown at the start of the first PIE
Ensure condition failed: InvocationList[ CurFunctionIndex ] != InDelegate
Expected:
No ensure is thrown
LogOutputDevice: Error: Ensure condition failed: InvocationList[ CurFunctionIndex ] != InDelegate [File:D:\P4_Workspaces\Main\Engine\Source\Runtime\Core\Public\UObject/ScriptDelegates.h] [Line: 509] LogOutputDevice: Error: Stack: LogOutputDevice: Error: [Callstack] 0x00000000410C8616 UE4Editor-Core.dll!FWindowsPlatformStackWalk::StackWalkAndDump() [d:\p4_workspaces\main\engine\source\runtime\core\private\windows\windowsplatformstackwalk.cpp:234] LogOutputDevice: Error: [Callstack] 0x0000000040E18922 UE4Editor-Core.dll!FDebug::EnsureFailed() [d:\p4_workspaces\main\engine\source\runtime\core\private\misc\assertionmacros.cpp:299] LogOutputDevice: Error: [Callstack] 0x0000000040E31EC6 UE4Editor-Core.dll!FDebug::OptionallyLogFormattedEnsureMessageReturningFalse() [d:\p4_workspaces\main\engine\source\runtime\core\private\misc\assertionmacros.cpp:433] LogOutputDevice: Error: [Callstack] 0x0000000013873C83 UE4Editor-CodeFirstPerson.dll!TMulticastScriptDelegate<FWeakObjectPtr>::AddInternal() [d:\p4_workspaces\main\engine\source\runtime\core\public\uobject\scriptdelegates.h:509] LogOutputDevice: Error: [Callstack] 0x0000000013874059 UE4Editor-CodeFirstPerson.dll!ACodeFirstPersonCharacter::BeginPlay() [d:\documents\unreal projects\codefirstperson\source\codefirstperson\codefirstpersoncharacter.cpp:118] LogOutputDevice: Error: [Callstack] 0x0000000024CB47CA UE4Editor-Engine.dll!AActor::DispatchBeginPlay() [d:\p4_workspaces\main\engine\source\runtime\engine\private\actor.cpp:3145] LogOutputDevice: Error: [Callstack] 0x0000000025FFFE2E UE4Editor-Engine.dll!AWorldSettings::NotifyBeginPlay() [d:\p4_workspaces\main\engine\source\runtime\engine\private\worldsettings.cpp:191] LogOutputDevice: Error: [Callstack] 0x0000000025461EA1 UE4Editor-Engine.dll!AGameStateBase::HandleBeginPlay() [d:\p4_workspaces\main\engine\source\runtime\engine\private\gamestatebase.cpp:177] LogOutputDevice: Error: [Callstack] 0x0000000025FE6D9E UE4Editor-Engine.dll!UWorld::BeginPlay() [d:\p4_workspaces\main\engine\source\runtime\engine\private\world.cpp:3650] LogOutputDevice: Error: [Callstack] 0x0000000025489B77 UE4Editor-Engine.dll!UGameInstance::StartPlayInEditorGameInstance() [d:\p4_workspaces\main\engine\source\runtime\engine\private\gameinstance.cpp:355] LogOutputDevice: Error: [Callstack] 0x0000000023D4CC89 UE4Editor-UnrealEd.dll!UEditorEngine::CreatePIEGameInstance() [d:\p4_workspaces\main\engine\source\editor\unrealed\private\playlevel.cpp:3271] LogOutputDevice: Error: [Callstack] 0x0000000023D6FDBB UE4Editor-UnrealEd.dll!UEditorEngine::PlayInEditor() [d:\p4_workspaces\main\engine\source\editor\unrealed\private\playlevel.cpp:2410] LogOutputDevice: Error: [Callstack] 0x0000000023D8C3D4 UE4Editor-UnrealEd.dll!UEditorEngine::StartQueuedPlayMapRequest() [d:\p4_workspaces\main\engine\source\editor\unrealed\private\playlevel.cpp:1271] LogOutputDevice: Error: [Callstack] 0x00000000237D3031 UE4Editor-UnrealEd.dll!UEditorEngine::Tick() [d:\p4_workspaces\main\engine\source\editor\unrealed\private\editorengine.cpp:1580] LogOutputDevice: Error: [Callstack] 0x00000000240C08F6 UE4Editor-UnrealEd.dll!UUnrealEdEngine::Tick() [d:\p4_workspaces\main\engine\source\editor\unrealed\private\unrealedengine.cpp:401] LogOutputDevice: Error: [Callstack] 0x0000000067B860B8 UE4Editor.exe!FEngineLoop::Tick() [d:\p4_workspaces\main\engine\source\runtime\launch\private\launchengineloop.cpp:3382] LogOutputDevice: Error: [Callstack] 0x0000000067B9629C UE4Editor.exe!GuardedMain() [d:\p4_workspaces\main\engine\source\runtime\launch\private\launch.cpp:166] LogOutputDevice: Error: [Callstack] 0x0000000067B9631A UE4Editor.exe!GuardedMainWrapper() [d:\p4_workspaces\main\engine\source\runtime\launch\private\windows\launchwindows.cpp:134] LogOutputDevice: Error: [Callstack] 0x0000000067BA424E UE4Editor.exe!WinMain() [d:\p4_workspaces\main\engine\source\runtime\launch\private\windows\launchwindows.cpp:210] LogOutputDevice: Error: [Callstack] 0x0000000067BA5F0A UE4Editor.exe!__scrt_common_main_seh() [f:\dd\vctools\crt\vcstartup\src\startup\exe_common.inl:283] LogOutputDevice: Error: [Callstack] 0x0000000088928364 KERNEL32.DLL!UnknownFunction [] LogOutputDevice: Error: [Callstack] 0x0000000088B67091 ntdll.dll!UnknownFunction [] LogStats: SubmitErrorReport - 0.000 s LogStats: SendNewReport - 0.456 s LogStats: FDebug::EnsureFailed - 7.904 s
There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-10029 in the post.
5 |
Component | UE - Foundation - Core |
---|---|
Affects Versions | 4.8, 4.20 |
Created | Feb 18, 2015 |
---|---|
Resolved | Aug 18, 2021 |
Updated | Aug 18, 2021 |