Page MenuHome

Blender Window Split during the 3d viewport quad area view will crash blender
Closed, ResolvedPublicBUG


System Information
Operating system: Windows-10-10.0.18362 64 Bits
Graphics card: GeForce GTX 1050 Ti/PCIe/SSE2 NVIDIA Corporation 4.5.0 NVIDIA 441.41
CPU: Ryzen 2700x 3.7GHz 8 cores 16 threads

Blender Version
version: 2.81 (sub 16), branch: master, commit date: 2019-11-20 14:27, hash: rB26bd5ebd42e3
version 2.81a (sub16), branch: master, commit date: 2019-12-04 11:32, hash: rBf1aa4d18d49d

Short description of error
I tried to split the screen in the 3d view port window while i had a quad area view port that cause blender to crash.

Exact steps for others to reproduce the error

  1. Open blender (LAYOUT tab is default)
  2. In the header toolbar of the 3d viewport, select the View->Area->Toggle Quad View (Ctrl + Alt + Q).
  3. Click on the bottom right corner of 3dview and drag up to split.
  4. Crash.

Event Timeline

Germano Cavalcante (mano-wii) lowered the priority of this task from 90 to 30.Dec 9 2019, 3:09 PM

No crash here, am I doing something wrong?

Well i din't use the command split, I've used the UI split where in your image the viewport window and timeline window intersect at the corner.

I've set my default as my own template where i have 2 windows of blender on 2 screen each. and the quad view is in the second window.

Philipp Oeser (lichtwerk) raised the priority of this task from 30 to 90.Dec 17 2019, 12:56 PM
Germano Cavalcante (mano-wii) lowered the priority of this task from 90 to High.Dec 18 2019, 3:37 PM
Germano Cavalcante (mano-wii) updated the task description. (Show Details)

Not sure what is going on exactly, but can confirm the behavior in a way that might narrow things down a bit.

Because of @Germano Cavalcante (mano-wii) 's reported success in splitting a quad view with the "Area Options" context menu (from an edge), this thread might make it appear that this is a problem for interactive (action zone) splitting only. But that actually not the case.

The following uses only the "Area Options" menu when right-clicking on an edge and selecting "Horizontal Split", and NOT the corner zones. This makes it easier to reproduce exactly.

On any regular screen area (except for quad view) you can can start the operation and place the (future) edge anywhere you wish before confirming the action with a click. If you do so very close to the top edge you will see that it creates a new area larger than you actually request: it makes a new area that is the height of a header (probably the area's prefsizey size). This is because we have code in place that will not draw an area that is less than the height of a header.

While in "Quad View" the same operation will work fine, except if you try to make the new edge too close to the top or bottom. In that case it will crash. What I am specifically seeing is an assert in GPU_texture_create_2d() with "h" equal to zero.

So what this appears to be is that the new area is created at size zero, and so not being made at that minimum prefsizey size, and then there is attempts to draw this zero-sized area.

Some more notes:

If region-overlap is enabled and the tool header is hidden, then a Quad-view area will split properly by any means. So it will work (with enabled region overlap) if you hide just the tool settings or if you hide the entire header (which also hides the tool header).

But if region-overlap is disabled then Quad-view splitting will only work correctly if both header regions are hidden.

Issue is that the region wants to add a viewport with a negative dimension ARegion->winrct min > max. Fix would be to make sure to clamp ARegion->winrct when created