`UGroomComponent` calls `PrecachePSOs()` from exactly one place — `UGroomComponent::PostLoad()` (`GroomComponent.cpp:3421`).
As a result, any groom component that is not loaded from disk, or that is unregistered and re-registered, reaches `CreateSceneProxy()` with `FPSOPrecacheComponentData::bPSOPrecacheCalled == false`, which trips:
```
Engine/Source/Runtime/Engine/Private/PSOPrecache.cpp:296
ensure(!IsComponentPSOPrecachingEnabled() || bPSOPrecacheCalled);
```
Suggested fix:
Add a `PrecachePSOs()` call at the end of `UGroomComponent::OnRegister()`, matching `USkinnedMeshComponent::OnRegister()`.
[Attachment Removed]
Steps to Reproduce
1. Enable component PSO precaching (default).
2. At runtime, `NewObject<UGroomComponent>()` on an actor, `SetGroomAsset(GroomAsset, BindingAsset)`, `AttachToComponent(…)`, `RegisterComponent()`.
3. The ensure fires on the first `CreateSceneProxy()`.
[Attachment Removed]
Hey, I think we fixed this issue with CL 55798320. That change did not make it into the UE5-Main stream, but since it’s a trivial fix, you should be able to cherry-pick it. Let me know if that works for you
[Attachment Removed]
Hi, yes it’s the same bug. We have cherry-picked the CL and it works. Thank you
[Attachment Removed]
Ok, great to hear. I will close out this ticket then. Please let us know in case anything else comes up
[Attachment Removed]