I have a problem with my project where I am using screen capture2D and it happens ever so often that unreal would randomly crash with this message in common.
[2019.12.05-23.21.47:148][489]LogRenderer: Reallocating scene render targets to support 1932x1116 Format 10 NumSamples 1 (Frame:1).
[2019.12.05-23.21.58:392][499]LogWindows: Error: === Critical error: ===
[2019.12.05-23.21.58:392][499]LogWindows: Error:
[2019.12.05-23.21.58:392][499]LogWindows: Error: Fatal error!
[2019.12.05-23.21.58:392][499]LogWindows: Error:
[2019.12.05-23.21.58:392][499]LogWindows: Error: Unhandled Exception: EXCEPTION_ACCESS_VIOLATION reading address 0xfc64f135
[2019.12.05-23.21.58:392][499]LogWindows: Error:
[2019.12.05-23.21.58:392][499]LogWindows: Error: [Callstack] 0x00007ffc64ef835a UE4Editor-SlateCore.dll!SWidget::IsChildWidgetCulled() [d:\build\++ue4\sync\engine\source\runtime\slatecore\private\widgets\swidget.cpp:1247]
Scene Description:
- I am using one render target to generate a mask using screenCapture2D. The screencapture captures my mask generated from intersection of the model to the plane using the “distancetonearestsurface” in the material.
- I am using 3 other render targets as my output that my 3 pixel shaders are generating.
My memory usage isn’t very high. Max goes up to 2GB.
Upon looking closely at swidget.cpp it seems it fails at the “DoRectangleIntersect” clipping step.
bool SWidget::IsChildWidgetCulled(const FSlateRect& MyCullingRect, const FArrangedWidget& ArrangedChild) const
{
// We add some slack fill to the culling rect to deal with the common occurrence
// of widgets being larger than their root level widget is. Happens when nested child widgets
// inflate their rendering bounds to render beyond their parent (the child of this panel doing the culling),
// or using render transforms. In either case, it introduces offsets to a bounding volume we don't
// actually know about or track in slate, so we have have two choices.
// 1) Don't cull, set SLATE_CULL_WIDGETS to 0.
// 2) Cull with a slack fill amount users can adjust.
const FSlateRect CullingRectWithSlack = MyCullingRect.ScaleBy(GCullingSlackFillPercent);
// 1) We check if the rendered bounding box overlaps with the culling rect. Which is so that
// a render transformed element is never culled if it would have been visible to the user.
if (FSlateRect::DoRectanglesIntersect(CullingRectWithSlack, ArrangedChild.Geometry.GetRenderBoundingRect()))
I do not use any UI elements. I am just testing my shader in PIE window.
You can find my entire logfile here. https://pastebin.com/eMcHFDtS
The reason this crash is annoying is because it’s so unpredictable and want to get rid of it. If anyone can help me out it will great.