Description

This is a regression. Tested in //UE5/Release-5.1 CL23901901

When a geometry collection is destroyed by an On Hit event the editor becomes unresponsive and never recovers. No crash is generated.

Steps to Reproduce
  1. Create or open any project
  2. Place a Cube in the scene
  3. Change to Fracture Mode(Shift+6)
  4. With the Cube selected choose New under Generate then save the results
  5. Select Uniform under Fracture
  6. Select Fracture in the Fracture Panel
  7. Change to Selection Mode(Shift+1)
  8. Place another Cube in the scene under the Geometry Collection then drag the Geometry Collection up high enough that it will collide and break on the Cube
  9. Select the Cube then in its Details Panel enable Simulation Generate Hit Events
  10. With the Cube selected open the Level Blueprints
  11. Right click in the graph then select Add Event > Collision > Add On Actor Hit
  12. Drag off of the Other Actor output pin then create a Destroy Actor node
  13. Connect the Execution pins
  14. Compile, save, and close the Level Blueprint
  15. Play in Editor
  16. Observe the Geometry Collection colliding with the Cube

Expected Results:
The Geometry Collection is destroyed.

Actual Results:
The editor becomes unresponsive.

Callstack
     [External Code]    
>    [Inline Frame] UnrealEditor-Chaos.dll!Windows::AcquireSRWLockExclusive(Windows::SRWLOCK *) Line 155    C++
     [Inline Frame] UnrealEditor-Chaos.dll!FWindowsRWLock::WriteLock() Line 132    C++
     UnrealEditor-Chaos.dll!Chaos::FEventManager::UnregisterHandler(const Chaos::EEventType & EventType, const void * InHandler) Line 35    C++
     UnrealEditor-ChaosSolverEngine.dll!UChaosGameplayEventDispatcher::UnregisterChaosEvents() Line 321    C++
     UnrealEditor-ChaosSolverEngine.dll!UChaosGameplayEventDispatcher::OnUnregister() Line 50    C++
     UnrealEditor-Engine.dll!UActorComponent::ExecuteUnregisterEvents() Line 1707    C++
     UnrealEditor-Engine.dll!UActorComponent::UnregisterComponent() Line 1423    C++
     UnrealEditor-Engine.dll!AActor::UnregisterAllComponents(bool bForReregister) Line 5166    C++
     UnrealEditor-Engine.dll!UWorld::DestroyActor(AActor * ThisActor, bool bNetForce, bool bShouldModifyLevel) Line 995    C++
     UnrealEditor-Engine.dll!AActor::Destroy(bool bNetForce, bool bShouldModifyLevel) Line 4595    C++
     UnrealEditor-CoreUObject.dll!UFunction::Invoke(UObject * Obj, FFrame & Stack, void * const Z_Param__Result) Line 6455    C++
     UnrealEditor-CoreUObject.dll!UObject::CallFunction(FFrame & Stack, void * const Z_Param__Result, UFunction * Function) Line 1129    C++
     [Inline Frame] UnrealEditor-CoreUObject.dll!FFrame::Step(UObject *) Line 467    C++
     UnrealEditor-CoreUObject.dll!UObject::ProcessContextOpcode(FFrame & Stack, void * const Z_Param__Result, bool bCanFailSilently) Line 3139    C++
     [Inline Frame] UnrealEditor-CoreUObject.dll!FFrame::Step(UObject *) Line 467    C++
     UnrealEditor-CoreUObject.dll!ProcessLocalScriptFunction(UObject * Context, FFrame & Stack, void * const Z_Param__Result) Line 1199    C++
     UnrealEditor-CoreUObject.dll!ProcessScriptFunction<void (__cdecl*)(UObject *,FFrame &,void *)>(UObject * Context, UFunction * Function, FFrame & Stack, void * const Z_Param__Result, void(*)(UObject *, FFrame &, void *) ExecFtor) Line 1029    C++
     UnrealEditor-CoreUObject.dll!ProcessLocalFunction(UObject * Context, UFunction * Fn, FFrame & Stack, void * const Z_Param__Result) Line 1269    C++
     [Inline Frame] UnrealEditor-CoreUObject.dll!FFrame::Step(UObject *) Line 467    C++
     UnrealEditor-CoreUObject.dll!ProcessLocalScriptFunction(UObject * Context, FFrame & Stack, void * const Z_Param__Result) Line 1199    C++
     UnrealEditor-CoreUObject.dll!UObject::ProcessInternal(UObject * Context, FFrame & Stack, void * const Z_Param__Result) Line 1296    C++
     UnrealEditor-CoreUObject.dll!UFunction::Invoke(UObject * Obj, FFrame & Stack, void * const Z_Param__Result) Line 6455    C++
     UnrealEditor-CoreUObject.dll!UObject::ProcessEvent(UFunction * Function, void * Parms) Line 2127    C++
     UnrealEditor-Engine.dll!AActor::ProcessEvent(UFunction * Function, void * Parameters) Line 1055    C++
     [Inline Frame] UnrealEditor-Engine.dll!TScriptDelegate<FWeakObjectPtr>::ProcessDelegate(void *) Line 247    C++
     UnrealEditor-Engine.dll!TMulticastScriptDelegate<FWeakObjectPtr>::ProcessMulticastDelegate<UObject>(void * Parameters) Line 493    C++
     [Inline Frame] UnrealEditor-Engine.dll!FActorHitSignature_DelegateWrapper(const TMulticastScriptDelegate<FWeakObjectPtr> &) Line 95    C++
     [Inline Frame] UnrealEditor-Engine.dll!FActorHitSignature_MCSignature::Broadcast(AActor *) Line 95    C++
     UnrealEditor-Engine.dll!TSparseDynamicDelegate<FActorHitSignature_MCSignature,AActor,FActorHitSignatureInfoGetter>::Broadcast<AActor *,AActor *,UE::Math::TVector<double>,FHitResult>(AActor * <Params_0>, AActor * <Params_1>, UE::Math::TVector<double> <Params_2>, FHitResult <Params_3>) Line 341    C++
     UnrealEditor-Engine.dll!AActor::DispatchPhysicsCollisionHit(const FRigidBodyCollisionInfo & MyInfo, const FRigidBodyCollisionInfo & OtherInfo, const FCollisionImpactData & RigidCollisionData) Line 4952    C++
     UnrealEditor-Engine.dll!FPhysScene_Chaos::DispatchPendingCollisionNotifies() Line 870    C++
     UnrealEditor-Chaos.dll!Chaos::TEventContainer<Chaos::FCollisionEventData>::DispatchConsumerData() Line 215    C++
     UnrealEditor-Chaos.dll!Chaos::FEventManager::DispatchEvents() Line 89    C++
     UnrealEditor-PhysicsCore.dll!<lambda_55c6963273175a8635f056d36be1f746>::operator()<Chaos::FPBDRigidsSolver>(Chaos::FPBDRigidsSolver & Concrete) Line 524    C++
     [Inline Frame] UnrealEditor-PhysicsCore.dll!Chaos::FPhysicsSolverBase::CastHelper(const FChaosScene::EndFrame::__l65::<lambda_55c6963273175a8635f056d36be1f746> &) Line 222    C++
     UnrealEditor-PhysicsCore.dll!FChaosScene::EndFrame() Line 516    C++
     [Inline Frame] UnrealEditor-Engine.dll!Invoke(void(UWorld::*)()) Line 66    C++
     [Inline Frame] UnrealEditor-Engine.dll!UE::Core::Private::Tuple::TTupleBase<TIntegerSequence<unsigned int>>::ApplyAfter(void(UWorld::*)() &) Line 327    C++
     UnrealEditor-Engine.dll!TBaseUObjectMethodDelegateInstance<0,UWorld,void __cdecl(void),FDefaultDelegateUserPolicy>::ExecuteIfSafe() Line 618    C++
     [Inline Frame] UnrealEditor-Engine.dll!TDelegate<void __cdecl(void),FDefaultDelegateUserPolicy>::ExecuteIfBound() Line 639    C++
     [Inline Frame] UnrealEditor-Engine.dll!FSimpleDelegateGraphTask::DoTask(ENamedThreads::Type) Line 1678    C++
     UnrealEditor-Engine.dll!TGraphTask<FSimpleDelegateGraphTask>::ExecuteTask(TArray<FBaseGraphTask *,TSizedDefaultAllocator<32>> & NewTasks, ENamedThreads::Type CurrentThread, bool bDeleteOnCompletion) Line 1348    C++
     [Inline Frame] UnrealEditor-Core.dll!FBaseGraphTask::Execute(TArray<FBaseGraphTask *,TSizedDefaultAllocator<32>> & CurrentThread, ENamedThreads::Type) Line 950    C++
     UnrealEditor-Core.dll!FNamedTaskThread::ProcessTasksNamedThread(int QueueIndex, bool bAllowStall) Line 760    C++
     UnrealEditor-Core.dll!FNamedTaskThread::ProcessTasksUntilQuit(int QueueIndex) Line 649    C++
     [Inline Frame] UnrealEditor-Core.dll!FTaskGraphCompatibilityImplementation::ProcessThreadUntilRequestReturn(ENamedThreads::Type CurrentThread) Line 2149    C++
     UnrealEditor-Core.dll!FTaskGraphCompatibilityImplementation::WaitUntilTasksComplete(const TArray<TRefCountPtr<FGraphEvent>,TSizedInlineAllocator<4,32,TSizedDefaultAllocator<32>>> & Tasks, ENamedThreads::Type CurrentThreadIfKnown) Line 2203    C++
     UnrealEditor-Engine.dll!FTickTaskSequencer::ReleaseTickGroup(ETickingGroup WorldTickGroup, bool bBlockTillComplete) Line 565    C++
     UnrealEditor-Engine.dll!FTickTaskManager::RunTickGroup(ETickingGroup Group, bool bBlockTillComplete) Line 1592    C++
     UnrealEditor-Engine.dll!UWorld::RunTickGroup(ETickingGroup Group, bool bBlockTillComplete) Line 794    C++
     UnrealEditor-Engine.dll!UWorld::Tick(ELevelTick TickType, float DeltaSeconds) Line 1559    C++
     UnrealEditor-UnrealEd.dll!UEditorEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 1890    C++
     UnrealEditor-UnrealEd.dll!UUnrealEdEngine::Tick(float DeltaSeconds, bool bIdleMode) Line 517    C++
     UnrealEditor.exe!FEngineLoop::Tick() Line 5369    C++
     [Inline Frame] UnrealEditor.exe!EngineTick() Line 66    C++
     UnrealEditor.exe!GuardedMain(const wchar_t * CmdLine) Line 202    C++
     UnrealEditor.exe!LaunchWindowsStartup(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * __formal, int nCmdShow, const wchar_t * CmdLine) Line 233    C++
     UnrealEditor.exe!WinMain(HINSTANCE__ * hInInstance, HINSTANCE__ * hPrevInstance, char * pCmdLine, int nCmdShow) Line 282    C++
     [External Code]    

Have Comments or More Details?

There's no existing public thread on this issue, so head over to Questions & Answers just mention UE-183725 in the post.

3
Login to Vote

Unresolved
ComponentUE - Simulation - Physics - Destruction
Affects Versions5.2
Target Fix5.4
CreatedApr 19, 2023
UpdatedOct 26, 2023