Bug 10566

Summary: nautilus crashes when thumbnailing an svg with a pattern
Product: cairo Reporter: Sebastien Bacher <seb128>
Component: generalAssignee: Carl Worth <cworth>
Status: RESOLVED FIXED QA Contact: cairo-bugs mailing list <cairo-bugs>
Severity: normal    
Priority: medium    
Version: 1.4.6   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:
Attachments: SVG file crashing Nautilus directly
SVG file freezing Nautilus at 100% CPU usage

Description Sebastien Bacher 2007-04-08 10:20:42 UTC
The bug has been opened on https://bugs.launchpad.net/bugs/104309

"Binary package hint: nautilus

When displaying a folder with a particular svg in it, Nautilus uses 100% and eventually stops responding. I've pinned it down to one svg feature in particular: patterns. If the pattern definition is removed from the svg, nautilus thumbnails it with no problems
...
gdb backtrace points at libcairo
...
http://librarian.launchpad.net/7216152/ep065.svg.gz
svg that crashes nautilus
...
this same file crashes eog and gthumb too. Looks like a librsvg or libcairo bug.
..."
Comment 1 Sebastien Bacher 2007-04-08 10:22:17 UTC
Debug backtrace for the crash:

(gdb) r ep065.svg 
Starting program: /usr/bin/eog ep065.svg
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
(no debugging symbols found)
[Thread debugging using libthread_db enabled]
[New Thread -1226279232 (LWP 6292)]
[New Thread -1228252272 (LWP 6295)]

Program received signal SIGFPE, Arithmetic exception.
[Switching to Thread -1228252272 (LWP 6295)]
0xb7859a32 in fbFetchTransformed (pict=0x83f8f60, x=<value optimized out>, y=<value optimized out>, width=224, 
    buffer=0xb6c9e310, mask=0xb6c9ea10, maskBits=4278190080) at /build/buildd/libcairo-1.4.2/pixman/src/fbcompose.c:3576
warning: Source file is more recent than executable.
3576                                y1 = MOD (y1, pict->pDrawable->height);
(gdb) thread apply all bt full

Thread 2 (Thread -1228252272 (LWP 6295)):
#0  0xb7859a32 in fbFetchTransformed (pict=0x83f8f60, x=<value optimized out>, y=<value optimized out>, width=224, 
    buffer=0xb6c9e310, mask=0xb6c9ea10, maskBits=4278190080) at /build/buildd/libcairo-1.4.2/pixman/src/fbcompose.c:3576
        x1 = <value optimized out>
        x2 = <value optimized out>
        y1 = <value optimized out>
        distx = <value optimized out>
        idistx = <value optimized out>
        b = <value optimized out>
        tl = <value optimized out>
        tr = <value optimized out>
        r = <value optimized out>
        y2 = <value optimized out>
        disty = <value optimized out>
        bl = <value optimized out>
        br = 0
        bits = (FbBits *) 0x81708b8
        stride = 307
        fetch = (fetchPixelProc) 0xb7850e50 <fbFetchPixel_a8r8g8b8>
        v = {vector = {-32768, -32768, 65536}}
        i = 6
        box = {x1 = -7656, y1 = -18743, x2 = 24137, y2 = -18555}
#1  0xb785724d in pixman_compositeGeneral (op=<value optimized out>, pSrc=0x83f8f60, pMask=0x83fc260, pDst=0x8121920, 
    xSrc=666, ySrc=280, xMask=0, yMask=0, xDst=666, yDst=280, width=224, height=24)
    at /build/buildd/libcairo-1.4.2/pixman/src/fbcompose.c:4138
        region = (pixman_region16_t *) 0x83f06f0
        n = 1
        pbox = <value optimized out>
        srcRepeat = 0
        maskRepeat = 0
        w = <value optimized out>
        h = <value optimized out>
        _scanline_buffer = {2675612794 <repeats 136 times>, 2540934259, 2170715746, 1396658495, 336532239, 0, 0, 0, 0, 0, 
  2675612794 <repeats 39 times>, 2540934259, 2170715746, 1396658495, 336532239, 0 <repeats 155 times>, 989855744, 
  2298478592, 2969567232, 3355443200, 3422552064 <repeats 101 times>, 0, 0, 0, 0, 0, 0, 50331648, 872415232, 1325400064, 
  1711276032 <repeats 206 times>, 1493172224, 1040187392, 218103808, 0 <repeats 1302 times>, 
  2155905152 <repeats 996 times>, 0 <repeats 1292 times>, 3076047185, 0, 0, 0, 0, 0, 0, 0, 3066701360, 0, 0, 429496729, 
  5, 0, 0, 0, 0, 0, 1035784, 0, 3077156852, 0, 3077055574, 3066701324, 3076046591, 3066701360, 3066703004, 10, 0, 0, 
  3077055577, 3066703028, 3076162333, 3066702944, 0, 10, 0, 0, 0, 0, 892547121, 3422263, 0 <repeats 248 times>, 100, 
  3066703028, 3076162648, 3066703056, 49, 3066703056, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1035784, 0, 0, 0, 0, 3077055573, 1, 
  0, 4294967295, 1, 3077157760, 134904944, 0, 10, 1, 3086311456, 3086311458, 0, 0, 0, 0, 0, 0...}
        scanline_buffer = (CARD32 *) 0xb6c9ea10
