[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Bug#884829: xserver-xorg-video-nouveau: memory leak in Xorg when audacious is playing with Info Bar Visualization



On 12/22/17, Sven Joachim <svenjoac@gmx.de> wrote:

> I am reassigning it to the xserver-xorg-core package.  Hopefully
> somebody who knows more about X than I do can give further help.

Thanks Joachim for reassigning this bug.

And I am providing further informations and a walk around.

I probably have found exactly where the memory blocks are loss.
The postion is after FreePixmap() at pixmap.c:133.

This can be verified using Valgrind and GDB.
A detailed log is attached as xorg-vgdb.txt. Below is explanation.
I have rebuilt the xorg-server package with
DEB_CFLAGS_MAINT_APPEND="-O0 -g3" before running the test.

 (gdb) target remote | vgdb
 (gdb) b pixmap.c:132
 (gdb) c
 (gdb) n
133	in ../../../../dix/pixmap.c

Then run leak_check to set increment count of valgrind to zero:

 (gdb) monitor leak_check summary reachable
 (gdb) c

Then hit at pixmap.c:132 again:

Thread 1 hit Breakpoint 1, FreePixmap (pPixmap=0x13cb2170)
    at ../../../../dix/pixmap.c:132
132	in ../../../../dix/pixmap.c
 (gdb) monitor leak_check reachable
==13478== 224 (+224) bytes in 1 (+1) blocks are still reachable in
loss record 2,567 of 3,164
==13478==    at 0x4C2ABEF: malloc (vg_replace_malloc.c:299)
==13478==    by 0x5E5FABA: pixman_rect_alloc (pixman-region.c:465)
==13478==    by 0x5E60F8B: pixman_op (pixman-region.c:828)
==13478==    by 0x5E62858: pixman_region_subtract (pixman-region.c:1987)
==13478==    by 0xAC09408: RegionSubtract (regionstr.h:271)
==13478==    by 0xAC097F5: exaCopyDirty (exa_migration_classic.c:128)
==13478==    by 0xAC09EDE: exaCopyDirtyToFb (exa_migration_classic.c:303)
==13478==    by 0xAC0C948: exaDoMigration_mixed (exa_migration_mixed.c:118)
==13478==    by 0xAC08536: exaDoMigration (exa.c:1132)
==13478==    by 0xAC0E928: exaHWCopyNtoN (exa_accel.c:468)
==13478==    by 0xAC0EED8: exaCopyNtoN (exa_accel.c:581)
==13478==    by 0x32A84B: miCopyRegion (micopy.c:121)
==13478==    by 0x32ADB2: miDoCopy (micopy.c:296)
==13478==    by 0xAC0F01B: exaCopyArea (exa_accel.c:608)
==13478==    by 0x2A32E5: damageCopyArea (damage.c:775)
==13478==    by 0x15A757: ProcCopyArea (dispatch.c:1722)
==13478==    by 0x156F48: Dispatch (dispatch.c:479)
==13478==    by 0x166152: dix_main (main.c:287)
==13478==    by 0x146B91: main (stubmain.c:34)
==13478==
==13478== 26,200 (+200) bytes in 131 (+1) blocks are still reachable
in loss record 3,126 of 3,164
==13478==    at 0x4C2ABEF: malloc (vg_replace_malloc.c:299)
==13478==    by 0x1899A5: AllocatePixmap (pixmap.c:119)
==13478==    by 0xB451823: fbCreatePixmapBpp (fbpixmap.c:53)
==13478==    by 0xB4519F3: fbCreatePixmap (fbpixmap.c:97)
==13478==    by 0xAC0B97D: exaCreatePixmap_mixed (exa_mixed.c:63)
==13478==    by 0x159A7F: ProcCreatePixmap (dispatch.c:1441)
==13478==    by 0x156F48: Dispatch (dispatch.c:479)
==13478==    by 0x166152: dix_main (main.c:287)
==13478==    by 0x146B91: main (stubmain.c:34)
==13478==
==13478== LEAK SUMMARY:
==13478==    definitely lost: 119,574 (+0) bytes in 585 (+0) blocks
==13478==    indirectly lost: 2,591 (+0) bytes in 38 (+0) blocks
==13478==      possibly lost: 23,658 (+0) bytes in 193 (+0) blocks
==13478==    still reachable: 14,784,670 (+424) bytes in 21,242 (+2) blocks
==13478==         suppressed: 0 (+0) bytes in 0 (+0) blocks
==13478==

There is no memory loss, but 2 new reachable memory blocks.
What related to my issue is the one alloc'd by malloc() which is
called by pixman_rect_alloc():

 (gdb) monitor block_list 2567
==13478== 224 (+224) bytes in 1 (+1) blocks are still reachable in
loss record 2,567 of 3,164
==13478==    at 0x4C2ABEF: malloc (vg_replace_malloc.c:299)
==13478==    by 0x5E5FABA: pixman_rect_alloc (pixman-region.c:465)
####### backtrace removed for clarify #######
==13478== 0x13CC2CC0[224]

0x13CC2CC0[224] is only referenced by *0x13cb2218:

 (gdb) monitor who_points_at 0x13cc2cc0
==13478== Searching for pointers to 0x13cc2cc0
==13478== *0x13cb2218 points at 0x13cc2cc0
 Address 0x13cb2218 is 168 bytes inside a block of size 200 alloc'd
==13478==    at 0x4C2ABEF: malloc (vg_replace_malloc.c:299)
==13478==    by 0x1899A5: AllocatePixmap (pixmap.c:119)
==13478==    by 0xB451823: fbCreatePixmapBpp (fbpixmap.c:53)
==13478==    by 0xB4519F3: fbCreatePixmap (fbpixmap.c:97)
==13478==    by 0xAC0B97D: exaCreatePixmap_mixed (exa_mixed.c:63)
==13478==    by 0x159A7F: ProcCreatePixmap (dispatch.c:1441)
==13478==    by 0x156F48: Dispatch (dispatch.c:479)
==13478==    by 0x166152: dix_main (main.c:287)
==13478==    by 0x146B91: main (stubmain.c:34)

0x13cb2218 is related to pPixmap->devPrivates:
(the offset 0x18 is found by testing on pExaPixmap in exaDestroyPixmap_mixed();
its value may not fixed on 0x18)

 (gdb) p &(((ExaPixmapPrivPtr) (((void *)
pPixmap->devPrivates)+0x18))->validSys.data)
$3 = (pixman_region16_data_t **) 0x13cb2218

 (gdb) p *((ExaPixmapPrivPtr) (((void *) pPixmap->devPrivates)+0x18))
$1 = {area = 0x0, score = 0, use_gpu_copy = 1, sys_ptr = 0x0,
  sys_pitch = 440, fb_ptr = 0x0, fb_pitch = 448, fb_size = 0,
  accel_blocked = 0, pDamage = 0x0, validSys = {extents = {
      x1 = 0, y1 = 0, x2 = 110, y2 = 80}, data = 0x13cc2cc0},
  validFB = {extents = {x1 = 0, y1 = 0, x2 = 110, y2 = 80},
    data = 0x0}, driverPriv = 0x0}

After step over pixmap.c:133, there is loss of one memory block:

 (gdb) n
133	in ../../../../dix/pixmap.c
 (gdb) monitor leak_check reachable
==13478== 106,832 (+224) bytes in 466 (+1) blocks are definitely lost
in loss record 3,153 of 3,164
==13478==    at 0x4C2ABEF: malloc (vg_replace_malloc.c:299)
==13478==    by 0x5E5FABA: pixman_rect_alloc (pixman-region.c:465)
==13478==    by 0x5E60F8B: pixman_op (pixman-region.c:828)
==13478==    by 0x5E62858: pixman_region_subtract (pixman-region.c:1987)
==13478==    by 0xAC09408: RegionSubtract (regionstr.h:271)
==13478==    by 0xAC097F5: exaCopyDirty (exa_migration_classic.c:128)
==13478==    by 0xAC09EDE: exaCopyDirtyToFb (exa_migration_classic.c:303)
==13478==    by 0xAC0C948: exaDoMigration_mixed (exa_migration_mixed.c:118)
==13478==    by 0xAC08536: exaDoMigration (exa.c:1132)
==13478==    by 0xAC0E928: exaHWCopyNtoN (exa_accel.c:468)
==13478==    by 0xAC0EED8: exaCopyNtoN (exa_accel.c:581)
==13478==    by 0x32A84B: miCopyRegion (micopy.c:121)
==13478==    by 0x32ADB2: miDoCopy (micopy.c:296)
==13478==    by 0xAC0F01B: exaCopyArea (exa_accel.c:608)
==13478==    by 0x2A32E5: damageCopyArea (damage.c:775)
==13478==    by 0x15A757: ProcCopyArea (dispatch.c:1722)
==13478==    by 0x156F48: Dispatch (dispatch.c:479)
==13478==    by 0x166152: dix_main (main.c:287)
==13478==    by 0x146B91: main (stubmain.c:34)
==13478==
==13478== LEAK SUMMARY:
==13478==    definitely lost: 119,798 (+224) bytes in 586 (+1) blocks
==13478==    indirectly lost: 2,591 (+0) bytes in 38 (+0) blocks
==13478==      possibly lost: 23,658 (+0) bytes in 193 (+0) blocks
==13478==    still reachable: 14,784,246 (-424) bytes in 21,240 (-2) blocks
==13478==         suppressed: 0 (+0) bytes in 0 (+0) blocks
==13478==

This lost block is 0x13CC2CC0[224]:

 (gdb) monitor block_list 3153
==13478== 106,832 (+224) bytes in 466 (+1) blocks are definitely lost
in loss record 3,153 of 3,164
==13478==    at 0x4C2ABEF: malloc (vg_replace_malloc.c:299)
==13478==    by 0x5E5FABA: pixman_rect_alloc (pixman-region.c:465)
####### backtrace removed for clarify #######
==13478== 0x90FA410[224]
==13478== 0x90FD240[256]
####################### MANY LINES REMOVED #################
==13478== 0x13CC2CC0[224]
####################### MANY LINES REMOVED #################
==13478== 0x16EB5F70[256]
==13478== 0x176A4C10[256]

This is no surprised as the block, 0x13CC2CC0[224], is only referenced
in some point in pPixmap; so after pPixmap is freed, the block will be
lost.

Walk around

After apply the patch below, valgrind no longer report the same memory leak.
And there is no obvious increment of memory of Xorg after running for ~4 hour.
Though I am not sure whether this patch will or will not cause other problem.

--- a/exa/exa_mixed.c
+++ b/exa/exa_mixed.c
@@ -266,6 +266,16 @@
             pExaPixmap->sys_ptr = NULL;
             pExaPixmap->pDamage = NULL;
         }
