[cairo] pixman "Simplify clipping rule" problems

Koen Kooi k.kooi at student.utwente.nl
Wed Jun 24 00:59:13 PDT 2009


On 23-06-09 22:00, Siarhei Siamashka wrote:
> Hi,
>
> Sorry for not being able to report it earlier, but I was on a vacation.
> Since the commit 78ca4eea6467dbb6b9da1198b9526750a0a8dca3 (Simplify clipping
> rule), scaling test reveals some problems:
>
> git reset --hard 78ca4eea6467dbb6b9da1198b9526750a0a8dca3
> ./autogen.sh
> ./configure --disable-mmx --disable-sse2 --disable-shared
> make
> valgrind test/scaling-test
>
> ...
> ==17940== Invalid read of size 4
> ==17940==    at 0x8061669: fbCompositeSrc_x888x0565 (pixman-fast-path.c:787)
> ==17940==    by 0x80535C0: walk_region_internal (pixman-utils.c:596)
> ==17940==    by 0x8053B2F: _pixman_run_fast_path (pixman-utils.c:847)
> ==17940==    by 0x8061CEF: fast_path_composite (pixman-fast-path.c:1214)
> ==17940==    by 0x80504AA: pixman_image_composite (pixman-pict.c:132)
> ==17940==    by 0x8048C9A: test_composite (scaling-test.c:280)
> ==17940==    by 0x80490D6: main (scaling-test.c:325)
> ==17940==  Address 0x41e97e4 is 4 bytes before a block of size 480 alloc'd
> ==17940==    at 0x4024D2E: malloc (vg_replace_malloc.c:207)
> ==17940==    by 0x80489D0: test_composite (scaling-test.c:196)
> ==17940==    by 0x80490D6: main (scaling-test.c:325)
> ==17940==
> ==17940== Invalid read of size 1
> ==17940==    at 0x4025940: memcpy (mc_replace_strmem.c:402)
> ==17940==    by 0x8061EEA: fbCompositeSrc_8888xx888 (pixman-fast-path.c:1017)
> ==17940==    by 0x80535C0: walk_region_internal (pixman-utils.c:596)
> ==17940==    by 0x8053B2F: _pixman_run_fast_path (pixman-utils.c:847)
> ==17940==    by 0x8061CEF: fast_path_composite (pixman-fast-path.c:1214)
> ==17940==    by 0x80504AA: pixman_image_composite (pixman-pict.c:132)
> ==17940==    by 0x8048C9A: test_composite (scaling-test.c:280)
> ==17940==    by 0x80490D6: main (scaling-test.c:325)
> ==17940==  Address 0x43fc263 is 5 bytes before a block of size 96 alloc'd
> ==17940==    at 0x4024D2E: malloc (vg_replace_malloc.c:207)
> ==17940==    by 0x80489F1: test_composite (scaling-test.c:197)
> ==17940==    by 0x80490D6: main (scaling-test.c:325)
> ...
>
> The final crc32 checksum is also different, but it is to be expected because
> source clipping behavior changed.
>
> The main source of problem are invalid memory accesses.

Would that coulde the "glibc: detected double free" and random crashes 
I'm seeing? I switched back to 0.13.x to stop my X login manager from 
crashing, but I haven't found the time to look into why it's crashing.

regards,

Koen



More information about the cairo mailing list