#2  0xb78469d2 in _cairo_pixman_composite (op=PIXMAN_OPERATOR_OVER, pSrc=0x83f8f60, pMask=0x83fc260, pDst=0x8121920, 
    xSrc=666, ySrc=280, xMask=0, yMask=0, xDst=666, yDst=280, width=224, height=24)
    at /build/buildd/libcairo-1.4.2/pixman/src/fbpict.c:1925
---Type <return> to continue, or q <return> to quit---
        region = <value optimized out>
        n = <value optimized out>
        pbox = <value optimized out>
        func = (CompositeFunc) 0xfffffff7
        srcRepeat = 1
        maskRepeat = 0
        srcTransform = 1
        maskTransform = 0
        maskAlphaMap = <value optimized out>
        x_msk = <value optimized out>
        y_msk = <value optimized out>
        x_src = <value optimized out>
        y_src = <value optimized out>
        x_dst = <value optimized out>
        y_dst = <value optimized out>
        w = <value optimized out>
        h = <value optimized out>
        w_this = <value optimized out>
        h_this = <value optimized out>
        mmx_setup = 1
#3  0xb780f425 in _cairo_image_surface_composite_trapezoids (op=CAIRO_OPERATOR_OVER, pattern=0xb6ca4a54, 
    abstract_dst=0x810c818, antialias=CAIRO_ANTIALIAS_DEFAULT, src_x=666, src_y=280, dst_x=666, dst_y=280, width=224, 
    height=24, traps=0x83ff488, num_traps=17) at /build/buildd/libcairo-1.4.2/src/cairo-image-surface.c:1016
        attributes = {matrix = {xx = nan(0x8000000000000), yx = -nan(0x8000000000000), xy = nan(0x8000000000000), 
    yy = -nan(0x8000000000000), x0 = nan(0x8000000000000), y0 = -nan(0x8000000000000)}, extend = CAIRO_EXTEND_REPEAT, 
  filter = CAIRO_FILTER_BEST, x_offset = 0, y_offset = 0, acquired = 1, extra = 0x0}
        src = (cairo_image_surface_t *) 0x8267e00
        status = 0
        mask = (pixman_image_t *) 0x83fc260
        format = (pixman_format_t *) 0x83eb6c8
        mask_stride = <value optimized out>
        mask_bpp = 8
#4  0xb781964f in _cairo_surface_composite_trapezoids (op=CAIRO_OPERATOR_OVER, pattern=0xb6ca4a54, dst=0x810c818, 
    antialias=CAIRO_ANTIALIAS_DEFAULT, src_x=666, src_y=280, dst_x=666, dst_y=280, width=224, height=24, traps=0x83ff488, 
    num_traps=17) at /build/buildd/libcairo-1.4.2/src/cairo-surface.c:1414
        status = 0
        __PRETTY_FUNCTION__ = "_cairo_surface_composite_trapezoids"
