We should revert this commit (d26fae246d7c451b4d5ffe24fdb959d4bd00b107). This is not the correct patch, and I'm sorry for not catching it sooner. It had my r-b, but it faded from memory.
This patch free()s memory in __glXScreenDestroy which was allocated in glxdricommon (which isn't in every DDX). That breaks abstraction and causes a crash when XQuartz quits, because it results in freeing a pointer that was never allocated. I believe the correct fix is to do this cleanup in __glXDRIscreenDestroy. On Oct 29, 2011, at 2:08 PM, [email protected] wrote: > From: Paulo Zanoni <[email protected]> > > 29,952 (208 direct, 29,744 indirect) bytes in 1 blocks are definitely lost in > loss record 573 of 573 > at 0x4C2779D: malloc (in > /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) > by 0x4829BC: createModeFromConfig (glxdricommon.c:131) > by 0x482C09: glxConvertConfigs (glxdricommon.c:185) > by 0x482788: __glXDRIscreenProbe (glxdriswrast.c:468) > by 0x4812FA: GlxExtensionInit (glxext.c:327) > by 0x41FB14: InitExtensions (miinitext.c:471) > by 0x568636: main (main.c:208) > > Signed-off-by: Paulo Zanoni <[email protected]> > --- > glx/glxscreens.c | 9 +++++++++ > 1 files changed, 9 insertions(+), 0 deletions(-) > > diff --git a/glx/glxscreens.c b/glx/glxscreens.c > index ebb9747..928cf0c 100644 > --- a/glx/glxscreens.c > +++ b/glx/glxscreens.c > @@ -419,6 +419,15 @@ void __glXScreenInit(__GLXscreen *pGlxScreen, ScreenPtr > pScreen) > > void __glXScreenDestroy(__GLXscreen *screen) > { > + __GLXconfig *head, *next; > + > + head = screen->fbconfigs; > + while (head) { > + next = head->next; > + free(head); > + head = next; > + } > + > free(screen->GLXvendor); > free(screen->GLXextensions); > free(screen->GLextensions); > -- > 1.7.7 > > _______________________________________________ > [email protected]: X.Org development > Archives: http://lists.x.org/archives/xorg-devel > Info: http://lists.x.org/mailman/listinfo/xorg-devel > _______________________________________________ [email protected]: X.Org development Archives: http://lists.x.org/archives/xorg-devel Info: http://lists.x.org/mailman/listinfo/xorg-devel
