Hang in pattern rendering
Found by AFL. Minimized:
<svg>
<pattern id="p1" xlink:href="#p1"/>
<pattern id="p2" xlink:href="#p1"/>
<rect fill="url(#p2)" width="100" height="100"/>
</svg>
Backtrace somewhere during the hang:
#0 0x00007ffff762f164 in <core::option::Option<T>>::map (self=..., f=0x7fffffffa908) at /checkout/src/libcore/option.rs:412
#1 0x00007ffff7c1b9db in rsvg_internals::pattern::resolve_pattern (pattern=0x55555559e6b8, draw_ctx=0x5555555a6800) at rsvg_internals/src/pattern.rs:242
#2 0x00007ffff7c1d212 in rsvg_internals::pattern::resolve_fallbacks_and_set_pattern (pattern=0x55555559e6b8, values=0x5555555b88a8, draw_ctx=0x5555555a6800, bbox=0x7fffffffb0d8) at rsvg_internals/src/pattern.rs:444
#3 0x00007ffff757a98b in rsvg_internals::pattern::pattern_resolve_fallbacks_and_set_pattern::{{closure}} (node_pattern=0x55555559e6b0) at rsvg_internals/src/pattern.rs:461
#4 0x00007ffff75f17e8 in rsvg_internals::node::Node::with_impl (self=0x5555555b8550, f=...) at rsvg_internals/src/node.rs:585
#5 0x00007ffff7c1d382 in rsvg_internals::pattern::pattern_resolve_fallbacks_and_set_pattern (node=0x7fffffffb028, draw_ctx=0x5555555a6800, bbox=0x7fffffffb0d8) at rsvg_internals/src/pattern.rs:456
#6 0x00007ffff7586b5a in rsvg_internals::paint_server::set_source_paint_server (draw_ctx=0x5555555a6800, ps=0x5555555b8f50, opacity=0x5555555b8f70, bbox=0x7fffffffb0d8, current_color=0x5555555b90c2) at rsvg_internals/src/paint_server.rs:99
#7 0x00007ffff75fbd8b in rsvg_internals::drawing_ctx::DrawingCtx::stroke_and_fill (self=0x5555555a6800, cr=0x7fffffffb210, values=0x5555555b8f28) at rsvg_internals/src/drawing_ctx.rs:693
#8 0x00007ffff75f7ed3 in rsvg_internals::shapes::render_path_builder::{{closure}} (dc=0x5555555a6800) at rsvg_internals/src/shapes.rs:36
#9 0x00007ffff75fa449 in rsvg_internals::drawing_ctx::DrawingCtx::with_discrete_layer (self=0x5555555a6800, node=0x7fffffffc168, values=0x5555555b8f28, clipping=false, draw_fn=...) at rsvg_internals/src/drawing_ctx.rs:429
#10 0x00007ffff7c0530a in rsvg_internals::shapes::render_path_builder (builder=0x7fffffffbd78, draw_ctx=0x5555555a6800, node=0x7fffffffc168, values=0x5555555b8f28, render_markers=false, clipping=false) at rsvg_internals/src/shapes.rs:26
#11 0x00007ffff7c094d7 in <rsvg_internals::shapes::NodeRect as rsvg_internals::node::NodeTrait>::draw (self=0x5555555ad450, node=0x7fffffffc168, cascaded=0x7fffffffc180, draw_ctx=0x5555555a6800, clipping=false)
at rsvg_internals/src/shapes.rs:508
#12 0x00007ffff76703a8 in rsvg_internals::node::Node::draw (self=0x5555555b8bd0, node=0x7fffffffc168, cascaded=0x7fffffffc180, draw_ctx=0x5555555a6800, clipping=false) at rsvg_internals/src/node.rs:550
#13 0x00007ffff75fc7b1 in rsvg_internals::drawing_ctx::DrawingCtx::draw_node_from_stack (self=0x5555555a6800, cascaded=0x7fffffffc180, node=0x7fffffffc168, clipping=false) at rsvg_internals/src/drawing_ctx.rs:810
#14 0x00007ffff7670c68 in rsvg_internals::node::Node::draw_children (self=0x5555555b0940, cascaded=0x7fffffffd528, draw_ctx=0x5555555a6800, clipping=false) at rsvg_internals/src/node.rs:602
#15 0x00007ffff75ed137 in <rsvg_internals::structure::NodeSvg as rsvg_internals::node::NodeTrait>::draw::{{closure}} (dc=0x5555555a6800) at rsvg_internals/src/structure.rs:222
#16 0x00007ffff7c0c4ae in rsvg_internals::viewport::draw_in_viewport::{{closure}} (dc=0x5555555a6800) at rsvg_internals/src/viewport.rs:83
#17 0x00007ffff75fa449 in rsvg_internals::drawing_ctx::DrawingCtx::with_discrete_layer (self=0x5555555a6800, node=0x5555555b0e80, values=0x5555555b0c98, clipping=false, draw_fn=...) at rsvg_internals/src/drawing_ctx.rs:429
#18 0x00007ffff7628f57 in rsvg_internals::viewport::draw_in_viewport
(vx=0, vy=0, vw=1, vh=1, clip_mode=rsvg_internals::viewport::ClipMode::ClipToViewport, do_clip=false, vbox=..., preserve_aspect_ratio=..., node=0x5555555b0e80, values=0x5555555b0c98, affine=..., draw_ctx=0x5555555a6800, clipping=false, dra
w_fn=...) at rsvg_internals/src/viewport.rs:44
#19 0x00007ffff7564a93 in <rsvg_internals::structure::NodeSvg as rsvg_internals::node::NodeTrait>::draw (self=0x555555593840, node=0x5555555b0e80, cascaded=0x7fffffffd528, draw_ctx=0x5555555a6800, clipping=false)
at rsvg_internals/src/structure.rs:206
#20 0x00007ffff76703a8 in rsvg_internals::node::Node::draw (self=0x5555555b0940, node=0x5555555b0e80, cascaded=0x7fffffffd528, draw_ctx=0x5555555a6800, clipping=false) at rsvg_internals/src/node.rs:550
#21 0x00007ffff75fc7b1 in rsvg_internals::drawing_ctx::DrawingCtx::draw_node_from_stack (self=0x5555555a6800, cascaded=0x7fffffffd528, node=0x5555555b0e80, clipping=false) at rsvg_internals/src/drawing_ctx.rs:810
#22 0x00007ffff75fd29b in rsvg_drawing_ctx_draw_node_from_stack (raw_draw_ctx=0x5555555a6800, raw_tree=0x5555555b0e80) at rsvg_internals/src/drawing_ctx.rs:1062
#23 0x00007ffff75598bb in get_node_ink_rect (handle=handle@entry=0x5555555b2080, node=node@entry=0x5555555b1fa0, ink_rect=ink_rect@entry=0x7fffffffd7a0) at librsvg/rsvg-handle.c:1181
#24 0x00007ffff75593c3 in rsvg_handle_get_dimensions_sub (handle=handle@entry=0x5555555b2080, dimension_data=0x7fffffffd830, id=<optimized out>, id@entry=0x0) at librsvg/rsvg-handle.c:1244
#25 0x00007ffff7559432 in rsvg_handle_get_dimensions (handle=0x5555555b2080, dimension_data=<optimized out>) at librsvg/rsvg-handle.c:1150
#26 0x00007ffff755982d in get_node_ink_rect (handle=handle@entry=0x5555555b2080, node=node@entry=0x5555555b0f20, ink_rect=ink_rect@entry=0x7fffffffd8a0) at librsvg/rsvg-handle.c:1170
#27 0x00007ffff75593c3 in rsvg_handle_get_dimensions_sub (handle=0x5555555b2080, dimension_data=0x7fffffffd9f0, id=<optimized out>) at librsvg/rsvg-handle.c:1244
#28 0x0000555555556e17 in main (argc=<optimized out>, argv=<optimized out>) at rsvg-convert.c:321