<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>