Regression problem with libcairo2 (1.12.2) found in Quantal

Bug #1119304 reported by Finnian Reilly
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
cairo
Fix Released
Medium
cairo (Ubuntu)
Fix Released
Low
Unassigned

Bug Description

 The version of libcairo2 found in Ubuntu Quantal (1.12.2) and Raring (1.12.10) introduces a rendering bug that was not present in Oneiric (1.10.2)

The rendering problem shows up when using the rsvg utility to convert particular SVG files to PNG format. (See package librsvg2-bin) When converting particular files, major artifacts are found in the output. At first I thought the bug was in librsvg2 but after some investigation I traced the problem to libcairo2. I was able to prove this by setting LD_LIBRARY_PATH to override the Quantal version with the Oneiric version. The artifacts then disappeared.

TO REPRODUCE THE BUG
This assumes you are running Ubuntu 12.10 Quantal. Download the following test SVG file into a directory and use gunzip to unpack it.
http://www.eiffel-loop.com/download/waterfall.svg.gz

Download the following Python test script into the same directory:
http://www.eiffel-loop.com/download/scaling.py

import subprocess
for width in range (400, 900, 100):
 print 'Converting to width:', width
 subprocess.call (['rsvg', '--width', str (width), 'waterfall.svg', 'waterfall.%s.png' % width])

Make sure package librsvg2-bin is installed.

Run the script from the command line. The script outputs 5 PNG files ranging in width from 400 to 800. The first and last PNG do not have any problem, but the 500, 600 and 700 width files all have major artifacts.

TESTING LIBCAIRO2 VERSIONS
Create a subdirectory 'libs'. Into this directory extract the shared object 'libcairo.so.2.xxxxx.x' from the libcairo2 debian packages for Raring and Oneiric. Select the one for testing by creating a link. This selects the 1.10.2 version for example

    ln libs/libcairo.so.2.11000.2 libs/libcairo.so.2

set the library path as follows

export LD_LIBRARY_PATH=libs

Run the test script again and examine the output. You will find that the 1.10.2 version produces images without any artifacts.

Revision history for this message
Finnian Reilly (finnian-z) wrote :

Attached is the SVG test file for the test script

Revision history for this message
Finnian Reilly (finnian-z) wrote :

Python test script

Revision history for this message
In , Finnian Reilly (finnian-z) wrote :

Created attachment 74421
Test SVG file for script scaling.py

The 1.12.2 and 1.12.10 versions of libcairo2 introduces a rendering bug that was not present in version 1.10.2. It is possible the bug may also be in later versions.

The rendering problem shows up when using the rsvg utility to convert the attached SVG file to PNG format. (See package librsvg2-bin)

TO REPRODUCE THE BUG
On my machine I am running Ubuntu 12.10 amd64 which has libcairo2-1.12.2. Save the attached file 'waterfall.svg.gz' and Python script 'scaling.py' into a test directory. Unzip the SVG file with gunzip. Make sure package librsvg2-bin is installed.

File: scaling.py
import subprocess
for width in range (400, 900, 100):
    print 'Converting to width:', width
    subprocess.call (['rsvg', '--width', str (width), 'waterfall.svg', ,waterfall.%s.png' % width])

Run the script from the command line. The script outputs 5 PNG files ranging in width from 400 to 800. The first and last PNG do not have any problem, but the 500, 600 and 700 width files all have major artifacts.

TESTING VARIOUS LIBCAIRO2 VERSIONS
Create a subdirectory 'libs'. Into this directory extract the shared object 'libcairo.so.2.xxxxx.x' for various versions. Select the one for testing by creating a link. This selects the 1.10.2 version:

    ln libs/libcairo.so.2.11000.2 libs/libcairo.so.2

set the library path as follows

export LD_LIBRARY_PATH=libs

Run the test script again and examine the output. You will find that the 1.10.2 version produces images without any artifacts.

This bug has also been reported here with a different wording.+
https://bugs.launchpad.net/ubuntu/+source/cairo/+bug/1119304

Revision history for this message
In , Finnian Reilly (finnian-z) wrote :

Created attachment 74422
Python test script for waterfal.svg

Use the script to reproduce the bug

Revision history for this message
In , Finnian Reilly (finnian-z) wrote :

Created attachment 74423
Compressed SVG test file for script

The first time I uploaded it I forgot to set the content type to 'auto-detect'.

Revision history for this message
In , Finnian Reilly (finnian-z) wrote :

Comment on attachment 74421
Test SVG file for script scaling.py

Please ignore this bad upload. I don't know how to delete it.

Revision history for this message
Finnian Reilly (finnian-z) wrote :

This bug has now been reported to the Cairo developers here:
https://bugs.freedesktop.org/show_bug.cgi?id=60489

Revision history for this message
In , Chris Wilson (ickle) wrote :

commit 8cfbdf2f02ba01d5638a91c9f3f7fc228b402caa
Author: Chris Wilson <email address hidden>
Date: Fri Feb 8 13:10:25 2013 +0000

    polygon: Only rely on the computed boundary intersections for crossing edges

    If we need to extrapolate the edge to the boundary, then we run the risk
    of an overflow for an immaterial result. So if the edge does not cross
    the boundary, we can simply use the corresponding end-point and not emit
    the boundary segment.

    Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=60489
    Signed-off-by: Chris Wilson <email address hidden>

Revision history for this message
Finnian Reilly (finnian-z) wrote :

Cairo developer Chris Wilson has found a fix for this bug but it will not be available until the next release after the current version 1.12.12

Revision history for this message
Sebastien Bacher (seb128) wrote :

Thank you for your bug report

Changed in cairo (Ubuntu):
importance: Undecided → Low
status: New → In Progress
affects: librsvg → cairo
Changed in cairo:
importance: Undecided → Unknown
status: New → Unknown
Revision history for this message
Sebastien Bacher (seb128) wrote :

Thank you for your bug report and for report it upstream as well

Changed in cairo:
importance: Unknown → Medium
status: Unknown → Fix Released
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package cairo - 1.12.14-0ubuntu1

---------------
cairo (1.12.14-0ubuntu1) raring; urgency=low

  * New upstream version, fix rendering issue introduced in previous
    versions (lp: #1119304)
 -- Sebastien Bacher <email address hidden> Mon, 11 Feb 2013 11:48:45 +0100

Changed in cairo (Ubuntu):
status: In Progress → Fix Released
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.