+
+        if(pExaPixmap->validSys.data != NULL &&
pExaPixmap->validSys.data != &RegionEmptyData) {
+            free(pExaPixmap->validSys.data);
+            pExaPixmap->validSys.data = NULL;
+        }
+
+        if(pExaPixmap->validFB.data != NULL &&
pExaPixmap->validFB.data != &RegionEmptyData) {
+            free(pExaPixmap->validFB.data);
+            pExaPixmap->validFB.data = NULL;
+        }
     }

     swap(pExaScr, pScreen, DestroyPixmap);

Jun MO
+target remote | vgdb
Remote debugging using | vgdb
relaying data between gdb and process 13478
warning: remote target does not support file transfer, attempting to access files from local filesystem.
Reading symbols from /usr/lib/xorg/Xorg.valgrind-testing...Reading symbols from /usr/lib/debug/.build-id/45/75f3ba6b6340d1a081380190f5dac37a0da9e4.debug...done.
done.
Reading symbols from /lib64/ld-linux-x86-64.so.2...Reading symbols from /usr/lib/debug/.build-id/96/0b130afb79f35905edd2f1f7ecea58c99da3ad.debug...done.
done.
0x0000000004000c20 in _start () from /lib64/ld-linux-x86-64.so.2
+c
Continuing.

