<html>
    <head>
      <base href="https://bugs.freedesktop.org/" />
    </head>
    <body><span class="vcard"><a class="email" href="mailto:idr@freedesktop.org" title="Ian Romanick <idr@freedesktop.org>"> <span class="fn">Ian Romanick</span></a>
</span> changed
              <a class="bz_bug_link 
          bz_status_NEEDINFO "
   title="NEEDINFO --- - GLX_INTEL_swap_event crashes driver when swapping window buffers"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=54372">bug 54372</a>
        <br>
             <table border="1" cellspacing="0" cellpadding="8">
          <tr>
            <th>What</th>
            <th>Removed</th>
            <th>Added</th>
          </tr>

         <tr>
           <td style="text-align:right;">Status</td>
           <td>NEW
           </td>
           <td>NEEDINFO
           </td>
         </tr>

         <tr>
           <td style="text-align:right;">CC</td>
           <td>
                
           </td>
           <td>idr@freedesktop.org, jbarnes@virtuousgeek.org
           </td>
         </tr></table>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEEDINFO "
   title="NEEDINFO --- - GLX_INTEL_swap_event crashes driver when swapping window buffers"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=54372#c11">Comment # 11</a>
              on <a class="bz_bug_link 
          bz_status_NEEDINFO "
   title="NEEDINFO --- - GLX_INTEL_swap_event crashes driver when swapping window buffers"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=54372">bug 54372</a>
              from <span class="vcard"><a class="email" href="mailto:idr@freedesktop.org" title="Ian Romanick <idr@freedesktop.org>"> <span class="fn">Ian Romanick</span></a>
</span></b>
        <pre>I don't know how I never saw this bug before.  Sorry about that. :(  I'm also
adding Jesse to the CC list... because git-blame says he wrote all of this
code.

The NULL pointer from GetGLXDrawable is a pretty catastrophic event at this
point in the code.  GetGLXDrawable and dri2GetGlxDrawableFromXDrawableId
(earlier in the function) look up the drawable IDs in separate hash tables. 
The entry for dri2GetGlxDrawableFromXDrawableId is added in dri2CreateDrawable,
and the entry for GetGLXDrawable is added in InitGLXDrawable.  Both of these
functions are called together (see CreateDrawable in glx_pbuffer.c for an
example).

The entries are removed from the hash tables by DestroyGLXDrawable and
DestroyDRIDrawable.  These are also called together (see DestroyDrawable in
glx_pbuffer.c).

So... if one hash table has the entry and the other does not, that suggests
that we're between the DestroyGLXDrawable and DestroyDRIDrawable calls... which
seems hella crazy because your backtrace is in the middle of a glXSwapBuffers
call (though perhaps not for the same drawable?).

Assuming you can recreate this crash at will, at the time of the crash:

1. What is the value of awire->drawable?

2. What is the value of pdraw->drawable?

3. In the dri2SwapBuffers frame, what is the value of pdraw?  This is just from
the backtrace.

4. In the glXSwapBuffers frame, what is the value of drawable?  This is just
from the backtracke.

5. Is your app multithreaded?</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>