Date: Mon, 15 Mar 2010 03:10:04 GMT From: Tim Kientzle <kientzle@freebsd.org> To: freebsd-x11@FreeBSD.org Subject: Re: ports/131930: [PATCH] x11-servers/xorg-server coredumps on exit Message-ID: <201003150310.o2F3A4Ob080790@freefall.freebsd.org>
next in thread | raw e-mail | index | archive | help
The following reply was made to PR ports/131930; it has been noted by GNATS. From: Tim Kientzle <kientzle@freebsd.org> To: bug-followup@freebsd.org, peterjeremy@optushome.com.au Cc: Subject: Re: ports/131930: [PATCH] x11-servers/xorg-server coredumps on exit Date: Sun, 14 Mar 2010 19:42:13 -0700 This is a multi-part message in MIME format. --------------040801070806060200050609 Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit This is still happening as of March, 2010. I have a somewhat different diagnosis: Window objects get freed without being removed from WindowTable, causing problems when events get broadcast to every window in the WindowTable. The attached patch alters the DeleteWindow function to look for references to the current window in the WindowTable and clear them. Patch attached. --------------040801070806060200050609 Content-Type: text/x-c; name="patch-xorg-server-dix-window-DeleteWindow.c" Content-Transfer-Encoding: 7bit Content-Disposition: inline; filename="patch-xorg-server-dix-window-DeleteWindow.c" --- dix/window.c.orig 2009-10-11 19:52:40.000000000 -0700 +++ dix/window.c 2010-03-14 00:02:18.000000000 -0800 @@ -936,6 +936,7 @@ WindowPtr pParent; WindowPtr pWin = (WindowPtr)value; xEvent event; + int i; UnmapWindow(pWin, FALSE); @@ -964,6 +965,13 @@ xfree(dixLookupPrivate(&pWin->devPrivates, FocusPrivatesKey)); dixFreePrivates(pWin->devPrivates); xfree(pWin); + + for (i = 0; i < MAXSCREENS; ++i) + { + if (WindowTable[i] == pWin) + WindowTable[i] = NullWindow; + } + return Success; } --------------040801070806060200050609--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201003150310.o2F3A4Ob080790>