UE5 - Access Violation Crash after PIE - Paper2D Rendering

After porting our project from UE4 to UE5 our team has been encountering a crash related to the Paper2D plugin that has a chance to occur whenever we exit play in viewport.

As we have added more characters with sprites to the scene, this crash has become increasingly frequent. Currently, the engine crashes about 25% of the time we stop play in viewport, which is slowing down development tremendously.

I have researched the Access Violation crashes a bit and have tried the following solutions without success:

  • Resetting Nvidia control pannel render settings on my computer
  • Updating graphics drivers
  • Disabled all Set scalar parameter value nodes
  • Copying the project files to an empty project
  • Editing config file to change UE default port

This is the crash report Unreal provides:

Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0x0000000000000050

UnrealEditor_Paper2D!FSpriteTextureOverrideRenderProxy::GetMaterialNoFallback() [D:\build++UE5\Sync\Engine\Plugins\2D\Paper2D\Source\Paper2D\Private\PaperRenderSceneProxy.cpp:104]
UnrealEditor_Engine!FMaterialRenderProxy::UpdateDeferredCachedUniformExpressions() [D:\build++UE5\Sync\Engine\Source\Runtime\Engine\Private\Materials\MaterialRenderProxy.cpp:680]
UnrealEditor_Renderer!FScene::UpdateAllPrimitiveSceneInfos() [D:\build++UE5\Sync\Engine\Source\Runtime\Renderer\Private\RendererScene.cpp:5356]
UnrealEditor_Engine!FSceneInterface::UpdateAllPrimitiveSceneInfos() [D:\build++UE5\Sync\Engine\Source\Runtime\Engine\Private\SceneInterface.cpp:17]
UnrealEditor_Renderer!TEnqueueUniqueRenderCommandType<FScene::Release'::2’::FReleaseCommandName,FScene::Release'::2’::<lambda_3> >::DoTask() [D:\build++UE5\Sync\Engine\Source\Runtime\RenderCore\Public\RenderingThread.h:209]
UnrealEditor_Renderer!TGraphTask<TEnqueueUniqueRenderCommandType<FScene::Release'::2’::FReleaseCommandName,FScene::Release'::2’::<lambda_3> > >::ExecuteTask() [D:\build++UE5\Sync\Engine\Source\Runtime\Core\Public\Async\TaskGraphInterfaces.h:1265]
UnrealEditor_Core!FNamedTaskThread::ProcessTasksNamedThread() [D:\build++UE5\Sync\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp:758]
UnrealEditor_Core!FNamedTaskThread::ProcessTasksUntilQuit() [D:\build++UE5\Sync\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp:649]
UnrealEditor_RenderCore!RenderingThreadMain() [D:\build++UE5\Sync\Engine\Source\Runtime\RenderCore\Private\RenderingThread.cpp:411]
UnrealEditor_RenderCore!FRenderingThread::Run() [D:\build++UE5\Sync\Engine\Source\Runtime\RenderCore\Private\RenderingThread.cpp:537]
UnrealEditor_Core!FRunnableThreadWin::Run() [D:\build++UE5\Sync\Engine\Source\Runtime\Core\Private\Windows\WindowsRunnableThread.cpp:149]

Our project is blueprint based and it seems these crashes are related to something happening inside the C++ code of Paper2D plugin.
Any pointers or advice relating this crash would be much appreciated.

I can provide the full crash log for further details.

2 Likes

Did you found some solution, i had encountered this same problem?

I’m encountering the same Issue in updating my project. It only seemed to start happening after turning on Lumen as well.

Same here:

LoginId:d9be923e4d0b120882485081e99a4b0a
EpicAccountId:92389e08c98b44e3b00e0b2d0d7fe610

Assertion failed: Index>=0 && Index<NumBits [File:D:\build++UE5\Sync\Engine\Source\Runtime\Core\Public\Containers\BitArray.h] [Line: 1418]

UnrealEditor_Core!FOutputDeviceRedirector::Panic() [D:\build++UE5\Sync\Engine\Source\Runtime\Core\Private\Misc\OutputDeviceRedirector.cpp:773]
UnrealEditor_Core!ReportCrash() [D:\build++UE5\Sync\Engine\Source\Runtime\Core\Private\Windows\WindowsPlatformCrashContext.cpp:1610]
UnrealEditor_RenderCore!FRenderingThread::Run'::1’::filt$0() [D:\build++UE5\Sync\Engine\Source\Runtime\RenderCore\Private\RenderingThread.cpp:539]
VCRUNTIME140
ntdll
ntdll
ntdll
UnrealEditor_Paper2D!FSpriteTextureOverrideRenderProxy::GetMaterialNoFallback() [D:\build++UE5\Sync\Engine\Plugins\2D\Paper2D\Source\Paper2D\Private\PaperRenderSceneProxy.cpp:104]
UnrealEditor_Engine!FMaterialRenderProxy::UpdateDeferredCachedUniformExpressions() [D:\build++UE5\Sync\Engine\Source\Runtime\Engine\Private\Materials\MaterialRenderProxy.cpp:680]
UnrealEditor_Renderer!FScene::UpdateAllPrimitiveSceneInfos() [D:\build++UE5\Sync\Engine\Source\Runtime\Renderer\Private\RendererScene.cpp:5356]
UnrealEditor_Engine!FSceneInterface::UpdateAllPrimitiveSceneInfos() [D:\build++UE5\Sync\Engine\Source\Runtime\Engine\Private\SceneInterface.cpp:17]
UnrealEditor_Renderer!TEnqueueUniqueRenderCommandType<FScene::Release'::2’::FReleaseCommandName,FScene::Release'::2’::<lambda_3> >::DoTask() [D:\build++UE5\Sync\Engine\Source\Runtime\RenderCore\Public\RenderingThread.h:209]
UnrealEditor_Renderer!TGraphTask<TEnqueueUniqueRenderCommandType<FScene::Release'::2’::FReleaseCommandName,FScene::Release'::2’::<lambda_3> > >::ExecuteTask() [D:\build++UE5\Sync\Engine\Source\Runtime\Core\Public\Async\TaskGraphInterfaces.h:1265]
UnrealEditor_Core!FNamedTaskThread::ProcessTasksNamedThread() [D:\build++UE5\Sync\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp:758]
UnrealEditor_Core!FNamedTaskThread::ProcessTasksUntilQuit() [D:\build++UE5\Sync\Engine\Source\Runtime\Core\Private\Async\TaskGraph.cpp:649]
UnrealEditor_RenderCore!RenderingThreadMain() [D:\build++UE5\Sync\Engine\Source\Runtime\RenderCore\Private\RenderingThread.cpp:411]
UnrealEditor_RenderCore!FRenderingThread::Run() [D:\build++UE5\Sync\Engine\Source\Runtime\RenderCore\Private\RenderingThread.cpp:537]
UnrealEditor_Core!FRunnableThreadWin::Run() [D:\build++UE5\Sync\Engine\Source\Runtime\Core\Private\Windows\WindowsRunnableThread.cpp:149]

We basically get used to this but I just post to see if anyone came to a solution in the past year.

I’ve had the same problem with a paper2d project upgraded from 4.26 to 5.3.2, both built from source.
In my case it seems to be down to a node “set scalar parameter value” being updated through a timeline. If I update it manually then it’s fine, but if I use the timeline to update the value then it causes the crash on exit.
I suspect it’s something to do with garbage collecting on exit as the material reference is corrupted.