I've run through portsnap/portupgrade a few times, so my
server should be up-to-date and I still see the crash.
I suspect the upstream patch you're referring to would
be the memset(WindowTable, 0, sizeof()) that appears a
few lines after the call that triggers the crash.
> Other than that, I can confirm that you _can_ run X on an AA1,
> at least on 8.x (that's what I'm currently using).
What window manager are you using? Right now, I'm
using TWM but suspect there's something a bit better
suited to this small screen. (Ideally, something that
adapts well to either the built-in screen or the
external 20" monitor I often use.)
> Are you using hal/dbus?
Yes.
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.
Tim
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;
}