[PATCHv2 2/2] glx: Drop DestroyWindow hook

Kristian Høgsberg krh at bitplanet.net
Wed Apr 14 12:13:43 PDT 2010


2010/4/14 Michel Dänzer <michel at daenzer.net>:
> On Wed, 2010-04-14 at 10:43 -0400, Kristian Høgsberg wrote:
>> 2010/4/10 Michel Dänzer <michel at daenzer.net>:
>> > On Fri, 2010-04-09 at 14:18 -0400, Kristian Høgsberg wrote:
>> >> Now that glx doesn't call DRI2DestroyDrawable anymore, we don't need to
>> >> force a specific resource destruction order in the DestroyWindow hook.
>> >
>> > I don't think DRI2DestroyDrawable was the only reason for this, see e.g.
>> > commit 2075d4bf9e53b8baef0b919da6c44771220cd4a5 ('glx: If a destroyed
>> > window is bound to the current context, make it not current.') and the
>> > bug report referenced by it.
>>
>> There's no bug report reference in that commit [...]
>
> Look again. :)

Argh, don't know how I missed that.  Sorry about that, I guess I was
looking for a bugzilla link on a line of its own, along with the
Signed-off-by line.

> It references
> https://bugs.freedesktop.org/show_bug.cgi?id=21132#c15 , according to
> which the commit fixes the crash shown in
> https://bugs.freedesktop.org/attachment.cgi?id=25038 , which doesn't
> have anything to do with DRI2 but with stale DrawablePtrs due to the
> window being destroyed while it's still bound to a GLX context.

The crash in the attachment happens in the ClientStateCallback from
CloseDownClient, at which point resources have already been cleaned
up. So forcing a specific destroy order can't make a difference here.
The real fix is the patch from attachment 25038, not the DestroyWindow
hook.  If the context is destroyed first, it will remove itself from
the glxAllContexts list so the DrawableGone destructor won't touch it.
 On the other hand, if the drawable is destroyed first, thanks to your
patch, it will detach itself from the context properly so context
destruction (whether at resource cleanup time or at client shutdown
time) wont touch a free drawable.

Kristian


More information about the xorg-devel mailing list