[ubuntu-x] GEM leak and GLX 1.4 - where we're at.

Christopher James Halse Rogers raof at ubuntu.com
Thu Apr 22 12:33:33 BST 2010


Hey all.

To keep everyone up to date with what's happening with bug #565981, the
GLX 1.4 backport patches, and Lucid.

The testing wiki page https://wiki.ubuntu.com/X/Testing/GEMLeak and
comments on the bug suggest that dropping the GLX backport is an
appropriate solution to the GEM memory leak.  It seems to resolve the
bug for all but one tester and one possible regression; I'll follow up
on both of these tomorrow.

I've convinced myself that we're getting testing on the codepaths we
need tested here; I was concerned that almost all the testing was being
done on DRI2 drivers and that we might expose different bugs in DRI1
drivers.  Tracing the glx calls in clutter has allayed my fears here.

Regarding the other approach - to keep the GLX 1.4 backport patches and
fix the memory leak - I'm reasonably confident that the fix is commit
f0006aa58f6cf7552a239e169ff6e7e4fda532f4 in xserver git, the first of
the glx resource-refactoring patch series.

For some background: we picked up the
114_dri2_make_sure_x_drawable_exists patch to fix the X server crash
when closing clutter apps documented in bug #550218.  This crash was
caused when trying to dispose a GLX drawable after the owning X drawable
had been invalidated, and the patch fixed the crash by looking up the
owner drawable at GLX dispose time.  This introduced the leak.

From browsing the git commit log and working through the code it seems
that the reason why GLX was trying to dispose a drawable associated with
an invalid X drawable is that the GLX 1.3 call glXCreateWindow created a
GLX drawable with a different XID to the owner's drawable; thus, when
the owner's resource is freed the GLX drawable's dispose callback was
not called and at some later time a GLX call would cause GLX to try to
dispose the now-orphaned GLX drawable.  That's the crash seen in bug
#550218.

Commit f0006aa fixes this by associating the GLX drawable created in
glXCreateWindow (and other GLX 1.3+ calls) with the owning XID, so when
the owning XID is freed the GLX drawable gets disposed at the right
time.

An xserver package with this patch is available in the ubuntu-x-swat
testing PPA, version 1.7.6-2ubuntu7~xtesting~dri2fixes.  For me this
seems to both not crash with clutter and not leak GEM objects.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 490 bytes
Desc: This is a digitally signed message part
Url : https://lists.ubuntu.com/archives/ubuntu-x/attachments/20100422/94b9f7eb/attachment.pgp 


More information about the Ubuntu-x mailing list