debian/changelog                              |    7 ++
 debian/patches/233-xf86events-valgrind.patch  |    9 +--
 debian/patches/234-composite-borderclip.patch |   48 ++++++++++++++++
 debian/patches/235-composite-tracking.diff    |   78 ++++++++++++++++++++++++++
 debian/patches/series                         |    2 
 5 files changed, 138 insertions(+), 6 deletions(-)

New commits:
commit 216555be81a3aa9ff6c7075dc44ef4ad218b79e1
Author: Maarten Lankhorst <maarten.lankho...@canonical.com>
Date:   Tue Oct 23 20:11:41 2012 +0200

    push WIP and 235-composite-tracking.diff
    
    234-composite-borderclip.patch is WIP!!
    235-composite-tracking.diff

diff --git a/debian/changelog b/debian/changelog
index 02a72b8..52f4683 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -2,7 +2,12 @@ xorg-server (2:1.13.0-0ubuntu7) UNRELEASED; urgency=low
 
   [ Maarten Lankhorst ]
   * add 233-xf86events-valgrind.patch to fix a xserver corruption
-    when acpid is stopped before Xorg is.
+    when acpid is stopped before Xorg is. (LP: #1070481)
+  * add 234-composite-borderclip.patch to fix another valgrind
+    that I found when investigating a bug. (LP: #1065113)
+    - This might not the cause, though. Patch is wrong, waiting
+      for upstream response for right fix..
+  * add 235-composite-tracking.diff to fix exa corruption. (LP: #1010794)
 
  -- Timo Aaltonen <tjaal...@ubuntu.com>  Tue, 09 Oct 2012 10:22:24 +0300
 
diff --git a/debian/patches/233-xf86events-valgrind.patch 
b/debian/patches/233-xf86events-valgrind.patch
index d4e2f83..2d49ca5 100644
--- a/debian/patches/233-xf86events-valgrind.patch
+++ b/debian/patches/233-xf86events-valgrind.patch
@@ -1,17 +1,16 @@
 diff --git a/hw/xfree86/common/xf86Events.c b/hw/xfree86/common/xf86Events.c
-index 3ad34b5..98ee8cd 100644
+index 3ad34b5..4bc5f66 100644
 --- a/hw/xfree86/common/xf86Events.c
 +++ b/hw/xfree86/common/xf86Events.c
-@@ -271,9 +271,10 @@ xf86Wakeup(pointer blockData, int err, pointer pReadmask)
+@@ -271,9 +271,9 @@ xf86Wakeup(pointer blockData, int err, pointer pReadmask)
      }
  
      if (err >= 0) {             /* we don't want the handlers called if 
select() */
 -        IHPtr ih;               /* returned with an error condition, do we?   
   */
-+        IHPtr ih, ih_next;      /* returned with an error condition, do we?   
   */
++        IHPtr ih, ih_tmp;       /* returned with an error condition, do we?   
   */
  
 -        for (ih = InputHandlers; ih; ih = ih->next) {
-+        for (ih = InputHandlers; ih; ih = ih_next) {
-+            ih_next = ih->next;
++        nt_list_for_each_entry_safe(ih, ih_tmp, InputHandlers, next) {
              if (ih->enabled && ih->fd >= 0 && ih->ihproc &&
                  (FD_ISSET(ih->fd, ((fd_set *) pReadmask)) != 0)) {
                  ih->ihproc(ih->fd, ih->data);
diff --git a/debian/patches/234-composite-borderclip.patch 
b/debian/patches/234-composite-borderclip.patch
new file mode 100644
index 0000000..5d9b6c4
--- /dev/null
+++ b/debian/patches/234-composite-borderclip.patch
@@ -0,0 +1,48 @@
+compRedirectWindow does not initialize borderClip(X,Y ) members on allocation,
+which could theoretically cause a crash because borderClip contains a pointer.
+Solve this by copying the data over from pWin.
+
+Noticed this when working on
+https://bugs.launchpad.net/ubuntu/+source/xorg-server/+bug/1065113
+
+Specific error valgrind error I was receiving is:
+
+==25858== Conditional jump or move depends on uninitialised value(s)
+==25858==    at 0x1EBF32: compClipNotify (compwindow.c:304)
+==25858==    by 0x2A2C23: miComputeClips (mivaltree.c:489)
+==25858==    by 0x2A321C: miValidateTree (mivaltree.c:695)
+==25858==    by 0x1896EE: MapWindow (window.c:2594)
+==25858==    by 0x1EB15B: compCreateOverlayWindow (compoverlay.c:155)
+==25858==    by 0x1E9ABA: ProcCompositeGetOverlayWindow (compext.c:304)
+==25858==    by 0x15DA50: Dispatch (dispatch.c:428)
+==25858==    by 0x14C569: main (main.c:295)
+==25858==  Uninitialised value was created by a heap allocation
+==25858==    at 0x4C2B3F8: malloc (in 
/usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
+==25858==    by 0x1ED4A3: compRedirectWindow (compalloc.c:172)
+==25858==    by 0x1EC142: compCreateWindow (compwindow.c:558)
+==25858==    by 0x18C56C: CreateWindow (window.c:801)
+==25858==    by 0x1EB0FF: compCreateOverlayWindow (compoverlay.c:145)
+==25858==    by 0x1E9ABA: ProcCompositeGetOverlayWindow (compext.c:304)
+==25858==    by 0x15DA50: Dispatch (dispatch.c:428)
+==25858==    by 0x14C569: main (main.c:295)
+
+Signed-off-by: Maarten Lankhorst <maarten.lankho...@canonical.com>
+
+---
+I'm not 100% sure if this is the correct assignment, I'm just guessing from 
the functions.
+
+diff --git a/composite/compalloc.c b/composite/compalloc.c
+index cc69c68..b6c5785 100644
+--- a/composite/compalloc.c
++++ b/composite/compalloc.c
+@@ -195,6 +195,8 @@ compRedirectWindow(ClientPtr pClient, WindowPtr pWin, int 
update)
+         cw->damaged = FALSE;
+         cw->pOldPixmap = NullPixmap;
+         dixSetPrivate(&pWin->devPrivates, CompWindowPrivateKey, cw);
++        cw->borderClipX = pWin->drawable.x;
++        cw->borderClipY = pWin->drawable.y;
+     }
+     ccw->next = cw->clients;
+     cw->clients = ccw;
+
+
diff --git a/debian/patches/235-composite-tracking.diff 
b/debian/patches/235-composite-tracking.diff
new file mode 100644
index 0000000..46e1294
--- /dev/null
+++ b/debian/patches/235-composite-tracking.diff
@@ -0,0 +1,78 @@
+From: Michel Dänzer <michel.daen...@amd.com>
+
+In particular, make sure pExaScr->src/maskPix are cleared when the
+corresponding pictures aren't associated with drawables, i.e. solid or gradient
+pictures. Without this, we would in some cases associate the source/mask region
+with unrelated pixmaps from previous Composite fallbacks, resulting in random
+corruption.
+
+Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=47266
+
+Signed-off-by: Michel Dänzer <michel.daen...@amd.com>
+---
+ exa/exa_priv.h    |    1 +
+ exa/exa_unaccel.c |   16 ++++++++++++----
+ 2 files changed, 13 insertions(+), 4 deletions(-)
+
+diff --git a/exa/exa_priv.h b/exa/exa_priv.h
+index cd6a40b..819feb0 100644
+--- a/exa/exa_priv.h
++++ b/exa/exa_priv.h
+@@ -201,6 +201,7 @@ typedef struct {
+     RegionRec srcReg;
+     RegionRec maskReg;
+     PixmapPtr srcPix;
++    PixmapPtr maskPix;
+ 
+ } ExaScreenPrivRec, *ExaScreenPrivPtr;
+ 
+diff --git a/exa/exa_unaccel.c b/exa/exa_unaccel.c
+index 72e59ca..ec49ef0 100644
+--- a/exa/exa_unaccel.c
++++ b/exa/exa_unaccel.c
+@@ -451,6 +451,13 @@ ExaSrcValidate(DrawablePtr pDrawable,
+     RegionPtr dst;
+     int xoff, yoff;
+ 
++    if (pExaScr->srcPix == pPix)
++        dst = &pExaScr->srcReg;
++    else if (pExaScr->maskPix == pPix)
++        dst = &pExaScr->maskReg;
++    else
++        return;
++
+     exaGetDrawableDeltas(pDrawable, pPix, &xoff, &yoff);
+ 
+     box.x1 = x + xoff;
+@@ -458,8 +465,6 @@ ExaSrcValidate(DrawablePtr pDrawable,
+     box.x2 = box.x1 + width;
+     box.y2 = box.y1 + height;
+ 
+-    dst = (pExaScr->srcPix == pPix) ? &pExaScr->srcReg : &pExaScr->maskReg;
+-
+     RegionInit(&reg, &box, 1);
+     RegionUnion(dst, dst, &reg);
+     RegionUninit(&reg);
+@@ -504,16 +509,19 @@ ExaPrepareCompositeReg(ScreenPtr pScreen,
+         if (pSrc != pDst)
+             RegionTranslate(pSrc->pCompositeClip,
+                             -pSrc->pDrawable->x, -pSrc->pDrawable->y);
+-    }
++    } else
++        pExaScr->srcPix = NULL;
+ 
+     if (pMask && pMask->pDrawable) {
+         pMaskPix = exaGetDrawablePixmap(pMask->pDrawable);
+         RegionNull(&pExaScr->maskReg);
+         maskReg = &pExaScr->maskReg;
++        pExaScr->maskPix = pMaskPix;
+         if (pMask != pDst && pMask != pSrc)
+             RegionTranslate(pMask->pCompositeClip,
+                             -pMask->pDrawable->x, -pMask->pDrawable->y);
+-    }
++    } else
++        pExaScr->maskPix = NULL;
+ 
+     RegionTranslate(pDst->pCompositeClip,
+                     -pDst->pDrawable->x, -pDst->pDrawable->y);
+-- 1.7.10.4
diff --git a/debian/patches/series b/debian/patches/series
index ba431fb..9753288 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -24,6 +24,8 @@
 227_null_ptr_midispcur.patch
 232-xf86compatoutput-valgrind.patch
 233-xf86events-valgrind.patch
+234-composite-borderclip.patch
+235-composite-tracking.diff
 
 ## waiting for review by upstream
 111_armel-drv-fallbacks.patch


-- 
To UNSUBSCRIBE, email to debian-x-requ...@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmas...@lists.debian.org
Archive: http://lists.debian.org/e1tqixq-0002b0...@vasks.debian.org

Reply via email to