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