Hi! I currently have an issue where I’m getting a crash after a blueprint native event is called from a C++ class and I can’t quite figure out why.
I currently have two blueprint native events called PrePerform and PostPerform. Their C++ implementations are very simple, simply returning true and nothing else. Similarly, their Blueprint implementations are also incredibly simple, as they just call on the C++ implementation. However, occasionally when I try to access these from another C++ class, I get the following crash:
Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0xffffffffffffffff
UnrealEditor_survivalhorror_patch_0!UActionBase::PostPerform() [C:\Users\MyUser\Documents\Unreal Projects\aisurvivalhorror\Intermediate\Build\Win64\UnrealEditor\Inc\survivalhorror\UHT\ActionBase.gen.cpp:61]
UnrealEditor_survivalhorror_patch_0!UActions::CompleteAction() [C:\Users\MyUser\Documents\Unreal Projects\aisurvivalhorror\Source\survivalhorror\Private\Actions.cpp:122]
UnrealEditor_survivalhorror_patch_0!TBaseUObjectMethodDelegateInstance<0,UActions,void __cdecl(void),FDefaultDelegateUserPolicy>::Execute() [C:\Program Files\Epic Games\UE_5.2\Engine\Source\Runtime\Core\Public\Delegates\DelegateInstancesImpl.h:535]
UnrealEditor_Engine!FTimerUnifiedDelegate::Execute() [D:\build++UE5\Sync\Engine\Source\Runtime\Engine\Public\TimerManager.h:48]
UnrealEditor_Engine!FTimerManager::Tick() [D:\build++UE5\Sync\Engine\Source\Runtime\Engine\Private\TimerManager.cpp:933]
UnrealEditor_Engine!UWorld::Tick() [D:\build++UE5\Sync\Engine\Source\Runtime\Engine\Private\LevelTick.cpp:1576]
UnrealEditor_UnrealEd!UEditorEngine::Tick() [D:\build++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\EditorEngine.cpp:1905]
UnrealEditor_UnrealEd!UUnrealEdEngine::Tick() [D:\build++UE5\Sync\Engine\Source\Editor\UnrealEd\Private\UnrealEdEngine.cpp:519]
UnrealEditor!FEngineLoop::Tick() [D:\build++UE5\Sync\Engine\Source\Runtime\Launch\Private\LaunchEngineLoop.cpp:5812]
UnrealEditor!GuardedMain() [D:\build++UE5\Sync\Engine\Source\Runtime\Launch\Private\Launch.cpp:188]
UnrealEditor!GuardedMainWrapper() [D:\build++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:107]
UnrealEditor!LaunchWindowsStartup() [D:\build++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:244]
UnrealEditor!WinMain() [D:\build++UE5\Sync\Engine\Source\Runtime\Launch\Private\Windows\LaunchWindows.cpp:284]
UnrealEditor!__scrt_common_main_seh() [D:\a_work\1\s\src\vctools\crt\vcstartup\src\startup\exe_common.inl:288]
kernel32
ntdll
Occasionnally, the top of the call stack will include these calls in addition to the previously mentioned ones:
ntdll
UnrealEditor_CoreUObject!UClass::FindFunctionByName() [D:\build++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\Class.cpp:5858]
UnrealEditor_CoreUObject!UObject::FindFunctionChecked() [D:\build++UE5\Sync\Engine\Source\Runtime\CoreUObject\Private\UObject\ScriptCore.cpp:1450]
These functions are available on my UActionBase class, and I don’t understand why they’d be throwing this error since I can access their other properties just fine, just not these two functions. Below I’ve included some screenshots which show the PostPerform function, its C++ and Blueprint implementations, and how I’m calling them in my other class. This is exactly the same as the PrePerform function. If anyone knows what’s wrong I’d appreciate the advice, as I’ve never used Blueprint Native Events before today. Thanks!