#5  0xb781c7b0 in _composite_traps_draw_func (closure=0xb6ca4968, op=CAIRO_OPERATOR_OVER, src=0xb6ca4a54, dst=0x810c818, 
    dst_x=0, dst_y=0, extents=0xb6ca4970) at /build/buildd/libcairo-1.4.2/src/cairo-surface-fallback.c:492
        pattern = {base = {type = CAIRO_PATTERN_TYPE_SOLID, ref_count = 1, status = CAIRO_STATUS_SUCCESS, user_data = {
      size = 0, num_elements = 0, element_size = 12, elements = 0x0, is_snapshot = 0}, matrix = {xx = 1, yx = 0, xy = 0, 
      yy = 1, x0 = 0, y0 = 0}, filter = CAIRO_FILTER_BEST, extend = CAIRO_EXTEND_PAD}, solid = {base = {
      type = CAIRO_PATTERN_TYPE_SOLID, ref_count = 1, status = CAIRO_STATUS_SUCCESS, user_data = {size = 0, 
        num_elements = 0, element_size = 12, elements = 0x0, is_snapshot = 0}, matrix = {xx = 1, yx = 0, xy = 0, yy = 1, 
        x0 = 0, y0 = 0}, filter = CAIRO_FILTER_BEST, extend = CAIRO_EXTEND_PAD}, color = {red = 1, green = 1, blue = 1, 
      alpha = 1, red_short = 65535, green_short = 65535, blue_short = 65535, alpha_short = 65535}}, surface = {base = {
---Type <return> to continue, or q <return> to quit---
      type = CAIRO_PATTERN_TYPE_SOLID, ref_count = 1, status = CAIRO_STATUS_SUCCESS, user_data = {size = 0, 
        num_elements = 0, element_size = 12, elements = 0x0, is_snapshot = 0}, matrix = {xx = 1, yx = 0, xy = 0, yy = 1, 
        x0 = 0, y0 = 0}, filter = CAIRO_FILTER_BEST, extend = CAIRO_EXTEND_PAD}, surface = 0x0}, gradient = {base = {
      base = {type = CAIRO_PATTERN_TYPE_SOLID, ref_count = 1, status = CAIRO_STATUS_SUCCESS, user_data = {size = 0, 
          num_elements = 0, element_size = 12, elements = 0x0, is_snapshot = 0}, matrix = {xx = 1, yx = 0, xy = 0, 
          yy = 1, x0 = 0, y0 = 0}, filter = CAIRO_FILTER_BEST, extend = CAIRO_EXTEND_PAD}, n_stops = 0, 
      stops_size = 1072693248, stops = 0x0, stops_embedded = {{x = 1072693248, color = {red = 0, green = 0, blue = 0, 
            alpha = 16368}}, {x = 0, color = {red = 0, green = 16368, blue = 65535, alpha = 65535}}}}, linear = {base = {
        base = {type = CAIRO_PATTERN_TYPE_SOLID, ref_count = 1, status = CAIRO_STATUS_SUCCESS, user_data = {size = 0, 
            num_elements = 0, element_size = 12, elements = 0x0, is_snapshot = 0}, matrix = {xx = 1, yx = 0, xy = 0, 
            yy = 1, x0 = 0, y0 = 0}, filter = CAIRO_FILTER_BEST, extend = CAIRO_EXTEND_PAD}, n_stops = 0, 
        stops_size = 1072693248, stops = 0x0, stops_embedded = {{x = 1072693248, color = {red = 0, green = 0, blue = 0, 
              alpha = 16368}}, {x = 0, color = {red = 0, green = 16368, blue = 65535, alpha = 65535}}}}, gradient = {
        p1 = {x = -1, y = 0}, p2 = {x = 138048800, y = 14060263}}}, radial = {base = {base = {
          type = CAIRO_PATTERN_TYPE_SOLID, ref_count = 1, status = CAIRO_STATUS_SUCCESS, user_data = {size = 0, 
            num_elements = 0, element_size = 12, elements = 0x0, is_snapshot = 0}, matrix = {xx = 1, yx = 0, xy = 0, 
            yy = 1, x0 = 0, y0 = 0}, filter = CAIRO_FILTER_BEST, extend = CAIRO_EXTEND_PAD}, n_stops = 0, 
        stops_size = 1072693248, stops = 0x0, stops_embedded = {{x = 1072693248, color = {red = 0, green = 0, blue = 0, 
              alpha = 16368}}, {x = 0, color = {red = 0, green = 16368, blue = 65535, alpha = 65535}}}}, gradient = {
        c1 = {x = -1, y = 0, radius = 138048800}, c2 = {x = 14060263, y = 1475692, radius = 138400656}}}}}
        status = <value optimized out>
