Page MenuHome

Crash - Compositor. Depth pass in the "size" input socket of "Blur" node. Only Cycles.
Closed, ResolvedPublicBUG

Description

System Information
Operating system: Windows-10-10.0.18362-SP0 64 Bits
Graphics card: GeForce GTX 1650/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 451.67

Blender Version
Broken: version:

  • 2.92.0 Alpha, branch: master, commit date: 2021-01-07 22:28, hash: rB61f1faac3f21
  • 2.91.0
  • 2.90.1
  • 2.80.0
  • 2.79b

Worked: Never?

Short description of error
Blender crash when, in the Compositor, User put the "Depth" output from "Render Layer" node into the "Size" socket of "Blur" node.
Only on Cycles. Blender doesn't crash when this is done in Eevee.

Exact steps for others to reproduce the error
Download the attached file and render it F12

Alternatively, follow these steps beginning with the default startup file:

  • Render the default cube with Cycles (default settings)
  • In Compositor, enable Nodes and add "Blur" node.
  • Plug the "Depth" output from "Render Layer" node into "Size" input socket in the "Blur" node. (doesn't matter is backdrop is enable)
  • IF "x" or "y" have a value other than zero, Blender crash.

Putting a "Normalize" node between the "Depth" and "Size" sockets doesn't make blender crash.
Filling the image area (or camera field of view) with objects makes the direct link between "Depth" and "Size" sockets safe.
Doing the exact same thing with Eevee doesn't crash Blender in any case (With or without "normalize" node, with or without visible empty background)

Tested with different computers, still crash.
Tested with 2.91 and 2.79b, still crash.

On Windows PowerShell the crash gives "Error : EXCEPTION_ACCESS_VIOLATION"

Event Timeline

Robert Guetzkow (rjg) changed the task status from Needs Triage to Confirmed.Jan 8 2021, 1:27 PM
Robert Guetzkow (rjg) updated the task description. (Show Details)

I can reproduce this in current release build of 2.92.0 61f1faac3f21 and all versions back to 2.79b. It appears the size is incorrectly computed by I will have to look further into that.

Robert Guetzkow (rjg) added a comment.EditedJan 8 2021, 1:39 PM

The crash appears to be caused by an integer overflow in GaussianXBlurOperation::updateGauss(). The reason for this is that with the depth as input, the m_size is quite large and consequentially so is rad (e.g. 9.99999996e+11). Since the line m_filtersize = min_ii(ceil(rad), MAX_GAUSSTAB_RADIUS); attempts to cast the large value to a (signed) integer and that data type can only hold a maximum of 2147483647, it overflows. This results in undefined behavior, which causes a crash in release builds.

Sergey Sharybin (sergey) changed the subtype of this task from "Report" to "Bug".Jan 26 2021, 12:37 PM
Sergey Sharybin (sergey) moved this task from Backlog to Blender 2.92 on the VFX & Video board.
Sergey Sharybin (sergey) edited projects, added BF Blender (2.92); removed BF Blender.