ports/131930: [PATCH] x11-servers/xorg-server coredumps on exit
Tim Kientzle
kientzle at freebsd.org
Mon Mar 15 03:10:04 UTC 2010
The following reply was made to PR ports/131930; it has been noted by GNATS.
From: Tim Kientzle <kientzle at freebsd.org>
To: bug-followup at freebsd.org, peterjeremy at 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--
More information about the freebsd-x11
mailing list