#6  0xb781ba33 in _clip_and_composite (clip=0x0, op=CAIRO_OPERATOR_OVER, src=0xb6ca4a54, 
    draw_func=0xb781c700 <_composite_traps_draw_func>, draw_closure=0xb6ca4968, dst=0x810c818, extents=0xb6ca4970)
    at /build/buildd/libcairo-1.4.2/src/cairo-surface-fallback.c:391
        solid_pattern = {base = {type = CAIRO_PATTERN_TYPE_SOLID, ref_count = 0, status = CAIRO_STATUS_SUCCESS, 
    user_data = {size = 0, num_elements = 0, element_size = 0, elements = 0x0, is_snapshot = 0}, matrix = {xx = 0, 
      yx = 0, xy = 0, yy = 0, x0 = 0, y0 = 0}, filter = CAIRO_FILTER_FAST, extend = CAIRO_EXTEND_NONE}, solid = {base = {
      type = CAIRO_PATTERN_TYPE_SOLID, ref_count = 0, status = CAIRO_STATUS_SUCCESS, user_data = {size = 0, 
        num_elements = 0, element_size = 0, elements = 0x0, is_snapshot = 0}, matrix = {xx = 0, yx = 0, xy = 0, yy = 0, 
        x0 = 0, y0 = 0}, filter = CAIRO_FILTER_FAST, extend = CAIRO_EXTEND_NONE}, color = {red = 0, green = 0, blue = 0, 
      alpha = 0, red_short = 0, green_short = 0, blue_short = 0, alpha_short = 0}}, surface = {base = {
      type = CAIRO_PATTERN_TYPE_SOLID, ref_count = 0, status = CAIRO_STATUS_SUCCESS, user_data = {size = 0, 
        num_elements = 0, element_size = 0, elements = 0x0, is_snapshot = 0}, matrix = {xx = 0, yx = 0, xy = 0, yy = 0, 
        x0 = 0, y0 = 0}, filter = CAIRO_FILTER_FAST, extend = CAIRO_EXTEND_NONE}, surface = 0x0}, gradient = {base = {
      base = {type = CAIRO_PATTERN_TYPE_SOLID, ref_count = 0, status = CAIRO_STATUS_SUCCESS, user_data = {size = 0, 
          num_elements = 0, element_size = 0, elements = 0x0, is_snapshot = 0}, matrix = {xx = 0, yx = 0, xy = 0, yy = 0, 
          x0 = 0, y0 = 0}, filter = CAIRO_FILTER_FAST, extend = CAIRO_EXTEND_NONE}, n_stops = 0, stops_size = 0, 
      stops = 0x0, stops_embedded = {{x = 0, color = {red = 0, green = 0, blue = 0, alpha = 0}}, {x = 0, color = {
            red = 0, green = 0, blue = 0, alpha = 0}}}}, linear = {base = {base = {type = CAIRO_PATTERN_TYPE_SOLID, 
          ref_count = 0, status = CAIRO_STATUS_SUCCESS, user_data = {size = 0, num_elements = 0, element_size = 0, 
            elements = 0x0, is_snapshot = 0}, matrix = {xx = 0, yx = 0, xy = 0, yy = 0, x0 = 0, y0 = 0}, 
          filter = CAIRO_FILTER_FAST, extend = CAIRO_EXTEND_NONE}, n_stops = 0, stops_size = 0, stops = 0x0, 
        stops_embedded = {{x = 0, color = {red = 0, green = 0, blue = 0, alpha = 0}}, {x = 0, color = {red = 0, 
              green = 0, blue = 0, alpha = 0}}}}, gradient = {p1 = {x = 0, y = 0}, p2 = {x = 0, y = 0}}}, radial = {
      base = {base = {type = CAIRO_PATTERN_TYPE_SOLID, ref_count = 0, status = CAIRO_STATUS_SUCCESS, user_data = {
            size = 0, num_elements = 0, element_size = 0, elements = 0x0, is_snapshot = 0}, matrix = {xx = 0, yx = 0, 
---Type <return> to continue, or q <return> to quit---
            xy = 0, yy = 0, x0 = 0, y0 = 0}, filter = CAIRO_FILTER_FAST, extend = CAIRO_EXTEND_NONE}, n_stops = 0, 
        stops_size = 0, stops = 0x0, stops_embedded = {{x = 0, color = {red = 0, green = 0, blue = 0, alpha = 0}}, {
            x = 0, color = {red = 0, green = 0, blue = 0, alpha = 0}}}}, gradient = {c1 = {x = 0, y = 0, radius = 0}, 
        c2 = {x = 0, y = 0, radius = 0}}}}}
        status = <value optimized out>
#7  0xb781c306 in _clip_and_composite_trapezoids (src=0x8, op=43691552, dst=0x810c818, traps=0xb6ca49b8, clip=0x0, 
    antialias=CAIRO_ANTIALIAS_DEFAULT) at /build/buildd/libcairo-1.4.2/src/cairo-surface-fallback.c:644
        clip_surface = (cairo_surface_t *) 0xb75c8e30
        status = <value optimized out>
        trap_region = (pixman_region16_t *) 0x0
        clear_region = (pixman_region16_t *) 0x0
        extents = {x = 666, y = 280, width = 224, height = 24}
        traps_info = {traps = 0xb6ca49b8, antialias = CAIRO_ANTIALIAS_DEFAULT}
#8  0xb781c6e0 in _cairo_surface_fallback_fill (surface=0x810c818, op=CAIRO_OPERATOR_OVER, source=0xb6ca4a54, 
    path=0x812256c, fill_rule=CAIRO_FILL_RULE_WINDING, tolerance=0.10000000000000001, antialias=CAIRO_ANTIALIAS_DEFAULT)
    at /build/buildd/libcairo-1.4.2/src/cairo-surface-fallback.c:836
        status = CAIRO_STATUS_SUCCESS
        traps = {status = CAIRO_STATUS_SUCCESS, extents = {p1 = {x = 43691552, y = 18391096}, p2 = {x = 58301029, 
      y = 19866788}}, num_traps = 17, traps_size = 32, traps = 0x83ff488, traps_embedded = {{top = 18391096, 
      bottom = 18402253, left = {p1 = {x = 44240766, y = 18391096}, p2 = {x = 44130079, y = 18402253}}, right = {p1 = {
          x = 57751815, y = 18391096}, p2 = {x = 57862499, y = 18402253}}}}}
