<html>
    <head>
      <base href="https://bugs.freedesktop.org/">
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - [SKL] ES31-CTS.core.sepshaderobjs.StateInteraction fails sporadically"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=102177#c4">Comment # 4</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - [SKL] ES31-CTS.core.sepshaderobjs.StateInteraction fails sporadically"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=102177">bug 102177</a>
              from <span class="vcard"><a class="email" href="mailto:t_arceri@yahoo.com.au" title="Timothy Arceri <t_arceri@yahoo.com.au>"> <span class="fn">Timothy Arceri</span></a>
</span></b>
        <pre>I took a quick look at this after talking to Ken. There seems to be a bunch of
scenarios but I'm wondering if in at least some cases we are marking things as
dirty when they shouldn't be.

For example:

==30669== Invalid read of size 4
==30669==    at 0x9532B94: gen6_upload_push_constants
(gen6_constant_state.c:85)
==30669==    by 0x9529250: check_and_emit_atom (brw_state_upload.c:456)
==30669==    by 0x9529250: brw_upload_pipeline_state (brw_state_upload.c:570)
==30669==    by 0x9529250: brw_upload_render_state (brw_state_upload.c:592)
==30669==    by 0x951BAAC: brw_try_draw_prims (brw_draw.c:770)
==30669==    by 0x951BAAC: brw_draw_prims (brw_draw.c:862)
==30669==    by 0x931F0BD: vbo_validated_drawrangeelements
(vbo_exec_array.c:925)
==30669==    by 0x931F84E: vbo_exec_DrawElements (vbo_exec_array.c:1075)
==30669==    by 0xFC744A: glcts::StateInteractionCase::iterate() (in
/home/timothy/data/git_mesa/build-es-cts-new/cts/glcts)
==30669==    by 0xE19E75: es31cts::TestCaseWrapper::iterate(tcu::TestCase*) (in
/home/timothy/data/git_mesa/build-es-cts-new/cts/glcts)
==30669==    by 0x27DD23F:
tcu::TestSessionExecutor::iterateTestCase(tcu::TestCase*) (in
/home/timothy/data/git_mesa/build-es-cts-new/cts/glcts)
==30669==    by 0x27DC794: tcu::TestSessionExecutor::iterate() (in
/home/timothy/data/git_mesa/build-es-cts-new/cts/glcts)
==30669==    by 0x27B1F3E: tcu::App::iterate() (in
/home/timothy/data/git_mesa/build-es-cts-new/cts/glcts)
==30669==    by 0xE14313: main (in
/home/timothy/data/git_mesa/build-es-cts-new/cts/glcts)
==30669==  Address 0xa744580 is 48 bytes inside a block of size 64 free'd
==30669==    at 0x4C2ED4A: free (vg_replace_malloc.c:530)
==30669==    by 0x944C14C: unsafe_free (ralloc.c:269)
==30669==    by 0x92B8EEF: _mesa_clear_shader_program_data (shaderobj.c:334)
==30669==    by 0x93A21BD: _mesa_glsl_link_shader (ir_to_mesa.cpp:3088)
==30669==    by 0x92B7158: link_program (shaderapi.c:1163)
==30669==    by 0x92B7158: link_program_error (shaderapi.c:1241)


Here DrawElements ends up calling gen6_upload_push_constants() (which accesses
the now freed uniform storage) but I would have presumed constants would still
be in the correct state.</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are the QA Contact for the bug.</li>
      </ul>
    </body>
</html>