Program received signal SIGTRAP, Trace/breakpoint trap.
0x00000000075bd5d7 in ioctl ()
    at ../sysdeps/unix/syscall-template.S:84
84	../sysdeps/unix/syscall-template.S: No such file or directory.
+c
Continuing.

Program received signal SIGTRAP, Trace/breakpoint trap.
0x00000000075bd5d7 in ioctl ()
    at ../sysdeps/unix/syscall-template.S:84
84	in ../sysdeps/unix/syscall-template.S
+c
Continuing.
[New Thread 13497]
[New Thread 13491]

Thread 2 received signal SIG33, Real-time event 33.
[Switching to Thread 13497]
0x00000000075c5fa3 in epoll_wait ()
    at ../sysdeps/unix/syscall-template.S:84
84	../sysdeps/unix/syscall-template.S: No such file or directory.
+c
Continuing.

Thread 3 received signal SIG33, Real-time event 33.
[Switching to Thread 13491]
0x00000000072c8b24 in futex_wait_cancelable (
    private=<optimized out>, expected=0, futex_word=0xb06d620)
    at ../sysdeps/unix/sysv/linux/futex-internal.h:88
88	../sysdeps/unix/sysv/linux/futex-internal.h: No such file or directory.
+c
Continuing.

Thread 2 received signal SIG33, Real-time event 33.
[Switching to Thread 13497]
0x00000000075c5fa3 in epoll_wait ()
    at ../sysdeps/unix/syscall-template.S:84
