FMaterialRenderProxy access violation in Render Thread

This crash happens randomly during the course of play but always has the same callstack:

FMeshBatchAndRelevance::FMeshBatchAndRelevance(const FMeshBatch & InMesh, const FPrimitiveSceneProxy * InPrimitiveSceneProxy, ERHIFeatureLevel::Type FeatureLevel) Line 185 C++

FMeshElementCollector::AddMesh(int ViewIndex, FMeshBatch & MeshBatch) Line 254 C++

FDynamicSpriteEmitterData::GetDynamicMeshElementsEmitter(const FParticleSystemSceneProxy * Proxy, const FSceneView * View, const FSceneViewFamily & ViewFamily, int ViewIndex, FMeshElementCollector & Collector, FParticleVertexFactoryBase * VertexFactory) Line 1230 C++

FParticleSystemSceneProxy::GetDynamicMeshElements(const TArray<FSceneView const *,FDefaultAllocator> & Views, const FSceneViewFamily & ViewFamily, unsigned int VisibilityMap, FMeshElementCollector & Collector) Line 6892 C++

FSceneRenderer::GatherDynamicMeshElements(TArray<FViewInfo,FDefaultAllocator> & InViews, const FScene * InScene, const FSceneViewFamily & InViewFamily, const TArray<unsigned char,SceneRenderingAllocator> & HasDynamicMeshElementsMasks, const TArray<unsigned char,SceneRenderingAllocator> & HasDynamicEditorMeshElementsMasks, FMeshElementCollector & Collector) Line 1958 C++

FSceneRenderer::ComputeViewVisibility(FRHICommandListImmediate & RHICmdList) Line 2615 C++

FDeferredShadingSceneRenderer::InitViews(FRHICommandListImmediate & RHICmdList, FILCUpdatePrimTaskData & ILCTaskData, TArray<TRefCountPtr<FGraphEvent>,TInlineAllocator<4,FDefaultAllocator> > & SortEvents) Line 2860 C++

FDeferredShadingSceneRenderer::Render(FRHICommandListImmediate & RHICmdList) Line 591 C++

RenderViewFamily_RenderThread(FRHICommandListImmediate & RHICmdList, FSceneRenderer * SceneRenderer) Line 1728 C++

TGraphTask<`FRendererModule::BeginRenderingViewFamily'::`21'::EURCMacro_FDrawSceneCommand>::ExecuteTask(TArray<FBaseGraphTask *,FDefaultAllocator> & NewTasks, ENamedThreads::Type CurrentThread) Line 883 C++

FNamedTaskThread::ProcessTasksNamedThread(int QueueIndex, bool bAllowStall) Line 954 C++

FNamedTaskThread::ProcessTasksUntilQuit(int QueueIndex) Line 701 C++

RenderingThreadMain(FEvent * TaskGraphBoundSyncEvent) Line 325 C++

FRenderingThread::Run() Line 459 C++

FRunnableThreadWin::Run() Line 76 C++

FRunnableThreadWin::GuardedRun() Line 33 C++

The crash itself seems to stem from a MaterialRenderProxy object having been deleted (possibly on another thread?) while still being accessed from the render thread. It’s worth noting that we only see this with a packaged build - never in the editor (including standalone).

Both of these issues seem related in that they also deal with deleted MaterialRenderProxy objects: https://issues.unrealengine.com/issue/UE-40556 and https://issues.unrealengine.com/issue/UE-42244

Both have been fixed for 4.16 but we’re dead in the water without being able to integrate these fixes specifically for our 4.15.1 project.

Does it sound like this crash would be resolved by those same fixes? Is there a way to get the specific changes that went into them?

Hello ,

I have a couple of questions about your issue to help me investigate your crash further.

  1. Have you been able to reproduce this crash with a consistent set of steps?
  2. Is this the full callstack of your crash?
  3. Are you using a form of source control for your project? (Github?)
  4. What system is your packaged game running on?

Thanks!

Hello ,

We have not heard back from you in a few days, so we are marking this post as Resolved for tracking purposes. If you are still experiencing the issue you reported, please respond to this message with additional information and we will follow up.