Search Issue Tracker

Fixed in 2021.2.X

Votes

0

Found in

Issue ID

1323447

Regression

No

[Graphics] Possible to crash Unity with a stale/disposed GraphicsBuffer in a CommandBuffer

Graphics - LowLevel

-

It is possible to crash Unity if you create a graphics CommandBuffer that references a GraphicsBuffer or a ComputeBuffer, dispose that graphics buffer, and later on try to execute the command buffer.

The gist of it is like:

var indexBuffer = new GraphicsBuffer(GraphicsBuffer.Target.Index, 3, 2);
indexBuffer.SetData(new ushort[] {0, 1, 2});
var cmdBuffer = new CommandBuffer();
cmdBuffer.DrawProcedural(indexBuffer, Matrix4x4.identity, m_Material, 0, MeshTopology.Triangles, 3);
indexBuffer.Dispose();
// execute the command buffer that references an index buffer that is already disposed: crash
Graphics.ExecuteCommandBuffer(cmdBuffer);
cmdBuffer.Dispose();

This probably happens with most of the CommandBuffer commands that take a GraphicsBuffer or a ComputeBuffer argument.

Add comment

Log in to post comment