[cairo] For libsvg-cairo, glibc-detected corrupted double-linked list detected.

charles charles.wang at akomedia.com
Mon Jul 25 03:50:37 PDT 2005


Hi:

When I do some transformation before call svg_cairo_render, and error
'*** glibc detected *** corrupted double-linked list: 0x08eea120 ***' is
encountered. (If I no transformation is applied, this error is not
occurred.).

My test program is very simple, so I think it might be caused by
'libsvg-cairo'. (Forgive me if it is my fault).

The attachment 'svg-grid.c' is my test program.
The command lines that I used to compile it are:
gcc -g -Wall -I/usr/include/cairo -c -o svg-grid.o svg-grid.c
gcc -o svg-grid svg-grid.o -lcairo -lsvg -lsvg-cairo -lpng

The attachment 'mm.png' and 'p01.svg' are graphics used by my test
program.

The attachment 'valgrind.output' is the output of:
valgrind --tool=memcheck --leak-check=yes ./svg-grid

Thanks greatly.

Charles  July 25, 2005.

-------------- next part --------------
A non-text attachment was scrubbed...
Name: mm.png
Type: image/png
Size: 58276 bytes
Desc: not available
Url : http://lists.freedesktop.org/archives/cairo/attachments/20050725/1c2878be/mm.png
-------------- next part --------------
A non-text attachment was scrubbed...
Name: p01.svg
Type: image/svg+xml
Size: 367 bytes
Desc: not available
Url : http://lists.freedesktop.org/archives/cairo/attachments/20050725/1c2878be/p01.svg
-------------- next part --------------
A non-text attachment was scrubbed...
Name: svg-grid.c
Type: image/svg+xml
Size: 2673 bytes
Desc: not available
Url : http://lists.freedesktop.org/archives/cairo/attachments/20050725/1c2878be/svg-grid.svgz
-------------- next part --------------
==6885== Memcheck, a memory error detector for x86-linux.
==6885== Copyright (C) 2002-2004, and GNU GPL'd, by Julian Seward et al.
==6885== Using valgrind-2.2.0, a program supervision framework for x86-linux.
==6885== Copyright (C) 2000-2004, and GNU GPL'd, by Julian Seward et al.
==6885== For more details, rerun with: -v
==6885== 
==6885== Conditional jump or move depends on uninitialised value(s)
==6885==    at 0x5647A2: unpremultiply_data (cairo-png.c:54)
==6885==    by 0x7BE3692: png_do_write_transformations (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBEA2: png_write_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBFB8: png_write_image (in /usr/lib/libpng12.so.0.1.2.7)
==6885== 
==6885== Conditional jump or move depends on uninitialised value(s)
==6885==    at 0x7BD75CE: png_write_find_filter (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBE88: png_write_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBFB8: png_write_image (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x564A28: write_png (cairo-png.c:189)
==6885== 
==6885== Conditional jump or move depends on uninitialised value(s)
==6885==    at 0x7BD771C: png_write_find_filter (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBE88: png_write_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBFB8: png_write_image (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x564A28: write_png (cairo-png.c:189)
==6885== 
==6885== Conditional jump or move depends on uninitialised value(s)
==6885==    at 0x7BD7753: png_write_find_filter (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBE88: png_write_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBFB8: png_write_image (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x564A28: write_png (cairo-png.c:189)
==6885== 
==6885== Conditional jump or move depends on uninitialised value(s)
==6885==    at 0x7BD776E: png_write_find_filter (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBE88: png_write_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBFB8: png_write_image (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x564A28: write_png (cairo-png.c:189)
==6885== 
==6885== Conditional jump or move depends on uninitialised value(s)
==6885==    at 0x7BD779B: png_write_find_filter (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBE88: png_write_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBFB8: png_write_image (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x564A28: write_png (cairo-png.c:189)
==6885== 
==6885== Conditional jump or move depends on uninitialised value(s)
==6885==    at 0x7BD76AF: png_write_find_filter (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBE88: png_write_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBFB8: png_write_image (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x564A28: write_png (cairo-png.c:189)
==6885== 
==6885== Conditional jump or move depends on uninitialised value(s)
==6885==    at 0x7BD767B: png_write_find_filter (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBE88: png_write_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBFB8: png_write_image (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x564A28: write_png (cairo-png.c:189)
==6885== 
==6885== Conditional jump or move depends on uninitialised value(s)
==6885==    at 0x7BD789C: png_write_find_filter (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBE88: png_write_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBFB8: png_write_image (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x564A28: write_png (cairo-png.c:189)
==6885== 
==6885== Conditional jump or move depends on uninitialised value(s)
==6885==    at 0x7BD7945: png_write_find_filter (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBE88: png_write_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBFB8: png_write_image (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x564A28: write_png (cairo-png.c:189)
==6885== 
==6885== Conditional jump or move depends on uninitialised value(s)
==6885==    at 0x7BD799A: png_write_find_filter (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBE88: png_write_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBFB8: png_write_image (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x564A28: write_png (cairo-png.c:189)
==6885== 
==6885== Conditional jump or move depends on uninitialised value(s)
==6885==    at 0x7BD79B5: png_write_find_filter (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBE88: png_write_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBFB8: png_write_image (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x564A28: write_png (cairo-png.c:189)
==6885== 
==6885== Conditional jump or move depends on uninitialised value(s)
==6885==    at 0x7BD79D9: png_write_find_filter (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBE88: png_write_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBFB8: png_write_image (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x564A28: write_png (cairo-png.c:189)
==6885== 
==6885== Conditional jump or move depends on uninitialised value(s)
==6885==    at 0x7BD7ECF: png_write_find_filter (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBE88: png_write_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBFB8: png_write_image (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x564A28: write_png (cairo-png.c:189)
==6885== 
==6885== Conditional jump or move depends on uninitialised value(s)
==6885==    at 0x7BD810C: png_write_find_filter (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBE88: png_write_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBFB8: png_write_image (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x564A28: write_png (cairo-png.c:189)
==6885== 
==6885== Conditional jump or move depends on uninitialised value(s)
==6885==    at 0x7BD815D: png_write_find_filter (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBE88: png_write_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBFB8: png_write_image (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x564A28: write_png (cairo-png.c:189)
==6885== 
==6885== Conditional jump or move depends on uninitialised value(s)
==6885==    at 0x7BD8180: png_write_find_filter (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBE88: png_write_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBFB8: png_write_image (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x564A28: write_png (cairo-png.c:189)
==6885== 
==6885== Conditional jump or move depends on uninitialised value(s)
==6885==    at 0x7BD81B1: png_write_find_filter (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBE88: png_write_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BDBFB8: png_write_image (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x564A28: write_png (cairo-png.c:189)
==6885== 
==6885== Use of uninitialised value of size 4
==6885==    at 0xC38BC2: (within /usr/lib/libz.so.1.2.1.2)
==6885==    by 0xC37505: deflate (in /usr/lib/libz.so.1.2.1.2)
==6885==    by 0x7BD746B: png_write_filtered_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BD782F: png_write_find_filter (in /usr/lib/libpng12.so.0.1.2.7)
==6885== 
==6885== Use of uninitialised value of size 4
==6885==    at 0xC38BD6: (within /usr/lib/libz.so.1.2.1.2)
==6885==    by 0xC37505: deflate (in /usr/lib/libz.so.1.2.1.2)
==6885==    by 0x7BD746B: png_write_filtered_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BD782F: png_write_find_filter (in /usr/lib/libpng12.so.0.1.2.7)
==6885== 
==6885== Use of uninitialised value of size 4
==6885==    at 0xC38F46: (within /usr/lib/libz.so.1.2.1.2)
==6885==    by 0xC37505: deflate (in /usr/lib/libz.so.1.2.1.2)
==6885==    by 0x7BD746B: png_write_filtered_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BD782F: png_write_find_filter (in /usr/lib/libpng12.so.0.1.2.7)
==6885== 
==6885== Conditional jump or move depends on uninitialised value(s)
==6885==    at 0xC3818B: (within /usr/lib/libz.so.1.2.1.2)
==6885==    by 0xC39061: (within /usr/lib/libz.so.1.2.1.2)
==6885==    by 0xC37505: deflate (in /usr/lib/libz.so.1.2.1.2)
==6885==    by 0x7BD746B: png_write_filtered_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885== 
==6885== Conditional jump or move depends on uninitialised value(s)
==6885==    at 0xC38195: (within /usr/lib/libz.so.1.2.1.2)
==6885==    by 0xC39061: (within /usr/lib/libz.so.1.2.1.2)
==6885==    by 0xC37505: deflate (in /usr/lib/libz.so.1.2.1.2)
==6885==    by 0x7BD746B: png_write_filtered_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885== 
==6885== Conditional jump or move depends on uninitialised value(s)
==6885==    at 0xC3819F: (within /usr/lib/libz.so.1.2.1.2)
==6885==    by 0xC39061: (within /usr/lib/libz.so.1.2.1.2)
==6885==    by 0xC37505: deflate (in /usr/lib/libz.so.1.2.1.2)
==6885==    by 0x7BD746B: png_write_filtered_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885== 
==6885== Conditional jump or move depends on uninitialised value(s)
==6885==    at 0xC381AA: (within /usr/lib/libz.so.1.2.1.2)
==6885==    by 0xC39061: (within /usr/lib/libz.so.1.2.1.2)
==6885==    by 0xC37505: deflate (in /usr/lib/libz.so.1.2.1.2)
==6885==    by 0x7BD746B: png_write_filtered_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885== 
==6885== Conditional jump or move depends on uninitialised value(s)
==6885==    at 0xC381C4: (within /usr/lib/libz.so.1.2.1.2)
==6885==    by 0xC39061: (within /usr/lib/libz.so.1.2.1.2)
==6885==    by 0xC37505: deflate (in /usr/lib/libz.so.1.2.1.2)
==6885==    by 0x7BD746B: png_write_filtered_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885== 
==6885== Conditional jump or move depends on uninitialised value(s)
==6885==    at 0xC381D4: (within /usr/lib/libz.so.1.2.1.2)
==6885==    by 0xC39061: (within /usr/lib/libz.so.1.2.1.2)
==6885==    by 0xC37505: deflate (in /usr/lib/libz.so.1.2.1.2)
==6885==    by 0x7BD746B: png_write_filtered_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885== 
==6885== Conditional jump or move depends on uninitialised value(s)
==6885==    at 0xC381E4: (within /usr/lib/libz.so.1.2.1.2)
==6885==    by 0xC39061: (within /usr/lib/libz.so.1.2.1.2)
==6885==    by 0xC37505: deflate (in /usr/lib/libz.so.1.2.1.2)
==6885==    by 0x7BD746B: png_write_filtered_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885== 
==6885== Conditional jump or move depends on uninitialised value(s)
==6885==    at 0xC381F4: (within /usr/lib/libz.so.1.2.1.2)
==6885==    by 0xC39061: (within /usr/lib/libz.so.1.2.1.2)
==6885==    by 0xC37505: deflate (in /usr/lib/libz.so.1.2.1.2)
==6885==    by 0x7BD746B: png_write_filtered_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885== 
==6885== Conditional jump or move depends on uninitialised value(s)
==6885==    at 0xC38204: (within /usr/lib/libz.so.1.2.1.2)
==6885==    by 0xC39061: (within /usr/lib/libz.so.1.2.1.2)
==6885==    by 0xC37505: deflate (in /usr/lib/libz.so.1.2.1.2)
==6885==    by 0x7BD746B: png_write_filtered_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885== 
==6885== Conditional jump or move depends on uninitialised value(s)
==6885==    at 0xC38214: (within /usr/lib/libz.so.1.2.1.2)
==6885==    by 0xC39061: (within /usr/lib/libz.so.1.2.1.2)
==6885==    by 0xC37505: deflate (in /usr/lib/libz.so.1.2.1.2)
==6885==    by 0x7BD746B: png_write_filtered_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885== 
==6885== Conditional jump or move depends on uninitialised value(s)
==6885==    at 0xC38224: (within /usr/lib/libz.so.1.2.1.2)
==6885==    by 0xC39061: (within /usr/lib/libz.so.1.2.1.2)
==6885==    by 0xC37505: deflate (in /usr/lib/libz.so.1.2.1.2)
==6885==    by 0x7BD746B: png_write_filtered_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885== 
==6885== Conditional jump or move depends on uninitialised value(s)
==6885==    at 0xC38234: (within /usr/lib/libz.so.1.2.1.2)
==6885==    by 0xC39061: (within /usr/lib/libz.so.1.2.1.2)
==6885==    by 0xC37505: deflate (in /usr/lib/libz.so.1.2.1.2)
==6885==    by 0x7BD746B: png_write_filtered_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885== 
==6885== Use of uninitialised value of size 4
==6885==    at 0xC38D70: (within /usr/lib/libz.so.1.2.1.2)
==6885==    by 0xC37505: deflate (in /usr/lib/libz.so.1.2.1.2)
==6885==    by 0x7BD746B: png_write_filtered_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BD782F: png_write_find_filter (in /usr/lib/libpng12.so.0.1.2.7)
==6885== 
==6885== Use of uninitialised value of size 4
==6885==    at 0xC38D87: (within /usr/lib/libz.so.1.2.1.2)
==6885==    by 0xC37505: deflate (in /usr/lib/libz.so.1.2.1.2)
==6885==    by 0x7BD746B: png_write_filtered_row (in /usr/lib/libpng12.so.0.1.2.7)
==6885==    by 0x7BD782F: png_write_find_filter (in /usr/lib/libpng12.so.0.1.2.7)
==6885== 
==6885== More than 30000 total errors detected.  I'm not reporting any more.
==6885== Final error counts will be inaccurate.  Go fix your program!
==6885== Rerun with --error-limit=no to disable this cutoff.  Note
==6885== that errors may occur in your program without prior warning from
==6885== Valgrind, because errors are no longer being displayed.
==6885== 
==6885== 
==6885== ERROR SUMMARY: 30000 errors from 35 contexts (suppressed: 31 from 1)
==6885== malloc/free: in use at exit: 638 bytes in 19 blocks.
==6885== malloc/free: 1395 allocs, 1376 frees, 5765480 bytes allocated.
==6885== For counts of detected errors, rerun with: -v
==6885== searching for pointers to 19 not-freed blocks.
==6885== checked 5142804 bytes.
==6885== 
==6885== LEAK SUMMARY:
==6885==    definitely lost: 0 bytes in 0 blocks.
==6885==    possibly lost:   0 bytes in 0 blocks.
==6885==    still reachable: 438 bytes in 18 blocks.
==6885==         suppressed: 200 bytes in 1 blocks.
==6885== Reachable blocks (those to which a pointer was found) are not shown.
==6885== To see them, rerun with: --show-reachable=yes


More information about the cairo mailing list