84	../sysdeps/unix/syscall-template.S: No such file or directory.
+c
Continuing.

Thread 3 received signal SIG33, Real-time event 33.
[Switching to Thread 13491]
0x00000000072c8b24 in futex_wait_cancelable (
    private=<optimized out>, expected=0, futex_word=0xb06d620)
    at ../sysdeps/unix/sysv/linux/futex-internal.h:88
88	../sysdeps/unix/sysv/linux/futex-internal.h: No such file or directory.
+c
Continuing.

Thread 1 received signal SIGTRAP, Trace/breakpoint trap.
[Switching to Thread 13478]
0x00000000075bd68d in writev ()
    at ../sysdeps/unix/syscall-template.S:84
84	../sysdeps/unix/syscall-template.S: No such file or directory.
+c
Continuing.

Thread 1 received signal SIGTRAP, Trace/breakpoint trap.
0x0000000004c2be1b in _vgr10050ZU_VgSoSynsomalloc_free (
    p=0x1307cd80) at m_replacemalloc/vg_replace_malloc.c:530
530	m_replacemalloc/vg_replace_malloc.c: No such file or directory.
+b pixmap.c:132
Breakpoint 1 at 0x189a00: file ../../../../dix/pixmap.c, line 132.
+c
Continuing.

####################### MANY LINES REMOVED ##################################

Thread 1 hit Breakpoint 1, FreePixmap (pPixmap=0x14a0d210)
    at ../../../../dix/pixmap.c:132
132	in ../../../../dix/pixmap.c
+monitor leak_check reachable
==13478== 224 (+224) bytes in 1 (+1) blocks are still reachable in loss record 2,567 of 3,164
==13478==    at 0x4C2ABEF: malloc (vg_replace_malloc.c:299)
==13478==    by 0x5E5FABA: pixman_rect_alloc (pixman-region.c:465)
==13478==    by 0x5E60F8B: pixman_op (pixman-region.c:828)
==13478==    by 0x5E62858: pixman_region_subtract (pixman-region.c:1987)
==13478==    by 0xAC09408: RegionSubtract (regionstr.h:271)
==13478==    by 0xAC097F5: exaCopyDirty (exa_migration_classic.c:128)
==13478==    by 0xAC09EDE: exaCopyDirtyToFb (exa_migration_classic.c:303)
==13478==    by 0xAC0C948: exaDoMigration_mixed (exa_migration_mixed.c:118)
==13478==    by 0xAC08536: exaDoMigration (exa.c:1132)
==13478==    by 0xAC0E928: exaHWCopyNtoN (exa_accel.c:468)
==13478==    by 0xAC0EED8: exaCopyNtoN (exa_accel.c:581)
==13478==    by 0x32A84B: miCopyRegion (micopy.c:121)
==13478==    by 0x32ADB2: miDoCopy (micopy.c:296)
==13478==    by 0xAC0F01B: exaCopyArea (exa_accel.c:608)
==13478==    by 0x2A32E5: damageCopyArea (damage.c:775)
==13478==    by 0x15A757: ProcCopyArea (dispatch.c:1722)
==13478==    by 0x156F48: Dispatch (dispatch.c:479)
==13478==    by 0x166152: dix_main (main.c:287)
==13478==    by 0x146B91: main (stubmain.c:34)
==13478== 
==13478== 26,200 (+200) bytes in 131 (+1) blocks are still reachable in loss record 3,126 of 3,164
==13478==    at 0x4C2ABEF: malloc (vg_replace_malloc.c:299)
==13478==    by 0x1899A5: AllocatePixmap (pixmap.c:119)
==13478==    by 0xB451823: fbCreatePixmapBpp (fbpixmap.c:53)
==13478==    by 0xB4519F3: fbCreatePixmap (fbpixmap.c:97)
==13478==    by 0xAC0B97D: exaCreatePixmap_mixed (exa_mixed.c:63)
==13478==    by 0x159A7F: ProcCreatePixmap (dispatch.c:1441)
==13478==    by 0x156F48: Dispatch (dispatch.c:479)
==13478==    by 0x166152: dix_main (main.c:287)
==13478==    by 0x146B91: main (stubmain.c:34)
==13478== 
==13478== LEAK SUMMARY:
==13478==    definitely lost: 119,350 (+0) bytes in 584 (+0) blocks
==13478==    indirectly lost: 2,591 (+0) bytes in 38 (+0) blocks
==13478==      possibly lost: 23,658 (+0) bytes in 193 (+0) blocks
==13478==    still reachable: 14,784,670 (+424) bytes in 21,242 (+2) blocks
==13478==         suppressed: 0 (+0) bytes in 0 (+0) blocks
==13478== 
+n
133	in ../../../../dix/pixmap.c
+monitor leak_check summary reachable
==13478== LEAK SUMMARY:
==13478==    definitely lost: 119,574 (+224) bytes in 585 (+1) blocks
==13478==    indirectly lost: 2,591 (+0) bytes in 38 (+0) blocks
==13478==      possibly lost: 23,658 (+0) bytes in 193 (+0) blocks
==13478==    still reachable: 14,784,246 (-424) bytes in 21,240 (-2) blocks
==13478==         suppressed: 0 (+0) bytes in 0 (+0) blocks
==13478== To see details of leaked memory, give 'full' arg to leak_check
==13478== 
+c
Continuing.

