[Mesa-dev] [Bug 64568] SIGSEGV src/mesa/main/bufferobj.c:291

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Tue May 14 08:58:28 PDT 2013


https://bugs.freedesktop.org/show_bug.cgi?id=64568

José Fonseca <jfonseca at vmware.com> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
           Assignee|mesa-dev at lists.freedesktop. |maraeo at gmail.com
                   |org                         |

--- Comment #3 from José Fonseca <jfonseca at vmware.com> ---
The problem is that st_init_limits is called *after* _mesa_init_buffer_objects.

(gdb) break st_init_limits
Breakpoint 1 at 0x7ffff67e8f6e: file src/mesa/state_tracker/st_extensions.c,
line 69.
(gdb) break _mesa_init_buffer_objects
Breakpoint 2 at 0x7ffff68206cb: file src/mesa/main/bufferobj.c, line 610.
(gdb) r
Starting program: /usr/bin/glxinfo -l
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
name of display: :0.0

Breakpoint 2, _mesa_init_buffer_objects (ctx=0x6931f0) at
src/mesa/main/bufferobj.c:610
warning: Source file is more recent than executable.
610       memset(&DummyBufferObject, 0, sizeof(DummyBufferObject));
(gdb) c
Continuing.

Breakpoint 1, st_init_limits (st=0x6e92a0) at
src/mesa/state_tracker/st_extensions.c:69
warning: Source file is more recent than executable.
69       struct pipe_screen *screen = st->pipe->screen;
(gdb) 


Not sure what's the best way of fixing this, but I'll go ahead and commit a
workaround, as this affects all apps:

commit a149f9d4c792455efd46af46093f61a9144451af
Author: José Fonseca <jfonseca at vmware.com>
Date:   Tue May 14 16:55:56 2013 +0100

    mesa/st: Workaround fdo bug 64568.

    Effectively reverting the problematic hunk of
    commit 614ee25077b7ffafeb87b22563d01856824fb4bc

diff --git a/src/mesa/state_tracker/st_extensions.c
b/src/mesa/state_tracker/st_extensions.c
index b64d363..982e652 100644
--- a/src/mesa/state_tracker/st_extensions.c
+++ b/src/mesa/state_tracker/st_extensions.c
@@ -279,10 +279,15 @@ void st_init_limits(struct st_context *st)
       st->ctx->Extensions.ARB_uniform_buffer_object = GL_TRUE;
       c->UniformBufferOffsetAlignment =
          screen->get_param(screen, PIPE_CAP_CONSTANT_BUFFER_OFFSET_ALIGNMENT);
+      /* FIXME: _mesa_init_buffer_objects() already has been, and
+       * ctx->UniformBufferBindings allocated, so unfortunately we can't just
+       * change MaxUniformBufferBindings a posteriori. */
+#if 0
       c->MaxCombinedUniformBlocks = c->MaxUniformBufferBindings =
          c->VertexProgram.MaxUniformBlocks +
          c->GeometryProgram.MaxUniformBlocks +
          c->FragmentProgram.MaxUniformBlocks;
+#endif
    }
 }



I'm also surprised this didn't affect r600g. I see thousands of regressions
with piglit on softpipe/llvmpipe. Does the same not happen with r600g?

-- 
You are receiving this mail because:
You are the assignee for the bug.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20130514/3e0329df/attachment.html>


More information about the mesa-dev mailing list