[Mesa-dev] [Bug 54372] GLX_INTEL_swap_event crashes driver when swapping window buffers

bugzilla-daemon at freedesktop.org bugzilla-daemon at freedesktop.org
Fri Jun 20 11:07:07 PDT 2014


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

--- Comment #24 from Ian Romanick <idr at freedesktop.org> ---
I pushed the first patch to master, and it should end up in the next 10.2
release and probably in the final 10.1 release.  Could you send your other
patches to the mesa-dev mailing list with a full commit message?  You can CC me
on them to reduce the odds that they'll get lost in my inbox flood.

commit 86bd2196b4ccec50443e99e6c8bf1659e1df9f37
Author: Daniel Manjarres <danmanj at gmail.com>
Date:   Fri Jun 20 10:51:33 2014 -0700

    glx: Don't crash on swap event for a Window (non-GLXWindow)

    Prior to GLX 1.3 there was the glxMakeCurrent() function that took a
    single drawable handle. The Drawable could be either a bare XID for a
    Window or an XID for a glxpixmap.

    GLX 1.3 added glxMakeContextCurrent that takes 2 handles: one for
    reading, one for writing. Nowadays the old glxMakeCurrent call is
    implemented as a call to glxMakeContextCurrent with the single handle
    duplicated.

    Because of this it is allowed to use a plain-old Window ID as an
    argument to glxMakeContextCurrent, although nobody really documents this
    sort of thing. The manpage for the NEW call specifies the arguments as
    GLXPixmaps, but the actual code accepts Window XIDs too, and handles
    them correctly.

    Similarly, the glxSelectEvents function can also take a bare Window XID.

    The "piglit" tests all use GLXWindows and/or GLXPixmaps. You never
    tested swap events with a bare Window XID. That is what my app was
    doing.

    The swap_events code worked with Window XIDs in mesa 7.x.y. The new code
    added in versions 8, 9, and 10 assumes that all buffer swap events have
    a GLXPixmap associated with them. Because of the historical quirks
    above, this is not true. Swap events for bare Window XIDs do NOT have a
    glxpixmap resulting in a segfault.

    Any app that uses the old school glxMakeCurrent call with a Window XID
    while trying to use swap_events will crash when the libs try to lookup
    the nonexistent GLXPixmap associated with the incoming swap event.

    I believe that the people who wrote the spec overlooked this, because
    the "sbc" field comes from the OML_sync extension that is defined in
    terms of glxpixmaps only.

    v2 (idr): Formatting changes.

    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=54372
    Reviewed-by: Ian Romanick <ian.d.romanick at intel.com>
    Acked-by: Jesse Barnes <jbarnes at virtuousgeek.org>
    Cc: "10.1 10.2" <mesa-stable at lists.freedesktop.org>

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


More information about the mesa-dev mailing list