Thread 1 hit Breakpoint 1, FreePixmap (pPixmap=0x13cb2170)
    at ../../../../dix/pixmap.c:132
132	in ../../../../dix/pixmap.c
+monitor leak_check reachable
==13478== 224 (+224) bytes in 1 (+1) blocks are still reachable in loss record 2,567 of 3,164
==13478==    at 0x4C2ABEF: malloc (vg_replace_malloc.c:299)
==13478==    by 0x5E5FABA: pixman_rect_alloc (pixman-region.c:465)
==13478==    by 0x5E60F8B: pixman_op (pixman-region.c:828)
==13478==    by 0x5E62858: pixman_region_subtract (pixman-region.c:1987)
==13478==    by 0xAC09408: RegionSubtract (regionstr.h:271)
==13478==    by 0xAC097F5: exaCopyDirty (exa_migration_classic.c:128)
==13478==    by 0xAC09EDE: exaCopyDirtyToFb (exa_migration_classic.c:303)
==13478==    by 0xAC0C948: exaDoMigration_mixed (exa_migration_mixed.c:118)
==13478==    by 0xAC08536: exaDoMigration (exa.c:1132)
==13478==    by 0xAC0E928: exaHWCopyNtoN (exa_accel.c:468)
==13478==    by 0xAC0EED8: exaCopyNtoN (exa_accel.c:581)
==13478==    by 0x32A84B: miCopyRegion (micopy.c:121)
==13478==    by 0x32ADB2: miDoCopy (micopy.c:296)
==13478==    by 0xAC0F01B: exaCopyArea (exa_accel.c:608)
==13478==    by 0x2A32E5: damageCopyArea (damage.c:775)
==13478==    by 0x15A757: ProcCopyArea (dispatch.c:1722)
==13478==    by 0x156F48: Dispatch (dispatch.c:479)
==13478==    by 0x166152: dix_main (main.c:287)
==13478==    by 0x146B91: main (stubmain.c:34)
==13478== 
==13478== 26,200 (+200) bytes in 131 (+1) blocks are still reachable in loss record 3,126 of 3,164
==13478==    at 0x4C2ABEF: malloc (vg_replace_malloc.c:299)
==13478==    by 0x1899A5: AllocatePixmap (pixmap.c:119)
==13478==    by 0xB451823: fbCreatePixmapBpp (fbpixmap.c:53)
==13478==    by 0xB4519F3: fbCreatePixmap (fbpixmap.c:97)
==13478==    by 0xAC0B97D: exaCreatePixmap_mixed (exa_mixed.c:63)
==13478==    by 0x159A7F: ProcCreatePixmap (dispatch.c:1441)
==13478==    by 0x156F48: Dispatch (dispatch.c:479)
==13478==    by 0x166152: dix_main (main.c:287)
==13478==    by 0x146B91: main (stubmain.c:34)
==13478== 
==13478== LEAK SUMMARY:
==13478==    definitely lost: 119,574 (+0) bytes in 585 (+0) blocks
==13478==    indirectly lost: 2,591 (+0) bytes in 38 (+0) blocks
==13478==      possibly lost: 23,658 (+0) bytes in 193 (+0) blocks
==13478==    still reachable: 14,784,670 (+424) bytes in 21,242 (+2) blocks
==13478==         suppressed: 0 (+0) bytes in 0 (+0) blocks
==13478== 
+p *((ExaPixmapPrivPtr) (((void *) pPixmap->devPrivates)+0x18))
$1 = {area = 0x0, score = 0, use_gpu_copy = 1, sys_ptr = 0x0, 
  sys_pitch = 440, fb_ptr = 0x0, fb_pitch = 448, fb_size = 0, 
  accel_blocked = 0, pDamage = 0x0, validSys = {extents = {
      x1 = 0, y1 = 0, x2 = 110, y2 = 80}, data = 0x13cc2cc0}, 
  validFB = {extents = {x1 = 0, y1 = 0, x2 = 110, y2 = 80}, 
    data = 0x0}, driverPriv = 0x0}
