Garrett Cooper wrote:
I implemented the fix I suggested earlier (scanning
the WindowTable to remove Window objects as they're
deleted) and it does consistently resolve the crash,
but now the X server restarts itself when xinit asks
it to exit, so there's clearly still something amiss.

Patch attached for anyone interested.

Patch, what patch?
-Garrett

Apologies. Patch pasted below (for mailing list) and attached (for direct addressees):

--- 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;
 }

_______________________________________________
freebsd-current@freebsd.org mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-current
To unsubscribe, send any mail to "freebsd-current-unsubscr...@freebsd.org"

Reply via email to