#9  0xb781a09b in _cairo_surface_fill (surface=0x810c818, op=CAIRO_OPERATOR_OVER, source=0xb6ca4b3c, path=0x812256c, 
    fill_rule=CAIRO_FILL_RULE_WINDING, tolerance=0.10000000000000001, antialias=CAIRO_ANTIALIAS_DEFAULT)
    at /build/buildd/libcairo-1.4.2/src/cairo-surface.c:1374
        status = CAIRO_STATUS_SUCCESS
        dev_source = {base = {type = CAIRO_PATTERN_TYPE_SURFACE, ref_count = 1, status = CAIRO_STATUS_SUCCESS, 
    user_data = {size = 0, num_elements = 0, element_size = 12, elements = 0x0, is_snapshot = 0}, matrix = {
      xx = nan(0x8000000000000), yx = -nan(0x8000000000000), xy = nan(0x8000000000000), yy = -nan(0x8000000000000), 
      x0 = nan(0x8000000000000), y0 = -nan(0x8000000000000)}, filter = CAIRO_FILTER_BEST, extend = CAIRO_EXTEND_REPEAT}, 
  solid = {base = {type = CAIRO_PATTERN_TYPE_SURFACE, ref_count = 1, status = CAIRO_STATUS_SUCCESS, user_data = {
        size = 0, num_elements = 0, element_size = 12, elements = 0x0, is_snapshot = 0}, matrix = {
        xx = nan(0x8000000000000), yx = -nan(0x8000000000000), xy = nan(0x8000000000000), yy = -nan(0x8000000000000), 
        x0 = nan(0x8000000000000), y0 = -nan(0x8000000000000)}, filter = CAIRO_FILTER_BEST, 
      extend = CAIRO_EXTEND_REPEAT}, color = {red = -9.2115661418729682e-45, green = -9.2107786650765771e-45, 
      blue = 2.1288191055277229e-269, alpha = -9.2109496965564141e-45, red_short = 51325, green_short = 46976, 
      blue_short = 32256, alpha_short = 2086}}, surface = {base = {type = CAIRO_PATTERN_TYPE_SURFACE, ref_count = 1, 
      status = CAIRO_STATUS_SUCCESS, user_data = {size = 0, num_elements = 0, element_size = 12, elements = 0x0, 
        is_snapshot = 0}, matrix = {xx = nan(0x8000000000000), yx = -nan(0x8000000000000), xy = nan(0x8000000000000), 
        yy = -nan(0x8000000000000), x0 = nan(0x8000000000000), y0 = -nan(0x8000000000000)}, filter = CAIRO_FILTER_BEST, 
      extend = CAIRO_EXTEND_REPEAT}, surface = 0x8267e00}, gradient = {base = {base = {type = CAIRO_PATTERN_TYPE_SURFACE, 
        ref_count = 1, status = CAIRO_STATUS_SUCCESS, user_data = {size = 0, num_elements = 0, element_size = 12, 
          elements = 0x0, is_snapshot = 0}, matrix = {xx = nan(0x8000000000000), yx = -nan(0x8000000000000), 
          xy = nan(0x8000000000000), yy = -nan(0x8000000000000), x0 = nan(0x8000000000000), y0 = -nan(0x8000000000000)}, 
        filter = CAIRO_FILTER_BEST, extend = CAIRO_EXTEND_REPEAT}, n_stops = 136740352, stops_size = 3066710876, 
      stops = 0xb7810f66, stops_embedded = {{x = -1228256568, color = {red = 40644, green = 46977, blue = 32300, 
            alpha = 2086}}, {x = -1236736296, color = {red = 19176, green = 46794, blue = 51325, alpha = 46976}}}}, 
---Type <return> to continue, or q <return> to quit---
    linear = {base = {base = {type = CAIRO_PATTERN_TYPE_SURFACE, ref_count = 1, status = CAIRO_STATUS_SUCCESS, 
          user_data = {size = 0, num_elements = 0, element_size = 12, elements = 0x0, is_snapshot = 0}, matrix = {
            xx = nan(0x8000000000000), yx = -nan(0x8000000000000), xy = nan(0x8000000000000), yy = -nan(0x8000000000000), 
            x0 = nan(0x8000000000000), y0 = -nan(0x8000000000000)}, filter = CAIRO_FILTER_BEST, 
          extend = CAIRO_EXTEND_REPEAT}, n_stops = 136740352, stops_size = 3066710876, stops = 0xb7810f66, 
        stops_embedded = {{x = -1228256568, color = {red = 40644, green = 46977, blue = 32300, alpha = 2086}}, {
            x = -1236736296, color = {red = 19176, green = 46794, blue = 51325, alpha = 46976}}}}, gradient = {p1 = {
          x = 136740352, y = 138327500}, p2 = {x = 834474350, y = 1072858793}}}, radial = {base = {base = {
          type = CAIRO_PATTERN_TYPE_SURFACE, ref_count = 1, status = CAIRO_STATUS_SUCCESS, user_data = {size = 0, 
            num_elements = 0, element_size = 12, elements = 0x0, is_snapshot = 0}, matrix = {xx = nan(0x8000000000000), 
            yx = -nan(0x8000000000000), xy = nan(0x8000000000000), yy = -nan(0x8000000000000), x0 = nan(0x8000000000000), 
            y0 = -nan(0x8000000000000)}, filter = CAIRO_FILTER_BEST, extend = CAIRO_EXTEND_REPEAT}, n_stops = 136740352, 
        stops_size = 3066710876, stops = 0xb7810f66, stops_embedded = {{x = -1228256568, color = {red = 40644, 
              green = 46977, blue = 32300, alpha = 2086}}, {x = -1236736296, color = {red = 19176, green = 46794, 
              blue = 51325, alpha = 46976}}}}, gradient = {c1 = {x = 136740352, y = 138327500, radius = 834474350}, c2 = {
          x = 1072858793, y = 138327500, radius = 0}}}}}
        __PRETTY_FUNCTION__ = "_cairo_surface_fill"
