Description

Find the root cause and fix it.

Potential issue based on logs:

  1. New RequestA is created in PrecachePSOs and its collection task is dispatched and finished
  2. RequestA is waiting for compilation task
  3. RequestA is released ReleasePrecacheData before the compilation task finishes
  4. New RequestB is created for the same FMaterialPSOPrecacheParams. As the RequestA was released it will not find it and again new collection task is dispatched
  5. RequestA finished compilation task and invokes MarkCompilationComplete, where based on precache params it finds the new RequestB instead, which is not finished yet and the assert hits.

For examplefrom logs:
[-14.16.19] [BoostPriority] RequestID: 5108
[-14.16.33] [ReleasePrecacheData] RequestID: 5108
[-14.18.07] [MarkCompilationComplete] RequestID: 5108, precache result RequestID: 6823

Potential workaround is to check the RequestID:

    void MarkCompilationComplete(const FMaterialPSOPrecacheParams& Params, uint32 RequestLifecycleID, uint32 RequestID)
    {
        FRWScopeLock WriteLock(RWLock, SLT_Write);
        FPrecacheData* FindResult = MaterialPSORequestData.Find(Params);
        if (FindResult && RequestLifecycleID == LifecycleID && RequestID == FindResult->RequestID)
        {
            verify(!CheckCompilingPSOs(*FindResult, false /*bBoostPriority*/));
        }
    }

Have Comments or More Details?

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

24
Login to Vote

Unresolved
CreatedMay 17, 2025
UpdatedJan 9, 2026
View Jira Issue