<html>
    <head>
      <base href="https://bugs.freedesktop.org/" />
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_REOPENED "
   title="REOPENED - [sna suse] ddx assertion hits"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=70461#c132">Comment # 132</a>
              on <a class="bz_bug_link 
          bz_status_REOPENED "
   title="REOPENED - [sna suse] ddx assertion hits"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=70461">bug 70461</a>
              from <span class="vcard"><a class="email" href="mailto:chris@chris-wilson.co.uk" title="Chris Wilson <chris@chris-wilson.co.uk>"> <span class="fn">Chris Wilson</span></a>
</span></b>
        <pre>If we move the skip-on-stale check ahead of the assert, does that paper over
the bug?

diff --git a/src/sna/sna_dri2.c b/src/sna/sna_dri2.c
index 2ed698d..4b6fdad 100644
--- a/src/sna/sna_dri2.c
+++ b/src/sna/sna_dri2.c
@@ -3302,15 +3302,15 @@ sna_dri2_schedule_swap(ClientPtr client, DrawablePtr
draw, DRI2BufferPtr front,
        assert(get_private(front)->refcnt);
        assert(get_private(back)->refcnt);

-       assert(get_private(back)->bo != get_private(front)->bo);
-       assert(get_private(front)->bo->refcnt);
-       assert(get_private(back)->bo->refcnt);
-
        if (get_private(back)->stale) {
                DBG(("%s: stale back buffer\n", __FUNCTION__));
                goto skip;
        }

+       assert(get_private(back)->bo != get_private(front)->bo);
+       assert(get_private(front)->bo->refcnt);
+       assert(get_private(back)->bo->refcnt);
+
        if (draw->type != DRAWABLE_PIXMAP) {
                WindowPtr win = (WindowPtr)draw;
                struct dri2_window *priv = dri2_window(win);</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>