#10 0xb780d1cd in _cairo_gstate_fill (gstate=0x83eb4c0, path=0x812256c)
    at /build/buildd/libcairo-1.4.2/src/cairo-gstate.c:959
        status = CAIRO_STATUS_SUCCESS
        pattern = {base = {type = CAIRO_PATTERN_TYPE_SURFACE, ref_count = 1, status = CAIRO_STATUS_SUCCESS, user_data = {
      size = 0, num_elements = 0, element_size = 12, elements = 0x0, is_snapshot = 0}, matrix = {
      xx = nan(0x8000000000000), yx = -nan(0x8000000000000), xy = nan(0x8000000000000), yy = -nan(0x8000000000000), 
      x0 = nan(0x8000000000000), y0 = -nan(0x8000000000000)}, filter = CAIRO_FILTER_BEST, extend = CAIRO_EXTEND_REPEAT}, 
  solid = {base = {type = CAIRO_PATTERN_TYPE_SURFACE, ref_count = 1, status = CAIRO_STATUS_SUCCESS, user_data = {
        size = 0, num_elements = 0, element_size = 12, elements = 0x0, is_snapshot = 0}, matrix = {
        xx = nan(0x8000000000000), yx = -nan(0x8000000000000), xy = nan(0x8000000000000), yy = -nan(0x8000000000000), 
        x0 = nan(0x8000000000000), y0 = -nan(0x8000000000000)}, filter = CAIRO_FILTER_BEST, 
      extend = CAIRO_EXTEND_REPEAT}, color = {red = 3.7539437613275657e+294, green = 1.5954916786903971e-314, 
      blue = -9.5809801153242748e-12, alpha = 3.0800024927714433e-20, red_short = 15025, green_short = 16501, 
      blue_short = 0, alpha_short = 0}}, surface = {base = {type = CAIRO_PATTERN_TYPE_SURFACE, ref_count = 1, 
      status = CAIRO_STATUS_SUCCESS, user_data = {size = 0, num_elements = 0, element_size = 12, elements = 0x0, 
        is_snapshot = 0}, matrix = {xx = nan(0x8000000000000), yx = -nan(0x8000000000000), xy = nan(0x8000000000000), 
        yy = -nan(0x8000000000000), x0 = nan(0x8000000000000), y0 = -nan(0x8000000000000)}, filter = CAIRO_FILTER_BEST, 
      extend = CAIRO_EXTEND_REPEAT}, surface = 0x8267e00}, gradient = {base = {base = {type = CAIRO_PATTERN_TYPE_SURFACE, 
        ref_count = 1, status = CAIRO_STATUS_SUCCESS, user_data = {size = 0, num_elements = 0, element_size = 12, 
          elements = 0x0, is_snapshot = 0}, matrix = {xx = nan(0x8000000000000), yx = -nan(0x8000000000000), 
          xy = nan(0x8000000000000), yy = -nan(0x8000000000000), x0 = nan(0x8000000000000), y0 = -nan(0x8000000000000)}, 
        filter = CAIRO_FILTER_BEST, extend = CAIRO_EXTEND_REPEAT}, n_stops = 136740352, stops_size = 2098692820, 
      stops = 0xc07b6085, stops_embedded = {{x = 0, color = {red = 19386, green = 49235, blue = 4508, alpha = 48549}}, {
          x = 1083003585, color = {red = 11870, green = 15330, blue = 15025, alpha = 16501}}}}, linear = {base = {base = {
          type = CAIRO_PATTERN_TYPE_SURFACE, ref_count = 1, status = CAIRO_STATUS_SUCCESS, user_data = {size = 0, 
            num_elements = 0, element_size = 12, elements = 0x0, is_snapshot = 0}, matrix = {xx = nan(0x8000000000000), 
            yx = -nan(0x8000000000000), xy = nan(0x8000000000000), yy = -nan(0x8000000000000), x0 = nan(0x8000000000000), 
            y0 = -nan(0x8000000000000)}, filter = CAIRO_FILTER_BEST, extend = CAIRO_EXTEND_REPEAT}, n_stops = 136740352, 
        stops_size = 2098692820, stops = 0xc07b6085, stops_embedded = {{x = 0, color = {red = 19386, green = 49235, 
---Type <return> to continue, or q <return> to quit---
              blue = 4508, alpha = 48549}}, {x = 1083003585, color = {red = 11870, green = 15330, blue = 15025, 
              alpha = 16501}}}}, gradient = {p1 = {x = 0, y = 1072693248}, p2 = {x = 0, y = 0}}}, radial = {base = {
        base = {type = CAIRO_PATTERN_TYPE_SURFACE, ref_count = 1, status = CAIRO_STATUS_SUCCESS, user_data = {size = 0, 
            num_elements = 0, element_size = 12, elements = 0x0, is_snapshot = 0}, matrix = {xx = nan(0x8000000000000), 
            yx = -nan(0x8000000000000), xy = nan(0x8000000000000), yy = -nan(0x8000000000000), x0 = nan(0x8000000000000), 
            y0 = -nan(0x8000000000000)}, filter = CAIRO_FILTER_BEST, extend = CAIRO_EXTEND_REPEAT}, n_stops = 136740352, 
        stops_size = 2098692820, stops = 0xc07b6085, stops_embedded = {{x = 0, color = {red = 19386, green = 49235, 
              blue = 4508, alpha = 48549}}, {x = 1083003585, color = {red = 11870, green = 15330, blue = 15025, 
              alpha = 16501}}}}, gradient = {c1 = {x = 0, y = 1072693248, radius = 0}, c2 = {x = 0, y = 0, radius = 0}}}}}
