If a texture is bound in a GL context the texture object will not be destroyed by the driver even if the program using the texture freed it. At least with mesa Gallium drivers the effect that these texture objects also hold references to sampler views that might have been created and destroyed in sub-contexts. Now, when a new texture is allocated and bound to the corresponding texture target, the old texture will finally be destroyed at this point, and by doing so it will try to access these already destroyed sampler views, resulting in a use after free. Consequently, unbind the texture in context 0 after it has been allocated, so that the driver doesn't hold an additional reference to it that inhibits its destruction of the texture when the guest program requests this. v2: Make sure that the texture is also unbound when the allocation function bails out with an error (Chia-I Wu) Closes #98 Signed-off-by: Gert Wollny <gert.wollny@collabora.com> Reviewed-by: Chia-I Wu <olvaffe@gmail.com>macos/master
parent
aa908a612c
commit
a6f9fac9e6
Loading…
Reference in new issue