Date: Sun, 14 Mar 2010 16:26:47 -0700 From: Tim Kientzle <kientzle@freebsd.org> To: Garrett Cooper <yanefbsd@gmail.com> Cc: freebsd-x11@freebsd.org, "'freebsd-current@freebsd.org'" <freebsd-current@freebsd.org>, Peter Jeremy <peterjeremy@acm.org> Subject: Re: X11 crash on exit Message-ID: <4B9D70B7.1020709@freebsd.org> In-Reply-To: <7d6fde3d1003141516q87b7a28i523c6cb0bc5f4f35@mail.gmail.com> References: <4B989064.5030105@freebsd.org> <7d6fde3d1003102245l41ab8287r81680aa40281d802@mail.gmail.com> <4B9C9885.5040601@freebsd.org> <20100314195622.GA88471@server.vk2pj.dyndns.org> <4B9D58B5.4050002@freebsd.org> <7d6fde3d1003141516q87b7a28i523c6cb0bc5f4f35@mail.gmail.com>
next in thread | previous in thread | raw e-mail | index | archive | help
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;
}
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?4B9D70B7.1020709>
