rsvg-convert panics with 'Cairo error "out of memory"' at small sizes of specific SVG file
rsvg-convert 2.48.8 and earlier panic when trying to convert this file (source) to PNG with a width < 97px. Widths 97px or greater are processed without incident. This file makes heavy use of linear and radial gradients, but does not have very small numbers like #600.
$ RUST_BACKTRACE=full rsvg-convert -w 80 -f png -u -o Hematopoiesis_\(human\)_diagram_en.svg.png Hematopoiesis_\(human\)_diagram_en.svg
thread '<unnamed>' panicked at 'Cairo error "out of memory"', /home/ac/.cargo/registry/src/github.com-1ecc6299db9ec823/cairo-rs-0.8.1/src/enums.rs:274:13
stack backtrace:
0: 0x7f954e5b60f5 - backtrace::backtrace::libunwind::trace::he332cdcbba52aaad
at /build/rust/src/rustc-1.44.1-src/vendor/backtrace/src/backtrace/libunwind.rs:86
1: 0x7f954e5b60f5 - backtrace::backtrace::trace_unsynchronized::hef03e255f1bf514f
at /build/rust/src/rustc-1.44.1-src/vendor/backtrace/src/backtrace/mod.rs:66
2: 0x7f954e5b60f5 - std::sys_common::backtrace::_print_fmt::hb165a755ba92b1b4
at src/libstd/sys_common/backtrace.rs:78
3: 0x7f954e5b60f5 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h45e432f08dbe7d76
at src/libstd/sys_common/backtrace.rs:59
4: 0x7f954e5f883c - core::fmt::write::h73c3f84d9cf018c3
at src/libcore/fmt/mod.rs:1069
5: 0x7f954e5a77c3 - std::io::Write::write_fmt::h8ac7e773e542f3e7
at src/libstd/io/mod.rs:1504
6: 0x7f954e5baf30 - std::sys_common::backtrace::_print::he776a3581f8527e1
at src/libstd/sys_common/backtrace.rs:62
7: 0x7f954e5baf30 - std::sys_common::backtrace::print::h969151019a7e30fc
at src/libstd/sys_common/backtrace.rs:49
8: 0x7f954e5baf30 - std::panicking::default_hook::{{closure}}::hac98c3c5d7e976ca
at src/libstd/panicking.rs:198
9: 0x7f954e5bac7c - std::panicking::default_hook::h4e2eee37e61c3121
at src/libstd/panicking.rs:218
10: 0x7f954e5bb5d1 - std::panicking::rust_panic_with_hook::heb6c94442a23e0d6
at src/libstd/panicking.rs:511
11: 0x7f954e5bb1bb - rust_begin_unwind
at src/libstd/panicking.rs:419
12: 0x7f954e5bb12b - std::panicking::begin_panic_fmt::hc94e0c124ccb9400
at src/libstd/panicking.rs:373
13: 0x7f954e34d65f - cairo::enums::Status::ensure_valid::hd6191aa94860f3e3
at /home/ac/.cargo/registry/src/github.com-1ecc6299db9ec823/cairo-rs-0.8.1/src/enums.rs:274
14: 0x7f954e34d65f - cairo::context::Context::ensure_status::hfa67c6804a513a01
at /home/ac/.cargo/registry/src/github.com-1ecc6299db9ec823/cairo-rs-0.8.1/src/context.rs:158
15: 0x7f954e2b495b - rsvg_internals::drawing_ctx::DrawingCtx::with_saved_cr::hf90afa02f8b54f73
at rsvg_internals/src/drawing_ctx.rs:718
16: 0x7f954e2b495b - rsvg_internals::drawing_ctx::DrawingCtx::with_discrete_layer::hed0abaeb14f870e7
at rsvg_internals/src/drawing_ctx.rs:483
17: 0x7f954e2b495b - rsvg_internals::drawing_ctx::DrawingCtx::draw_path::h98927437d948c834
at rsvg_internals/src/drawing_ctx.rs:987
18: 0x7f954e30b9b7 - rsvg_internals::shapes::Shape::draw::h20e91fc7e029b8b4
at rsvg_internals/src/shapes.rs:45
19: 0x7f954e30b9b7 - <rsvg_internals::shapes::Path as rsvg_internals::node::NodeTrait>::draw::h16127ed5b3960751
at rsvg_internals/src/shapes.rs:145
20: 0x7f954e2f9c25 - <rctree::Node<rsvg_internals::node::NodeData> as rsvg_internals::node::NodeDraw>::draw::{{closure}}::h377f5252a50cbe1d
at rsvg_internals/src/node.rs:514
21: 0x7f954e2b1492 - rsvg_internals::drawing_ctx::DrawingCtx::with_saved_transform::h9c203864a7dbc3f7
at rsvg_internals/src/drawing_ctx.rs:656
22: 0x7f954e2f9a0c - <rctree::Node<rsvg_internals::node::NodeData> as rsvg_internals::node::NodeDraw>::draw::h0a56b7af4e87e7c8
at rsvg_internals/src/node.rs:513
23: 0x7f954e2b660b - rsvg_internals::drawing_ctx::DrawingCtx::draw_node_from_stack::h16c36180f0989c43
at rsvg_internals/src/drawing_ctx.rs:1106
24: 0x7f954e2f9f70 - <rctree::Node<rsvg_internals::node::NodeData> as rsvg_internals::node::NodeDraw>::draw_children::h5906702c42329072
at rsvg_internals/src/node.rs:536
25: 0x7f954e3108f5 - <rsvg_internals::structure::Group as rsvg_internals::node::NodeTrait>::draw::{{closure}}::h4143bbacef73ae53
at rsvg_internals/src/structure.rs:40
26: 0x7f954e2ae19b - rsvg_internals::drawing_ctx::DrawingCtx::with_discrete_layer::{{closure}}::he5b1be538be65245
at rsvg_internals/src/drawing_ctx.rs:627
27: 0x7f954e31089f - rsvg_internals::drawing_ctx::DrawingCtx::with_saved_cr::hf90afa02f8b54f73
at rsvg_internals/src/drawing_ctx.rs:717
28: 0x7f954e31089f - rsvg_internals::drawing_ctx::DrawingCtx::with_discrete_layer::hed0abaeb14f870e7
at rsvg_internals/src/drawing_ctx.rs:483
29: 0x7f954e31089f - <rsvg_internals::structure::Group as rsvg_internals::node::NodeTrait>::draw::hd8a5a9f0b3663dd6
at rsvg_internals/src/structure.rs:39
30: 0x7f954e2f9c25 - <rctree::Node<rsvg_internals::node::NodeData> as rsvg_internals::node::NodeDraw>::draw::{{closure}}::h377f5252a50cbe1d
at rsvg_internals/src/node.rs:514
31: 0x7f954e2b1492 - rsvg_internals::drawing_ctx::DrawingCtx::with_saved_transform::h9c203864a7dbc3f7
at rsvg_internals/src/drawing_ctx.rs:656
32: 0x7f954e2f9a0c - <rctree::Node<rsvg_internals::node::NodeData> as rsvg_internals::node::NodeDraw>::draw::h0a56b7af4e87e7c8
at rsvg_internals/src/node.rs:513
33: 0x7f954e2b660b - rsvg_internals::drawing_ctx::DrawingCtx::draw_node_from_stack::h16c36180f0989c43
at rsvg_internals/src/drawing_ctx.rs:1106
34: 0x7f954e2f9f70 - <rctree::Node<rsvg_internals::node::NodeData> as rsvg_internals::node::NodeDraw>::draw_children::h5906702c42329072
at rsvg_internals/src/node.rs:536
35: 0x7f954e3108f5 - <rsvg_internals::structure::Group as rsvg_internals::node::NodeTrait>::draw::{{closure}}::h4143bbacef73ae53
at rsvg_internals/src/structure.rs:40
36: 0x7f954e2ae19b - rsvg_internals::drawing_ctx::DrawingCtx::with_discrete_layer::{{closure}}::he5b1be538be65245
at rsvg_internals/src/drawing_ctx.rs:627
37: 0x7f954e31089f - rsvg_internals::drawing_ctx::DrawingCtx::with_saved_cr::hf90afa02f8b54f73
at rsvg_internals/src/drawing_ctx.rs:717
38: 0x7f954e31089f - rsvg_internals::drawing_ctx::DrawingCtx::with_discrete_layer::hed0abaeb14f870e7
at rsvg_internals/src/drawing_ctx.rs:483
39: 0x7f954e31089f - <rsvg_internals::structure::Group as rsvg_internals::node::NodeTrait>::draw::hd8a5a9f0b3663dd6
at rsvg_internals/src/structure.rs:39
40: 0x7f954e2f9c25 - <rctree::Node<rsvg_internals::node::NodeData> as rsvg_internals::node::NodeDraw>::draw::{{closure}}::h377f5252a50cbe1d
at rsvg_internals/src/node.rs:514
41: 0x7f954e2b1492 - rsvg_internals::drawing_ctx::DrawingCtx::with_saved_transform::h9c203864a7dbc3f7
at rsvg_internals/src/drawing_ctx.rs:656
42: 0x7f954e2f9a0c - <rctree::Node<rsvg_internals::node::NodeData> as rsvg_internals::node::NodeDraw>::draw::h0a56b7af4e87e7c8
at rsvg_internals/src/node.rs:513
43: 0x7f954e2b660b - rsvg_internals::drawing_ctx::DrawingCtx::draw_node_from_stack::h16c36180f0989c43
at rsvg_internals/src/drawing_ctx.rs:1106
44: 0x7f954e2f9f70 - <rctree::Node<rsvg_internals::node::NodeData> as rsvg_internals::node::NodeDraw>::draw_children::h5906702c42329072
at rsvg_internals/src/node.rs:536
45: 0x7f954e31265a - <rsvg_internals::structure::Svg as rsvg_internals::node::NodeTrait>::draw::{{closure}}::h89558813bfbd40f7
at rsvg_internals/src/structure.rs:263
46: 0x7f954e2ae19b - rsvg_internals::drawing_ctx::DrawingCtx::with_discrete_layer::{{closure}}::he5b1be538be65245
at rsvg_internals/src/drawing_ctx.rs:627
47: 0x7f954e3124c7 - rsvg_internals::drawing_ctx::DrawingCtx::with_saved_cr::hf90afa02f8b54f73
at rsvg_internals/src/drawing_ctx.rs:717
48: 0x7f954e3124c7 - rsvg_internals::drawing_ctx::DrawingCtx::with_discrete_layer::hed0abaeb14f870e7
at rsvg_internals/src/drawing_ctx.rs:483
49: 0x7f954e3124c7 - <rsvg_internals::structure::Svg as rsvg_internals::node::NodeTrait>::draw::h8ce269e49ffc4f01
at rsvg_internals/src/structure.rs:259
50: 0x7f954e2f9c25 - <rctree::Node<rsvg_internals::node::NodeData> as rsvg_internals::node::NodeDraw>::draw::{{closure}}::h377f5252a50cbe1d
at rsvg_internals/src/node.rs:514
51: 0x7f954e2b1492 - rsvg_internals::drawing_ctx::DrawingCtx::with_saved_transform::h9c203864a7dbc3f7
at rsvg_internals/src/drawing_ctx.rs:656
52: 0x7f954e2f9a0c - <rctree::Node<rsvg_internals::node::NodeData> as rsvg_internals::node::NodeDraw>::draw::h0a56b7af4e87e7c8
at rsvg_internals/src/node.rs:513
53: 0x7f954e2b660b - rsvg_internals::drawing_ctx::DrawingCtx::draw_node_from_stack::h16c36180f0989c43
at rsvg_internals/src/drawing_ctx.rs:1106
54: 0x7f954e2ed30a - rsvg_internals::handle::Handle::render_layer::h2fd964055d842fe4
at rsvg_internals/src/handle.rs:261
55: 0x7f954e25b761 - rsvg_c_api::c_api::CHandle::render_layer::hde0b2b3204fcb899
at librsvg/c_api.rs:960
56: 0x7f954e25d084 - rsvg_c_api::c_api::CHandle::render_cairo_sub::h22ea0596a07efc9d
at librsvg/c_api.rs:899
57: 0x7f954e25d084 - rsvg_rust_handle_render_cairo_sub
at librsvg/c_api.rs:1332
58: 0x55c1ca54d9ae - main
at /usr/src/debug/librsvg/rsvg-convert.c:602
59: 0x7f954d9f1002 - __libc_start_main
60: 0x55c1ca54e7ee - _start
61: 0x0 - <unknown>
fatal runtime error: failed to initiate panic, error 5
fish: “RUST_BACKTRACE=full rsvg-conver…” terminated by signal SIGABRT (Abort)
This issue was originally reported at https://phabricator.wikimedia.org/T258334 in rsvg-convert version 2.40.20. In pre-Rust versions of librsvg, rsvg-convert outputs a 0-byte file with no error message.