Bug 28209

Summary: Infinite loop with PDF spec
Product: cairo Reporter: Søren Sandmann Pedersen <soren.sandmann>
Component: generalAssignee: Carl Worth <cworth>
Status: RESOLVED INVALID QA Contact: cairo-bugs mailing list <cairo-bugs>
Severity: normal    
Priority: medium    
Version: 1.9.7   
Hardware: Other   
OS: All   
Whiteboard:
i915 platform: i915 features:

Description Søren Sandmann Pedersen 2010-05-21 14:20:48 UTC
Viewing the PDF spec in evince, it got into an infinite loop. The backtrace looked like this:

(gdb) bt
#0  0x0000003822c1b484 in _clip_paths_are_rectilinear (clip=0x7fffb5b6cd40, boxes=0x7fffb5b6cb50, count=0x7fffb5b6cb5c)
    at cairo-clip.c:517
#1  _cairo_clip_path_to_boxes (clip=0x7fffb5b6cd40, boxes=0x7fffb5b6cb50, count=0x7fffb5b6cb5c) at cairo-clip.c:853
#2  _cairo_clip_get_boxes (clip=0x7fffb5b6cd40, boxes=0x7fffb5b6cb50, count=0x7fffb5b6cb5c) at cairo-clip.c:1320
#3  0x0000003822c1cf45 in _cairo_clip_to_boxes (clip=0x7fffb5b6cba0, extents=0x7fffb5b6cae0, boxes=0x7fffb5b6cb50, num_boxes=
    0x7fffb5b6cb5c) at cairo-clip.c:1388
#4  0x0000003822c4b084 in _cairo_surface_fallback_fill (surface=0x184d810, op=CAIRO_OPERATOR_OVER, source=0x7fffb5b6cc20, path=
    0x3822eab158, fill_rule=CAIRO_FILL_RULE_WINDING, tolerance=0.10000000000000001, antialias=CAIRO_ANTIALIAS_DEFAULT, clip=
    0x7fffb5b6cd40) at cairo-surface-fallback.c:1154
#5  0x0000003822c483aa in _cairo_surface_fill (surface=0x184d810, op=CAIRO_OPERATOR_OVER, source=0x7fffb5b6cc20, path=0x3822eab158, 
    fill_rule=CAIRO_FILL_RULE_WINDING, tolerance=0.10000000000000001, antialias=CAIRO_ANTIALIAS_DEFAULT, clip=0x7fffb5b6cd40)
    at cairo-surface.c:2163
#6  0x0000003822c219aa in _cairo_gstate_fill (gstate=0x3822eaae70, path=0x3822eab158) at cairo-gstate.c:1283
#7  0x0000003822c18c05 in cairo_fill_preserve (cr=0x3822eaae40) at cairo.c:2277
#8  0x0000003822c18c41 in cairo_fill (cr=0x3822eaae40) at cairo.c:2253
#9  0x00007f428892d9e0 in ?? () from /usr/lib64/gtk-2.0/2.10.0/engines/libclearlooks.so
#10 0x00007f428891c408 in gdk_rectangle_intersect () from /usr/lib64/gtk-2.0/2.10.0/engines/libclearlooks.so

It doesn't seem to be easily reproducable. 

I don't know the exact version of cairo I was using, but the file looked like this:

-rwxr-xr-x. 1 root root 3556033 Apr 24 09:04 /usr/lib64/libcairo.so.2.10907.0

which suggests master as of 9am EDT April 24th.
Comment 1 Chris Wilson 2012-04-20 08:37:10 UTC
Hmm, obsolete code now unfortunately. Would have been nice to have definitely nailed the bug first to be sure that it didn't exist elsewhere as well.

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.