<div dir="ltr"><div>Yes, you are right. Thanks for the catch. I will send a fix patch to the mailing list.<br><br></div>Laura<br></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Mar 30, 2015 at 7:10 PM, Ilia Mirkin <span dir="ltr"><<a href="mailto:imirkin@alum.mit.edu" target="_blank">imirkin@alum.mit.edu</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">On Wed, Feb 11, 2015 at 9:05 PM, Laura Ekstrand <<a href="mailto:laura@jlekstrand.net">laura@jlekstrand.net</a>> wrote:<br>
> for (i = 0; i < n; i++) {<br>
> - _mesa_HashInsert(ctx->Shared->BufferObjects, first + i,<br>
> - &DummyBufferObject);<br>
> - buffer[i] = first + i;<br>
> + buffers[i] = first + i;<br>
> + if (dsa) {<br>
> + ASSERT(ctx->Driver.NewBufferObject);<br>
> + buf = ctx->Driver.NewBufferObject(ctx, buffers[i]);<br>
> + if (!buf) {<br>
> + _mesa_error(ctx, GL_OUT_OF_MEMORY, "%s", func);<br>
> + return;<br>
<br>
</span>Aren't you holding the shared mutex at this point? I think you need to<br>
free it...<br>
<div class="HOEnZb"><div class="h5"><br>
> + }<br>
> + }<br>
> + else<br>
> + buf = &DummyBufferObject;<br>
> +<br>
> + _mesa_HashInsert(ctx->Shared->BufferObjects, buffers[i], buf);<br>
> }<br>
><br>
> mtx_unlock(&ctx->Shared->Mutex);<br>
</div></div></blockquote></div><br></div>