+p *((ExaPixmapPrivPtr) (((void *) pPixmap->devPrivates)+0x18))
$2 = {area = 0x0, score = 0, use_gpu_copy = 1, sys_ptr = 0x0, 
  sys_pitch = 440, fb_ptr = 0x0, fb_pitch = 448, fb_size = 0, 
  accel_blocked = 0, pDamage = 0x0, validSys = {extents = {
      x1 = 0, y1 = 0, x2 = 110, y2 = 80}, data = 0x13cc2cc0}, 
  validFB = {extents = {x1 = 0, y1 = 0, x2 = 110, y2 = 80}, 
    data = 0x0}, driverPriv = 0x0}
+p &(((ExaPixmapPrivPtr) (((void *) pPixmap->devPrivates)+0x18))->validSys.data)
$3 = (pixman_region16_data_t **) 0x13cb2218
+monitor block_list 2567
==13478== 224 (+224) bytes in 1 (+1) blocks are still reachable in loss record 2,567 of 3,164
==13478==    at 0x4C2ABEF: malloc (vg_replace_malloc.c:299)
==13478==    by 0x5E5FABA: pixman_rect_alloc (pixman-region.c:465)
==13478==    by 0x5E60F8B: pixman_op (pixman-region.c:828)
==13478==    by 0x5E62858: pixman_region_subtract (pixman-region.c:1987)
==13478==    by 0xAC09408: RegionSubtract (regionstr.h:271)
==13478==    by 0xAC097F5: exaCopyDirty (exa_migration_classic.c:128)
==13478==    by 0xAC09EDE: exaCopyDirtyToFb (exa_migration_classic.c:303)
==13478==    by 0xAC0C948: exaDoMigration_mixed (exa_migration_mixed.c:118)
==13478==    by 0xAC08536: exaDoMigration (exa.c:1132)
==13478==    by 0xAC0E928: exaHWCopyNtoN (exa_accel.c:468)
==13478==    by 0xAC0EED8: exaCopyNtoN (exa_accel.c:581)
==13478==    by 0x32A84B: miCopyRegion (micopy.c:121)
==13478==    by 0x32ADB2: miDoCopy (micopy.c:296)
==13478==    by 0xAC0F01B: exaCopyArea (exa_accel.c:608)
==13478==    by 0x2A32E5: damageCopyArea (damage.c:775)
==13478==    by 0x15A757: ProcCopyArea (dispatch.c:1722)
==13478==    by 0x156F48: Dispatch (dispatch.c:479)
==13478==    by 0x166152: dix_main (main.c:287)
==13478==    by 0x146B91: main (stubmain.c:34)
==13478== 0x13CC2CC0[224]
+monitor who_points_at 0x13cc2cc0
==13478== Searching for pointers to 0x13cc2cc0
==13478== *0x13cb2218 points at 0x13cc2cc0
 Address 0x13cb2218 is 168 bytes inside a block of size 200 alloc'd