#11 0xb7805dcc in *INT_cairo_fill_preserve (cr=0x8122408) at /build/buildd/libcairo-1.4.2/src/cairo.c:2047
No locals.
#12 0xb6489273 in rsvg_cairo_render_path (ctx=0x812c940, bpath_def=0x8170190) at rsvg-cairo-draw.c:575
        opacity = <value optimized out>
        state = (RsvgState *) 0x81258f8
        cr = (cairo_t *) 0x8122408
        bpath = <value optimized out>
        i = 11
        need_tmpbuf = 0
        bbox = {x = 666.18017578125, y = 280.1258544921875, w = 223.92292785644531, h = 23.51727294921875, virgin = 0, 
  affine = {1, 0, 0, 1, 0, 0}}
#13 0xb6483ffe in rsvg_render_path (ctx=0x812c940, 
    d=0x83fbd10 "M 675.0605205999999 280.62585000000001 H 881.22276939999995 A8.3803406000000003 8.3803395999999992 0 0 1 889.60311000000002 289.00618960000003 V 294.76279140000003 A8.3803406000000003 8.38033959999999"...) at rsvg-base.c:1641
        bpath_def = (RsvgBpathDef *) 0x8170190
#14 0xb647c072 in _rsvg_node_rect_draw (self=0x813e4d0, ctx=0x812c940, dominate=0) at rsvg-shapes.c:457
        x = 666.68017999999995
        y = 280.62585000000001
        w = 222.92293000000001
        h = 22.517281000000001
        rx = 8.3803406000000003
        ry = 8.3803395999999992
        d = (GString *) 0x83fa130
        buf = "280.62585000000001\000XNʶ�\nH�\000\000\000\000\000\000\000\000\000Nʶ"
#15 0xb647c64e in rsvg_node_draw (self=0x0, ctx=0x812c940, dominate=0) at rsvg-structure.c:54
        stacksave = (GSList *) 0x0
#16 0xb647c8aa in _rsvg_node_draw_children (self=0x81343f8, ctx=0x812c940, dominate=0) at rsvg-structure.c:73
        i = 50
#17 0xb647c64e in rsvg_node_draw (self=0x0, ctx=0x812c940, dominate=0) at rsvg-structure.c:54
        stacksave = (GSList *) 0x0
#18 0xb647d0ff in rsvg_node_svg_draw (self=0x8123710, ctx=0x812c940, dominate=0) at rsvg-structure.c:316
        state = <value optimized out>
        affine = {1, 0, 0, 1, 0, 0}
        affine_old = {1, 0, 0, 1, 0, 0}
        affine_new = {1, 0, 0, 1, 0, 0}
        i = 12
        nx = 0
---Type <return> to continue, or q <return> to quit---
        ny = 0
        nw = 956.25
        nh = 356.25
#19 0xb647c64e in rsvg_node_draw (self=0x0, ctx=0x812c940, dominate=0) at rsvg-structure.c:54
        stacksave = (GSList *) 0x0
