[Mesa-dev] [Bug 65525] New: [llvmpipe] lp_scene.h:210:lp_scene_alloc: Assertion `size <= (64 * 1024)' failed.

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Fri Jun 7 17:57:29 PDT 2013


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

          Priority: medium
            Bug ID: 65525
          Keywords: have-backtrace, regression
                CC: eric at anholt.net
          Assignee: mesa-dev at lists.freedesktop.org
           Summary: [llvmpipe] lp_scene.h:210:lp_scene_alloc: Assertion
                    `size <= (64 * 1024)' failed.
          Severity: critical
    Classification: Unclassified
                OS: Linux (All)
          Reporter: vlee at freedesktop.org
          Hardware: x86-64 (AMD64)
            Status: NEW
           Version: git
         Component: Other
           Product: Mesa

mesa: 3c21a7d3c9b626a10a38987d77b9e77d70bd67d7

Run piglit arb_uniform_buffer_object-maxuniformblocksize fsexceed on llvmpipe.

$ ./bin/arb_uniform_buffer_object-maxuniformblocksize fsexceed -auto
Max uniform block size: 518144
Testing FS with uniform block vec4 v[32385]
src/gallium/drivers/llvmpipe/lp_scene.h:210:lp_scene_alloc: Assertion `size <=
(64 * 1024)' failed.
Trace/breakpoint trap (core dumped)

(gdb) bt
#0  0x00007fbfc2ed2b9a in _debug_assert_fail (expr=0x7fbfc39abba8 "size <= (64
* 1024)", file=0x7fbfc39abb80 "src/gallium/drivers/llvmpipe/lp_scene.h", 
    line=210, function=0x7fbfc39ac1b7 "lp_scene_alloc") at
src/gallium/auxiliary/util/u_debug.c:278
#1  0x00007fbfc2b79c75 in lp_scene_alloc (scene=0x7fbfc5ca3010, size=518160) at
src/gallium/drivers/llvmpipe/lp_scene.h:210
#2  0x00007fbfc2b7c3d9 in try_update_scene_state (setup=0x1291b90) at
src/gallium/drivers/llvmpipe/lp_setup.c:942
#3  0x00007fbfc2b7a825 in begin_binning (setup=0x1291b90) at
src/gallium/drivers/llvmpipe/lp_setup.c:195
#4  0x00007fbfc2b7abf0 in set_scene_state (setup=0x1291b90,
new_state=SETUP_ACTIVE, reason=0x7fbfc39ac160 "lp_setup_update_state")
    at src/gallium/drivers/llvmpipe/lp_setup.c:304
#5  0x00007fbfc2b7c9dd in lp_setup_update_state (setup=0x1291b90,
update_scene=1 '\001') at src/gallium/drivers/llvmpipe/lp_setup.c:1072
#6  0x00007fbfc2b84cc3 in lp_setup_draw_arrays (vbr=0x1291b90, start=0, nr=4)
at src/gallium/drivers/llvmpipe/lp_setup_vbuf.c:344
#7  0x00007fbfc2f80a96 in draw_pt_emit_linear (emit=0x128e980,
vert_info=0x7fffbf28b020, prim_info=0x7fffbf28b100)
    at src/gallium/auxiliary/draw/draw_pt_emit.c:268
#8  0x00007fbfc2f7841e in emit (emit=0x128e980, vert_info=0x7fffbf28b020,
prim_info=0x7fffbf28b100)
    at src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c:304
#9  0x00007fbfc2f788df in llvm_pipeline_generic (middle=0x128e830,
fetch_info=0x0, in_prim_info=0x7fffbf28b100)
    at src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c:432
#10 0x00007fbfc2f78a26 in llvm_middle_end_linear_run (middle=0x128e830,
start=0, count=4, prim_flags=0)
    at src/gallium/auxiliary/draw/draw_pt_fetch_shade_pipeline_llvm.c:494
#11 0x00007fbfc2ea4fcb in vsplit_segment_simple_linear (vsplit=0x128b9e0,
flags=0, istart=0, icount=4)
    at src/gallium/auxiliary/draw/draw_pt_vsplit_tmp.h:234
#12 0x00007fbfc2ea52d0 in vsplit_run_linear (frontend=0x128b9e0, start=0,
count=4) at src/gallium/auxiliary/draw/draw_split_tmp.h:60
#13 0x00007fbfc2e997a5 in draw_pt_arrays (draw=0x127c840, prim=7, start=0,
count=4) at src/gallium/auxiliary/draw/draw_pt.c:149
#14 0x00007fbfc2e9a518 in draw_vbo (draw=0x127c840, info=0x7fffbf28b270) at
src/gallium/auxiliary/draw/draw_pt.c:532
#15 0x00007fbfc2b6a9ec in llvmpipe_draw_vbo (pipe=0x127ac60,
info=0x7fffbf28b390) at src/gallium/drivers/llvmpipe/lp_draw_arrays.c:126
#16 0x00007fbfc2e829e0 in cso_draw_vbo (cso=0x1357730, info=0x7fffbf28b390) at
src/gallium/auxiliary/cso_cache/cso_context.c:1406
#17 0x00007fbfc2ceade9 in st_draw_vbo (ctx=0x12eaac0, prims=0x7fffbf28b460,
nr_prims=1, ib=0x0, index_bounds_valid=1 '\001', min_index=0, max_index=3, 
    tfb_vertcount=0x0) at src/mesa/state_tracker/st_draw.c:286
#18 0x00007fbfc2daa204 in vbo_draw_arrays (ctx=0x12eaac0, mode=7, start=0,
count=4, numInstances=1, baseInstance=0) at src/mesa/vbo/vbo_exec_array.c:624
#19 0x00007fbfc2daabcb in vbo_exec_DrawArrays (mode=7, start=0, count=4) at
src/mesa/vbo/vbo_exec_array.c:776
#20 0x00007fbfc59486d0 in stub_glDrawArrays (mode=7, first=0, count=4) at
piglit/tests/util/generated_dispatch.c:5673
#21 0x00007fbfc59a75d9 in piglit_draw_rect (x=-1, y=-1, w=2, h=2) at
piglit/tests/util/piglit-util-gl.c:870
#22 0x000000000040168e in piglit_display () at
piglit/tests/spec/arb_uniform_buffer_object/maxuniformblocksize.c:200
#23 0x00007fbfc593c030 in display () at
piglit/tests/util/piglit-framework-gl/piglit_glut_framework.c:60
#24 0x00007fbfc50e9137 in fghRedrawWindow (window=0x1277090) at
freeglut_main.c:210
#25 fghcbDisplayWindow (window=0x1277090, enumerator=0x7fffbf28b6b0) at
freeglut_main.c:227
#26 0x00007fbfc50ec889 in fgEnumWindows (enumCallback=0x7fbfc50e90d0
<fghcbDisplayWindow>, enumerator=0x7fffbf28b6b0) at freeglut_structure.c:394
#27 0x00007fbfc50e95fa in fghDisplayAll () at freeglut_main.c:249
#28 glutMainLoopEvent () at freeglut_main.c:1450
#29 0x00007fbfc50e9f05 in glutMainLoop () at freeglut_main.c:1498
#30 0x00007fbfc593c265 in run_test (gl_fw=0x7fbfc5c18f40, argc=2,
argv=0x7fffbf28ba78)
    at piglit/tests/util/piglit-framework-gl/piglit_glut_framework.c:142
#31 0x00007fbfc593a34e in piglit_gl_test_run (argc=2, argv=0x7fffbf28ba78,
config=0x7fffbf28b960)
    at piglit/tests/util/piglit-framework-gl.c:127
#32 0x0000000000401240 in main (argc=3, argv=0x7fffbf28ba78)
    at piglit/tests/spec/arb_uniform_buffer_object/maxuniformblocksize.c:43
(gdb) frame 1
#1  0x00007fbfc2b79c75 in lp_scene_alloc (scene=0x7fbfc5ca3010, size=518160) at
src/gallium/drivers/llvmpipe/lp_scene.h:210
210       assert(size <= DATA_BLOCK_SIZE);


38e77e545d06bf5ac0e185f2a1581a97bafdab56 is the first bad commit
commit 38e77e545d06bf5ac0e185f2a1581a97bafdab56
Author: Eric Anholt <eric at anholt.net>
Date:   Thu May 23 11:10:15 2013 -0700

    glsl: Fix uniform buffer object counting.

    We were counting uniforms located in UBOs against the default uniform
    block limit, while not doing any counting against the specific combined
    limit.

    Note that I couldn't quite find justification for the way I did this, but
    I think it's the only sensible thing: The spec talks about components, so
    each "float" in a std140 block would count as 1 component and a "vec4"
    would count as 4, though they occupy the same amount of space.  Since GPU
    limits on uniform buffer loads are surely going to be about the size of
    the blocks, I just counted them that way.

    Fixes link failures in piglit
    arb_uniform_buffer_object/maxuniformblocksize when ported to geometry
    shaders on Paul's GS branch, since in that case the max block size is
    bigger than the default uniform block component limit.

    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>

:040000 040000 a33f7a7d4a3927d6fc2f671ec8634e070c446969
a578c1156e802b7db94433a05b773671c10cfbc8 M    src
bisect run success

-- 
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/20130608/b035ac59/attachment-0001.html>


More information about the mesa-dev mailing list