==13478==    at 0x4C2ABEF: malloc (vg_replace_malloc.c:299)
==13478==    by 0x1899A5: AllocatePixmap (pixmap.c:119)
==13478==    by 0xB451823: fbCreatePixmapBpp (fbpixmap.c:53)
==13478==    by 0xB4519F3: fbCreatePixmap (fbpixmap.c:97)
==13478==    by 0xAC0B97D: exaCreatePixmap_mixed (exa_mixed.c:63)
==13478==    by 0x159A7F: ProcCreatePixmap (dispatch.c:1441)
==13478==    by 0x156F48: Dispatch (dispatch.c:479)
==13478==    by 0x166152: dix_main (main.c:287)
==13478==    by 0x146B91: main (stubmain.c:34)
+n
133	in ../../../../dix/pixmap.c
+monitor leak_check reachable
==13478== 106,832 (+224) bytes in 466 (+1) blocks are definitely lost in loss record 3,153 of 3,164
==13478==    at 0x4C2ABEF: malloc (vg_replace_malloc.c:299)
==13478==    by 0x5E5FABA: pixman_rect_alloc (pixman-region.c:465)
==13478==    by 0x5E60F8B: pixman_op (pixman-region.c:828)
==13478==    by 0x5E62858: pixman_region_subtract (pixman-region.c:1987)
==13478==    by 0xAC09408: RegionSubtract (regionstr.h:271)
==13478==    by 0xAC097F5: exaCopyDirty (exa_migration_classic.c:128)
==13478==    by 0xAC09EDE: exaCopyDirtyToFb (exa_migration_classic.c:303)
==13478==    by 0xAC0C948: exaDoMigration_mixed (exa_migration_mixed.c:118)
==13478==    by 0xAC08536: exaDoMigration (exa.c:1132)
==13478==    by 0xAC0E928: exaHWCopyNtoN (exa_accel.c:468)
==13478==    by 0xAC0EED8: exaCopyNtoN (exa_accel.c:581)
==13478==    by 0x32A84B: miCopyRegion (micopy.c:121)
==13478==    by 0x32ADB2: miDoCopy (micopy.c:296)
==13478==    by 0xAC0F01B: exaCopyArea (exa_accel.c:608)
==13478==    by 0x2A32E5: damageCopyArea (damage.c:775)
==13478==    by 0x15A757: ProcCopyArea (dispatch.c:1722)
==13478==    by 0x156F48: Dispatch (dispatch.c:479)
==13478==    by 0x166152: dix_main (main.c:287)
==13478==    by 0x146B91: main (stubmain.c:34)
==13478== 
==13478== LEAK SUMMARY:
==13478==    definitely lost: 119,798 (+224) bytes in 586 (+1) blocks
==13478==    indirectly lost: 2,591 (+0) bytes in 38 (+0) blocks
==13478==      possibly lost: 23,658 (+0) bytes in 193 (+0) blocks
==13478==    still reachable: 14,784,246 (-424) bytes in 21,240 (-2) blocks
==13478==         suppressed: 0 (+0) bytes in 0 (+0) blocks
==13478== 
+monitor block_list 3153
==13478== 106,832 (+224) bytes in 466 (+1) blocks are definitely lost in loss record 3,153 of 3,164
==13478==    at 0x4C2ABEF: malloc (vg_replace_malloc.c:299)
==13478==    by 0x5E5FABA: pixman_rect_alloc (pixman-region.c:465)
==13478==    by 0x5E60F8B: pixman_op (pixman-region.c:828)
==13478==    by 0x5E62858: pixman_region_subtract (pixman-region.c:1987)
==13478==    by 0xAC09408: RegionSubtract (regionstr.h:271)
==13478==    by 0xAC097F5: exaCopyDirty (exa_migration_classic.c:128)
==13478==    by 0xAC09EDE: exaCopyDirtyToFb (exa_migration_classic.c:303)
==13478==    by 0xAC0C948: exaDoMigration_mixed (exa_migration_mixed.c:118)
==13478==    by 0xAC08536: exaDoMigration (exa.c:1132)
==13478==    by 0xAC0E928: exaHWCopyNtoN (exa_accel.c:468)
==13478==    by 0xAC0EED8: exaCopyNtoN (exa_accel.c:581)
==13478==    by 0x32A84B: miCopyRegion (micopy.c:121)
==13478==    by 0x32ADB2: miDoCopy (micopy.c:296)
==13478==    by 0xAC0F01B: exaCopyArea (exa_accel.c:608)
==13478==    by 0x2A32E5: damageCopyArea (damage.c:775)
==13478==    by 0x15A757: ProcCopyArea (dispatch.c:1722)
==13478==    by 0x156F48: Dispatch (dispatch.c:479)
==13478==    by 0x166152: dix_main (main.c:287)
==13478==    by 0x146B91: main (stubmain.c:34)
==13478== 0x90FA410[224]
==13478== 0x90FD240[256]

####################### MANY LINES REMOVED ##################################

==13478== 0x13CAA200[256]
==13478== 0x13CAE960[256]
==13478== 0x13CB1D20[224]
==13478== 0x13CB8CC0[256]
==13478== 0x13CBCF30[272]
==13478== 0x13CC2CC0[224]
==13478== 0x13CC3E20[224]
==13478== 0x13CCD130[160]
==13478== 0x13CD32F0[256]
==13478== 0x13CDA2A0[256]

####################### MANY LINES REMOVED ##################################

==13478== 0x16EB5F70[256]
==13478== 0x176A4C10[256]
+bt
#0  FreePixmap (pPixmap=0x13cb2170)
    at ../../../../dix/pixmap.c:133
