← Back to team overview

registry team mailing list archive

[Bug 550218]

 

Created an attachment (id=34687)
Make sure corresponding X drawable exists before trying to use it

Looked over this some more with Kristian today.  It looks like the root
of the problem is that the GLX drawable we're destroying in
__glXdrawableDestroy has a stale corresponding X drawable, which was
destroyed in the GLX DestroyWindow hook (added by
120286aef59dabdb7c9fa762e08457e5cc8ec3a6).

That'll make the X drawable go away, but we'll be left with a pDraw
pointing into freed space, probably crashing when we get to
__glXdrawableDestroy for the actual GLX drawable in question.

This patch does a lookup on the X drawable ID corresponding to the GLX
drawable at destruction time, and ignores it if it no longer exists.
Kristian put together an alternate approach as well but it needs a
little work: http://people.freedesktop.org/~krh/glx-mess.patch.

And per the last comment, DRI2 priv destruction also needs some fixing;
I think it's now safe to always free the priv and clear the private
wherever we call DRI2FreeDrawable, since we check everywhere we need to
whether the priv still exists and so shouldn't crash.

-- 
xserver crashes when closing application using clutter
https://bugs.launchpad.net/bugs/550218
You received this bug notification because you are a member of Registry
Administrators, which is the registrant for Debian.