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>