#1  0x000000000b451a31 in fbDestroyPixmap (pPixmap=0x13cb2170)
    at ../../../../fb/fbpixmap.c:105
#2  0x000000000ac0c2b9 in exaDestroyPixmap_mixed (
    pPixmap=0x13cb2170) at ../../../../exa/exa_mixed.c:272
#3  0x00000000002a6474 in damageDestroyPixmap (pPixmap=0x13cb2170)
    at ../../../../../miext/damage/damage.c:1484
#4  0x0000000000240145 in XvDestroyPixmap (pPix=0x13cb2170)
    at ../../../../Xext/xvmain.c:369
#5  0x00000000001598ca in dixDestroyPixmap (value=0x13cb2170, 
    pid=31463359) at ../../../../dix/dispatch.c:1390
#6  0x00000000001949de in doFreeResource (res=0x13c72700, skip=0)
    at ../../../../dix/resource.c:880
#7  0x0000000000194b33 in FreeResource (id=31463359, 
    skipDeleteFuncType=0) at ../../../../dix/resource.c:910
#8  0x0000000000159c07 in ProcFreePixmap (client=0x13c76b60)
    at ../../../../dix/dispatch.c:1471
#9  0x0000000000156f49 in Dispatch ()
    at ../../../../dix/dispatch.c:479
#10 0x0000000000166153 in dix_main (argc=10, argv=0x1fff000cc8, 
    envp=0x1fff000d20) at ../../../../dix/main.c:287
#11 0x0000000000146b92 in main (argc=10, argv=0x1fff000cc8, 
    envp=0x1fff000d20) at ../../../../dix/stubmain.c:34
+bt full
#0  FreePixmap (pPixmap=0x13cb2170)
    at ../../../../dix/pixmap.c:133
No locals.
#1  0x000000000b451a31 in fbDestroyPixmap (pPixmap=0x13cb2170)
    at ../../../../fb/fbpixmap.c:105
No locals.
#2  0x000000000ac0c2b9 in exaDestroyPixmap_mixed (
    pPixmap=0x13cb2170) at ../../../../exa/exa_mixed.c:272
        pScreen = 0x93082f0
        pExaScr = 0x9341b60
        ret = 31
#3  0x00000000002a6474 in damageDestroyPixmap (pPixmap=0x13cb2170)
    at ../../../../../miext/damage/damage.c:1484
        pScreen = 0x93082f0
        pScrPriv = 0x9342ec0
#4  0x0000000000240145 in XvDestroyPixmap (pPix=0x13cb2170)
    at ../../../../Xext/xvmain.c:369
        pScreen = 0x93082f0
        status = 0
#5  0x00000000001598ca in dixDestroyPixmap (value=0x13cb2170, 
    pid=31463359) at ../../../../dix/dispatch.c:1390
        pPixmap = 0x13cb2170
#6  0x00000000001949de in doFreeResource (res=0x13c72700, skip=0)
    at ../../../../dix/resource.c:880
No locals.
#7  0x0000000000194b33 in FreeResource (id=31463359, 
    skipDeleteFuncType=0) at ../../../../dix/resource.c:910
        rtype = 1073741826
        cid = 15
        res = 0x13c72700
        prev = 0x16761990
        head = 0x16761990
        eltptr = 0x5f5628 <clientTable+488>
        elements = 119
#8  0x0000000000159c07 in ProcFreePixmap (client=0x13c76b60)
    at ../../../../dix/dispatch.c:1471
        pMap = 0x13cb2170
        rc = 0
        stuff = 0x16af4248
#9  0x0000000000156f49 in Dispatch ()
    at ../../../../dix/dispatch.c:479
        result = 0
        client = 0x13c76b60
        start_tick = 13825
#10 0x0000000000166153 in dix_main (argc=10, argv=0x1fff000cc8, 
    envp=0x1fff000d20) at ../../../../dix/main.c:287
        i = 1
        alwaysCheckForInput = {0, 1}
#11 0x0000000000146b92 in main (argc=10, argv=0x1fff000cc8, 
    envp=0x1fff000d20) at ../../../../dix/stubmain.c:34
No locals.
+disable 1
+c
Continuing.

Thread 1 received signal SIGTRAP, Trace/breakpoint trap.
0x00000000075bd5d7 in ioctl ()
    at ../sysdeps/unix/syscall-template.S:84
84	../sysdeps/unix/syscall-template.S: No such file or directory.
quit
+quit
Detaching from program: /usr/lib/xorg/Xorg.valgrind-testing, Remote target
Ending remote debugging.

Reply to: