Hi there,
Context: 5.7.1
When using Take Recorder to try and capture some simple gameplay, some actors which are spawned in (and recorded using the spawned actors in radius source) and then destroyed during the gameplay are causing the editor to crash upon stopping the recording.
It appears that during the FinalizeTrack() process, GetRecordToPossessable() is attempting to call GetWorld() on the TakeRecorderSource’s Target actor. This Actor is nullptr when the recording is finishing and therefore it results in a this == nullptr crash in AActor::GetWorld().
UnrealEditor-Engine.dll!AActor::GetWorld() Line 717 C++
> UnrealEditor-TakeRecorderSources.dll!UTakeRecorderActorSource::GetRecordToPossessable() Line 1791 C++
UnrealEditor-TakeRecorderSources.dll!UTakeRecorderActorSource::GetTrackRecorderSettings() Line 1758 C++
UnrealEditor-TakeTrackRecorders.dll!UMovieScene3DTransformTrackRecorder::FinalizeTrackImpl() Line 246 C++
[Inline Frame] UnrealEditor-TakeRecorderSources.dll!UMovieSceneTrackRecorder::FinalizeTrack() Line 90 C++
UnrealEditor-TakeRecorderSources.dll!UTakeRecorderActorSource::PostRecording(ULevelSequence * InSequence, ULevelSequence * InRootSequence, const bool bCancelled) Line 803 C++
UnrealEditor-TakesCore.dll!UTakeRecorderSources::StopRecording(ULevelSequence * InSequence, const bool bCancelled) Line 452 C++
UnrealEditor-TakeRecorder.dll!UTakeRecorder::StopInternal(const bool bCancelled) Line 1209 C++
[Inline Frame] UnrealEditor-TakeRecorder.dll!UTakeRecorder::Stop() Line 1103 C++
UnrealEditor-TakeRecorder.dll!UTakeRecorder::HandlePIE(bool bIsSimulating) Line 1404 C++
[Inline Frame] UnrealEditor-TakeRecorder.dll!Invoke(void(UTakeRecorder::*)(bool) PtrMemFun, UTakeRecorder * &) Line 66 C++
[Inline Frame] UnrealEditor-TakeRecorder.dll!UE::Core::Private::Tuple::TTupleBase<TIntegerSequence<unsigned int>>::ApplyAfter(void(UTakeRecorder::*)(bool) &) Line 326 C++
UnrealEditor-TakeRecorder.dll!TBaseUObjectMethodDelegateInstance<0,UTakeRecorder,void __cdecl(bool),FDefaultDelegateUserPolicy>::ExecuteIfSafe(bool <Params_0>) Line 713 C++
[Inline Frame] UnrealEditor-UnrealEd.dll!TMulticastDelegateBase<FDefaultDelegateUserPolicy>::Broadcast(bool) Line 301 C++
UnrealEditor-UnrealEd.dll!TMulticastDelegate<void __cdecl(bool),FDefaultDelegateUserPolicy>::Broadcast(bool <Params_0>) Line 1076 C++
UnrealEditor-UnrealEd.dll!UEditorEngine::EndPlayMap() Line 306 C++
UnrealEditor-UnrealEd.dll!UEditorEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 2509 C++
UnrealEditor-UnrealEd.dll!UUnrealEdEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 537 C++
UnrealEditor.exe!FEngineLoop::Tick() Line 5828 C++
[Inline Frame] UnrealEditor.exe!EngineTick() Line 60 C++
UnrealEditor.exe!GuardedMain(const wchar_t * CmdLine) Line 190 C++
UnrealEditor.exe!LaunchWindowsStartup(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow, const wchar_t * CmdLine) Line 266 C++
UnrealEditor.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * pCmdLine, int nCmdShow) Line 334 C++
[Inline Frame] UnrealEditor.exe!invoke_main() Line 102 C++
UnrealEditor.exe!__scrt_common_main_seh() Line 288 C++
kernel32.dll!00007ffc5e447374() Unknown
ntdll.dll!00007ffc5eadcc91() Unknown
Does the code need updating to listen for the Actor’s EndPlay event so it can wrap up that particular source/track upon the Actor ending play instead of at the end of the take recording and accessing a nullptr?
Any tips on how I might overcome this issue? Many thanks.
[Attachment Removed]