#20 0xb6489907 in rsvg_handle_render_cairo_sub (handle=0x80bae88, cr=0x8122408, id=0x0) at rsvg-cairo-render.c:161
        drawsub = (RsvgNode *) 0x81250b0
        __PRETTY_FUNCTION__ = "rsvg_handle_render_cairo_sub"
#21 0xb6489e21 in rsvg_handle_get_pixbuf_sub (handle=0x80bae88, id=0x0) at rsvg.c:101
        dimensions = {width = 956, height = 356, em = 956, ex = 356}
        output = <value optimized out>
        surface = (cairo_surface_t *) 0x810c818
        cr = (cairo_t *) 0x8122408
        rowstride = 3824
        __PRETTY_FUNCTION__ = "rsvg_handle_get_pixbuf_sub"
#22 0xb6489ef5 in rsvg_handle_get_pixbuf (handle=0x80bae88) at rsvg.c:135
No locals.
#23 0xb6ce9c47 in gdk_pixbuf__svg_image_stop_load (data=0x810d8d0, error=0xb6ca51b8) at io-svg.c:154
        pixbuf = <value optimized out>
#24 0xb78b6954 in IA__gdk_pixbuf_loader_close (loader=0x810d470, error=0x80ed488) at gdk-pixbuf-loader.c:715
        tmp = (GError *) 0x0
        priv = (GdkPixbufLoaderPrivate *) 0x8109a30
        retval = 1
        __PRETTY_FUNCTION__ = "IA__gdk_pixbuf_loader_close"
#25 0x08071645 in eog_image_load ()
No symbol table info available.
#26 0x0806bd4b in ?? ()
No symbol table info available.
#27 0x0810d390 in ?? ()
No symbol table info available.
#28 0x00000007 in ?? ()
No symbol table info available.
#29 0x080eb610 in ?? ()
No symbol table info available.
#30 0x080ed488 in ?? ()
No symbol table info available.
#31 0x0804fb1e in ?? ()
No symbol table info available.
#32 0x080eb610 in ?? ()
No symbol table info available.
#33 0x00000001 in ?? ()
No symbol table info available.
#34 0x080eb610 in ?? ()
No symbol table info available.
#35 0x00000001 in ?? ()
No symbol table info available.
---Type <return> to continue, or q <return> to quit---
#36 0xb76a7be0 in ?? () from /lib/tls/i686/cmov/libpthread.so.0
No symbol table info available.
#37 0xb6ca5368 in ?? ()
No symbol table info available.
#38 0x0807646a in eog_job_call_action ()
No symbol table info available.
Backtrace stopped: frame did not save the PC

Thread 1 (Thread -1226279232 (LWP 6292)):
#0  0xffffe410 in __kernel_vsyscall ()
No symbol table info available.
#1  0xb7623893 in poll () from /lib/tls/i686/cmov/libc.so.6
No symbol table info available.
#2  0xb775fe03 in g_main_context_iterate (context=0x80bdf60, block=1, dispatch=1, self=0x8095158) at gmain.c:2979
        got_ownership = <value optimized out>
        max_priority = 2147483647
        timeout = -1
        some_ready = <value optimized out>
        nfds = 8
        allocated_nfds = <value optimized out>
        fds = (GPollFD *) 0x8107ed0
        __PRETTY_FUNCTION__ = "g_main_context_iterate"
#3  0xb7760179 in IA__g_main_loop_run (loop=0x80e5b08) at gmain.c:2881
        got_ownership = -1217764288
        self = (GThread *) 0x8095158
        __PRETTY_FUNCTION__ = "IA__g_main_loop_run"
#4  0xb7a89044 in IA__gtk_main () at gtkmain.c:1177
        tmp_list = (GList *) 0xbfb853c4
        functions = (GList *) 0x0
        init = (GtkInitFunction *) 0x809e410
        loop = (GMainLoop *) 0x80e5b08
#5  0x0806b349 in main ()
No symbol table info available.
0xb7859a32      3576                                y1 = MOD (y1, pict->pDrawable->height);
Comment 2 Sebastien Bacher 2007-05-29 05:13:47 UTC
another example on https://bugs.launchpad.net/ubuntu/+source/libcairo/+bug/111379, http://librarian.launchpad.net/7863868/perspectival_house_01.svg

the bug still happens using 1.4.6
Comment 3 Runar Ingebrigtsen 2007-09-04 07:32:09 UTC
Created attachment 11410 [details]
SVG file crashing Nautilus directly

This SVG file contains patterns that makes Nautilus crash directly when opening the folder.
Comment 4 Runar Ingebrigtsen 2007-09-04 07:43:44 UTC
Created attachment 11411 [details]
SVG file freezing Nautilus at 100% CPU usage

This file is the same as the latter, just without some cross-pattern.
Comment 5 Sebastien Bacher 2008-02-05 00:45:51 UTC
the examples work correctly on hardy, closing the bug

Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.