After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 738836 - Out-of-memory with very large SVG canvases is not handled correctly
Out-of-memory with very large SVG canvases is not handled correctly
Status: RESOLVED OBSOLETE
Product: librsvg
Classification: Core
Component: general
unspecified
Other Linux
: High major
: ---
Assigned To: librsvg maintainers
librsvg maintainers
: 748486 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2014-10-20 04:50 UTC by Felipe Lessa
Modified: 2017-12-13 18:04 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Felipe Lessa 2014-10-20 04:50:04 UTC
I have a bunch of computer generated SVG files.  Some of them cause tracker-extract to dump core.  The following is the smallest of them (no google account required):

https://drive.google.com/open?id=0B1RQL7VdLXBkWWtYb1hxckNTa3M

The core dump is too large and not saved by my journald.

This may be a bug in gstreamer, since apparently that's what's being used to process it:

$ /usr/lib/tracker/tracker-extract --file=rfam61-upgma-microRNAs.svg -v 3
Locale 'TRACKER_LOCALE_LANGUAGE' was set to 'pt_BR.utf8'
Locale 'TRACKER_LOCALE_TIME' was set to 'pt_BR.utf8'
Locale 'TRACKER_LOCALE_COLLATE' was set to 'pt_BR.utf8'
Locale 'TRACKER_LOCALE_NUMERIC' was set to 'pt_BR.utf8'
Locale 'TRACKER_LOCALE_MONETARY' was set to 'pt_BR.utf8'
Setting scheduler policy to SCHED_IDLE
Setting priority nice level to 19
Loading extractor rules... (/usr/share/tracker/extract-rules)
  Loaded rule '10-abw.rule'
  Loaded rule '10-bmp.rule'
  Loaded rule '10-comics.rule'
  Loaded rule '10-dvi.rule'
  Loaded rule '10-ebooks.rule'
  Loaded rule '10-epub.rule'
  Loaded rule '10-flac.rule'
  Loaded rule '10-gif.rule'
  Loaded rule '10-html.rule'
  Loaded rule '10-ico.rule'
  Loaded rule '10-jpeg.rule'
  Loaded rule '10-mp3.rule'
  Loaded rule '10-msoffice.rule'
  Loaded rule '10-oasis.rule'
  Loaded rule '10-pdf.rule'
  Loaded rule '10-png.rule'
  Loaded rule '10-ps.rule'
  Loaded rule '10-svg.rule'
  Loaded rule '10-tiff.rule'
  Loaded rule '10-vorbis.rule'
  Loaded rule '10-xmp.rule'
  Loaded rule '10-xps.rule'
  Loaded rule '11-msoffice-xml.rule'
  Loaded rule '15-gstreamer-guess.rule'
  Loaded rule '15-playlist.rule'
  Loaded rule '15-source-code.rule'
  Loaded rule '90-gstreamer-audio-generic.rule'
  Loaded rule '90-gstreamer-image-generic.rule'
  Loaded rule '90-gstreamer-video-generic.rule'
  Loaded rule '90-text-generic.rule'
Extractor rules loaded
Initializing media art processing requirements...
No mounts found to iterate
Setting memory limitations: total is 16,8 GB, minimum is 256 MB, recommended is ~1 GB
  Virtual/Heap set to 8,4 GB (50% of total or MAXLONG)
MIME type guessed as 'image/svg+xml' (from GIO)
Using /usr/lib/tracker-1.0/extract-modules/libextract-gstreamer.so...
GStreamer backend in use:
  Discoverer/GUPnP-DLNA
Falha de segmentação (imagem do núcleo gravada)

I'm on x86-64 Arch Linux using tracker 1.2.2-1 and gstreamer 1.4.3-1.
Comment 1 Martyn Russell 2014-10-28 09:41:00 UTC
Thanks for the bug report, reassigning
Comment 2 Sebastian Dröge (slomo) 2014-10-28 09:47:22 UTC
Thanks for taking the time to report this bug.
Without a stack trace from the crash it's very hard to determine what caused it.
Can you get us a stack trace? Please see http://live.gnome.org/GettingTraces for more information on how to do so. Thanks in advance!
Comment 3 Felipe Lessa 2014-10-28 14:33:12 UTC
I had a bit of trouble recompiling the packages with debug symbols on Arch, so I don't know if the information below is enough.  Please let me know if not and I'll dig further.

So perhaps it's a bug on librsvg after all?

$ gdb /usr/lib/tracker/tracker-extract
GNU gdb (GDB) 7.8
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/lib/tracker/tracker-extract...done.
(gdb) run --file=rfam61-upgma-microRNAs.svg -v 3
Starting program: /usr/lib/tracker/tracker-extract --file=rfam61-upgma-microRNAs.svg -v 3
warning: Could not load shared library symbols for linux-vdso.so.1.
Do you need "set solib-search-path" or "set sysroot"?
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[New Thread 0x7fffee879700 (LWP 24732)]
[New Thread 0x7fffed526700 (LWP 24735)]
[New Thread 0x7fffec8af700 (LWP 24737)]
Locale 'TRACKER_LOCALE_LANGUAGE' was set to 'pt_BR.utf8'
Locale 'TRACKER_LOCALE_TIME' was set to 'pt_BR.utf8'
Locale 'TRACKER_LOCALE_COLLATE' was set to 'pt_BR.utf8'
Locale 'TRACKER_LOCALE_NUMERIC' was set to 'pt_BR.utf8'
Locale 'TRACKER_LOCALE_MONETARY' was set to 'pt_BR.utf8'
Setting priority nice level to 19
Loading extractor rules... (/usr/share/tracker/extract-rules)
  Loaded rule '10-abw.rule'
  Loaded rule '10-bmp.rule'
  Loaded rule '10-comics.rule'
  Loaded rule '10-dvi.rule'
  Loaded rule '10-ebooks.rule'
  Loaded rule '10-epub.rule'
  Loaded rule '10-flac.rule'
  Loaded rule '10-gif.rule'
  Loaded rule '10-html.rule'
  Loaded rule '10-ico.rule'
  Loaded rule '10-jpeg.rule'
  Loaded rule '10-mp3.rule'
  Loaded rule '10-msoffice.rule'
  Loaded rule '10-oasis.rule'
  Loaded rule '10-pdf.rule'
  Loaded rule '10-png.rule'
  Loaded rule '10-ps.rule'
  Loaded rule '10-svg.rule'
  Loaded rule '10-tiff.rule'
  Loaded rule '10-vorbis.rule'
  Loaded rule '10-xmp.rule'
  Loaded rule '10-xps.rule'
  Loaded rule '11-iso.rule'
  Loaded rule '11-msoffice-xml.rule'
  Loaded rule '15-gstreamer-guess.rule'
  Loaded rule '15-playlist.rule'
  Loaded rule '15-source-code.rule'
  Loaded rule '90-gstreamer-audio-generic.rule'
  Loaded rule '90-gstreamer-image-generic.rule'
  Loaded rule '90-gstreamer-video-generic.rule'
  Loaded rule '90-text-generic.rule'
Extractor rules loaded
[New Thread 0x7fffdffff700 (LWP 24738)]
[New Thread 0x7fffdf7fe700 (LWP 24739)]
[New Thread 0x7fffdeffd700 (LWP 24740)]
[New Thread 0x7fffde7fc700 (LWP 24741)]
[New Thread 0x7fffddffb700 (LWP 24742)]
[New Thread 0x7fffdd7fa700 (LWP 24743)]
[New Thread 0x7fffdcff9700 (LWP 24744)]
[New Thread 0x7fffdc7f8700 (LWP 24745)]
[New Thread 0x7fffdbff7700 (LWP 24746)]
[New Thread 0x7fffdb7f6700 (LWP 24747)]
Initializing media art processing requirements...
No mounts found to iterate
Setting memory limitations: total is 16,8 GB, minimum is 256 MB, recommended is ~1 GB
  Virtual/Heap set to 8,4 GB (50% of total or MAXLONG)
MIME type guessed as 'image/svg+xml' (from GIO)
Using /usr/lib/tracker-1.0/extract-modules/libextract-gstreamer.so...
GStreamer backend in use:
  Discoverer/GUPnP-DLNA
[New Thread 0x7fffd9631700 (LWP 24750)]
[New Thread 0x7fffcd466700 (LWP 24751)]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffd9631700 (LWP 24750)]
0x00007fffd2d1a160 in ?? () from /usr/lib/libcairo.so.2
(gdb) thread apply all bt

Thread 16 (Thread 0x7fffcd466700 (LWP 24751))

  • #0 syscall
    from /usr/lib/libc.so.6
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 gst_queue_loop
    at gstqueue.c line 1252
  • #3 gst_task_func
    at gsttask.c line 317
  • #4 ??
    from /usr/lib/libglib-2.0.so.0
  • #5 ??
    from /usr/lib/libglib-2.0.so.0
  • #6 start_thread
    from /usr/lib/libpthread.so.0
  • #7 clone
    from /usr/lib/libc.so.6

Thread 14 (Thread 0x7fffdb7f6700 (LWP 24747))

  • #0 syscall
    from /usr/lib/libc.so.6
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 ??
    from /usr/lib/libglib-2.0.so.0
  • #3 ??
    from /usr/lib/libglib-2.0.so.0
  • #4 ??
    from /usr/lib/libglib-2.0.so.0
  • #5 start_thread
    from /usr/lib/libpthread.so.0
  • #6 clone
    from /usr/lib/libc.so.6

Thread 13 (Thread 0x7fffdbff7700 (LWP 24746))

  • #0 syscall
    from /usr/lib/libc.so.6
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 ??
    from /usr/lib/libglib-2.0.so.0
  • #3 ??
    from /usr/lib/libglib-2.0.so.0
  • #4 ??
    from /usr/lib/libglib-2.0.so.0
  • #5 start_thread
    from /usr/lib/libpthread.so.0
  • #6 clone
    from /usr/lib/libc.so.6

Thread 12 (Thread 0x7fffdc7f8700 (LWP 24745))

  • #0 syscall
    from /usr/lib/libc.so.6
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 ??
    from /usr/lib/libglib-2.0.so.0
  • #3 ??
    from /usr/lib/libglib-2.0.so.0
  • #4 ??
    from /usr/lib/libglib-2.0.so.0
  • #5 start_thread
    from /usr/lib/libpthread.so.0
  • #6 clone
    from /usr/lib/libc.so.6

Thread 11 (Thread 0x7fffdcff9700 (LWP 24744))

  • #0 syscall
    from /usr/lib/libc.so.6
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 ??
    from /usr/lib/libglib-2.0.so.0
  • #3 ??
    from /usr/lib/libglib-2.0.so.0
  • #4 ??
    from /usr/lib/libglib-2.0.so.0
  • #5 start_thread
    from /usr/lib/libpthread.so.0
  • #6 clone
    from /usr/lib/libc.so.6

Thread 10 (Thread 0x7fffdd7fa700 (LWP 24743))

  • #0 syscall
    from /usr/lib/libc.so.6
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 ??
    from /usr/lib/libglib-2.0.so.0
  • #3 ??
    from /usr/lib/libglib-2.0.so.0
  • #4 ??
    from /usr/lib/libglib-2.0.so.0
  • #5 start_thread
    from /usr/lib/libpthread.so.0
  • #6 clone
    from /usr/lib/libc.so.6

Thread 9 (Thread 0x7fffddffb700 (LWP 24742))

  • #0 syscall
    from /usr/lib/libc.so.6
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 ??
    from /usr/lib/libglib-2.0.so.0
  • #3 ??
    from /usr/lib/libglib-2.0.so.0
  • #4 ??
    from /usr/lib/libglib-2.0.so.0
  • #5 start_thread
    from /usr/lib/libpthread.so.0
  • #6 clone
    from /usr/lib/libc.so.6

Thread 8 (Thread 0x7fffde7fc700 (LWP 24741))

  • #0 syscall
    from /usr/lib/libc.so.6
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 ??
    from /usr/lib/libglib-2.0.so.0
  • #3 ??
    from /usr/lib/libglib-2.0.so.0
  • #4 ??
    from /usr/lib/libglib-2.0.so.0
  • #5 start_thread
    from /usr/lib/libpthread.so.0
  • #6 clone
    from /usr/lib/libc.so.6

Thread 7 (Thread 0x7fffdeffd700 (LWP 24740))

  • #0 syscall
    from /usr/lib/libc.so.6
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 ??
    from /usr/lib/libglib-2.0.so.0
  • #3 ??
    from /usr/lib/libglib-2.0.so.0
  • #4 ??
    from /usr/lib/libglib-2.0.so.0
  • #5 start_thread
    from /usr/lib/libpthread.so.0
  • #6 clone
    from /usr/lib/libc.so.6

Thread 6 (Thread 0x7fffdf7fe700 (LWP 24739))

  • #0 syscall
    from /usr/lib/libc.so.6
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 ??
    from /usr/lib/libglib-2.0.so.0
  • #3 ??
    from /usr/lib/libglib-2.0.so.0
  • #4 ??
    from /usr/lib/libglib-2.0.so.0
  • #5 start_thread
    from /usr/lib/libpthread.so.0
  • #6 clone
    from /usr/lib/libc.so.6

Thread 5 (Thread 0x7fffdffff700 (LWP 24738))

  • #0 syscall
    from /usr/lib/libc.so.6
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 ??
    from /usr/lib/libglib-2.0.so.0
  • #3 ??
    from /usr/lib/libglib-2.0.so.0
  • #4 ??
    from /usr/lib/libglib-2.0.so.0
  • #5 start_thread
    from /usr/lib/libpthread.so.0
  • #6 clone
    from /usr/lib/libc.so.6

Comment 4 Luis de Bethencourt 2014-10-28 14:47:59 UTC
Felipe,

Have you seen this Arch Wiki page?
https://wiki.archlinux.org/index.php/Debug_-_Getting_Traces
Comment 5 Felipe Lessa 2014-10-28 14:53:26 UTC
Yes, I have, thanks. But I had troubles reinstalling two packages. Before spending time understanding why, I decided to ask if the partial stack trace was enough. :)
Comment 6 Luis de Bethencourt 2014-10-28 15:00:18 UTC
It isn't enough, but I am rebuilding glibc in my system with debug flags to try to reproduce.
Comment 7 Felipe Lessa 2014-10-28 15:54:50 UTC
Is it okay now?

$ gdb /usr/lib/tracker/tracker-extract
GNU gdb (GDB) 7.8
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/lib/tracker/tracker-extract...done.
(gdb) run --file=rfam61-upgma-microRNAs.svg -v 3
Starting program: /usr/lib/tracker/tracker-extract --file=rfam61-upgma-microRNAs.svg -v 3
warning: Could not load shared library symbols for linux-vdso.so.1.
Do you need "set solib-search-path" or "set sysroot"?
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[New Thread 0x7fffee871700 (LWP 14819)]
[New Thread 0x7fffee070700 (LWP 14820)]
[New Thread 0x7fffec8a7700 (LWP 14821)]
Locale 'TRACKER_LOCALE_LANGUAGE' was set to 'pt_BR.utf8'
Locale 'TRACKER_LOCALE_TIME' was set to 'pt_BR.utf8'
Locale 'TRACKER_LOCALE_COLLATE' was set to 'pt_BR.utf8'
Locale 'TRACKER_LOCALE_NUMERIC' was set to 'pt_BR.utf8'
Locale 'TRACKER_LOCALE_MONETARY' was set to 'pt_BR.utf8'
Setting priority nice level to 19
Loading extractor rules... (/usr/share/tracker/extract-rules)
  Loaded rule '10-abw.rule'
  Loaded rule '10-bmp.rule'
  Loaded rule '10-comics.rule'
  Loaded rule '10-dvi.rule'
  Loaded rule '10-ebooks.rule'
  Loaded rule '10-epub.rule'
  Loaded rule '10-flac.rule'
  Loaded rule '10-gif.rule'
  Loaded rule '10-html.rule'
  Loaded rule '10-ico.rule'
  Loaded rule '10-jpeg.rule'
  Loaded rule '10-mp3.rule'
  Loaded rule '10-msoffice.rule'
  Loaded rule '10-oasis.rule'
  Loaded rule '10-pdf.rule'
  Loaded rule '10-png.rule'
  Loaded rule '10-ps.rule'
  Loaded rule '10-svg.rule'
  Loaded rule '10-tiff.rule'
  Loaded rule '10-vorbis.rule'
  Loaded rule '10-xmp.rule'
  Loaded rule '10-xps.rule'
  Loaded rule '11-iso.rule'
  Loaded rule '11-msoffice-xml.rule'
  Loaded rule '15-gstreamer-guess.rule'
  Loaded rule '15-playlist.rule'
  Loaded rule '15-source-code.rule'
  Loaded rule '90-gstreamer-audio-generic.rule'
  Loaded rule '90-gstreamer-image-generic.rule'
  Loaded rule '90-gstreamer-video-generic.rule'
  Loaded rule '90-text-generic.rule'
Extractor rules loaded
[New Thread 0x7fffdffff700 (LWP 14822)]
[New Thread 0x7fffdf7fe700 (LWP 14823)]
[New Thread 0x7fffdeffd700 (LWP 14824)]
[New Thread 0x7fffde7fc700 (LWP 14825)]
[New Thread 0x7fffddffb700 (LWP 14826)]
[New Thread 0x7fffdd7fa700 (LWP 14827)]
[New Thread 0x7fffdcff9700 (LWP 14828)]
[New Thread 0x7fffdc7f8700 (LWP 14829)]
[New Thread 0x7fffdbff7700 (LWP 14830)]
[New Thread 0x7fffdb7f6700 (LWP 14831)]
Initializing media art processing requirements...
No mounts found to iterate
Setting memory limitations: total is 16,8 GB, minimum is 256 MB, recommended is ~1 GB
  Virtual/Heap set to 8,4 GB (50% of total or MAXLONG)
MIME type guessed as 'image/svg+xml' (from GIO)
Using /usr/lib/tracker-1.0/extract-modules/libextract-gstreamer.so...
GStreamer backend in use:
  Discoverer/GUPnP-DLNA
[New Thread 0x7fffd962d700 (LWP 14832)]
[New Thread 0x7fffcd461700 (LWP 14833)]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffd962d700 (LWP 14832)]
_fill_xrgb32_lerp_opaque_spans (abstract_renderer=0x7fffd962a570, y=23789, h=24305, spans=0x7fffd9629450, num_spans=3)
    at cairo-image-compositor.c:2280
2280	cairo-image-compositor.c: Arquivo ou diretório não encontrado.
(gdb) thread apply all bt

Thread 16 (Thread 0x7fffcd461700 (LWP 14833))

  • #0 syscall
    at ../sysdeps/unix/sysv/linux/x86_64/syscall.S line 38
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 gst_queue_loop
    at gstqueue.c line 1252
  • #3 gst_task_func
    at gsttask.c line 317
  • #4 ??
    from /usr/lib/libglib-2.0.so.0
  • #5 ??
    from /usr/lib/libglib-2.0.so.0
  • #6 start_thread
    at pthread_create.c line 310
  • #7 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 109

Thread 15 (Thread 0x7fffd962d700 (LWP 14832))

  • #0 _fill_xrgb32_lerp_opaque_spans
    at cairo-image-compositor.c line 2280
  • #1 generate_row
    at cairo-rectangular-scan-converter.c line 625
  • #2 generate_box
    at cairo-rectangular-scan-converter.c line 643
  • #3 _cairo_rectangular_scan_converter_generate
    at cairo-rectangular-scan-converter.c line 673
  • #4 composite_boxes
    at cairo-spans-compositor.c line 741
  • #5 clip_and_composite_boxes
    at cairo-spans-compositor.c line 887
  • #6 clip_and_composite_boxes
    at cairo-spans-compositor.c line 901
  • #7 _cairo_spans_compositor_fill
    at cairo-spans-compositor.c line 1126
  • #8 _cairo_compositor_fill
    at cairo-compositor.c line 203
  • #9 _cairo_image_surface_fill
    at cairo-image-surface.c line 985
  • #10 _cairo_surface_fill
  • #11 _cairo_gstate_fill
    at cairo-gstate.c line 1317
  • #12 INT_cairo_fill_preserve
    at cairo.c line 2231
  • #13 rsvg_cairo_render_path
    at rsvg-cairo-draw.c line 532
  • #14 rsvg_render_path
    at rsvg-base.c line 1994
  • #15 rsvg_node_draw
    at rsvg-structure.c line 69
  • #16 _rsvg_node_draw_children
    at rsvg-structure.c line 87
  • #17 rsvg_node_draw
    at rsvg-structure.c line 69
  • #18 rsvg_node_svg_draw
    at rsvg-structure.c line 323
  • #19 rsvg_node_draw
    at rsvg-structure.c line 69
  • #20 rsvg_handle_render_cairo_sub
    at rsvg-cairo-render.c line 225
  • #21 gst_rsvg_decode_image
    at gstrsvgdec.c line 238
  • #22 gst_rsvg_dec_handle_frame
    at gstrsvgdec.c line 342
  • #23 gst_video_decoder_decode_frame
    at gstvideodecoder.c line 3007
  • #24 gst_video_decoder_have_frame
    at gstvideodecoder.c line 2939
  • #25 gst_video_decoder_parse_available
    at gstvideodecoder.c line 941
  • #26 gst_video_decoder_chain_forward
    at gstvideodecoder.c line 1880
  • #27 gst_video_decoder_chain
    at gstvideodecoder.c line 2175
  • #28 gst_pad_chain_data_unchecked
    at gstpad.c line 3836
  • #29 gst_pad_push_data
    at gstpad.c line 4069
  • #30 gst_type_find_element_loop
    at gsttypefindelement.c line 1110
  • #31 gst_task_func
    at gsttask.c line 317
  • #32 ??
    from /usr/lib/libglib-2.0.so.0
  • #33 ??
    from /usr/lib/libglib-2.0.so.0
  • #34 start_thread
    at pthread_create.c line 310
  • #35 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 109

Thread 14 (Thread 0x7fffdb7f6700 (LWP 14831))

  • #0 syscall
    at ../sysdeps/unix/sysv/linux/x86_64/syscall.S line 38
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 ??
    from /usr/lib/libglib-2.0.so.0
  • #3 ??
    from /usr/lib/libglib-2.0.so.0
  • #4 ??
    from /usr/lib/libglib-2.0.so.0
  • #5 start_thread
    at pthread_create.c line 310
  • #6 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 109

Thread 13 (Thread 0x7fffdbff7700 (LWP 14830))

  • #0 syscall
    at ../sysdeps/unix/sysv/linux/x86_64/syscall.S line 38
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 ??
    from /usr/lib/libglib-2.0.so.0
  • #3 ??
    from /usr/lib/libglib-2.0.so.0
  • #4 ??
    from /usr/lib/libglib-2.0.so.0
  • #5 start_thread
    at pthread_create.c line 310
  • #6 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 109

Thread 12 (Thread 0x7fffdc7f8700 (LWP 14829))

  • #0 syscall
    at ../sysdeps/unix/sysv/linux/x86_64/syscall.S line 38
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 ??
    from /usr/lib/libglib-2.0.so.0
  • #3 ??
    from /usr/lib/libglib-2.0.so.0
  • #4 ??
    from /usr/lib/libglib-2.0.so.0
  • #5 start_thread
    at pthread_create.c line 310
  • #6 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 109

Thread 11 (Thread 0x7fffdcff9700 (LWP 14828))

  • #0 syscall
    at ../sysdeps/unix/sysv/linux/x86_64/syscall.S line 38
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 ??
    from /usr/lib/libglib-2.0.so.0
  • #3 ??
    from /usr/lib/libglib-2.0.so.0
  • #4 ??
    from /usr/lib/libglib-2.0.so.0
  • #5 start_thread
    at pthread_create.c line 310
  • #6 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 109

Thread 10 (Thread 0x7fffdd7fa700 (LWP 14827))

  • #0 syscall
    at ../sysdeps/unix/sysv/linux/x86_64/syscall.S line 38
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 ??
    from /usr/lib/libglib-2.0.so.0
  • #3 ??
    from /usr/lib/libglib-2.0.so.0
  • #4 ??
    from /usr/lib/libglib-2.0.so.0
  • #5 start_thread
    at pthread_create.c line 310
  • #6 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 109

Thread 9 (Thread 0x7fffddffb700 (LWP 14826))

  • #0 syscall
    at ../sysdeps/unix/sysv/linux/x86_64/syscall.S line 38
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 ??
    from /usr/lib/libglib-2.0.so.0
  • #3 ??
    from /usr/lib/libglib-2.0.so.0
  • #4 ??
    from /usr/lib/libglib-2.0.so.0
  • #5 start_thread
    at pthread_create.c line 310
  • #6 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 109

Thread 8 (Thread 0x7fffde7fc700 (LWP 14825))

  • #0 syscall
    at ../sysdeps/unix/sysv/linux/x86_64/syscall.S line 38
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 ??
    from /usr/lib/libglib-2.0.so.0
  • #3 ??
    from /usr/lib/libglib-2.0.so.0
  • #4 ??
    from /usr/lib/libglib-2.0.so.0
  • #5 start_thread
    at pthread_create.c line 310
  • #6 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 109

Thread 7 (Thread 0x7fffdeffd700 (LWP 14824))

  • #0 syscall
    at ../sysdeps/unix/sysv/linux/x86_64/syscall.S line 38
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 ??
    from /usr/lib/libglib-2.0.so.0
  • #3 ??
    from /usr/lib/libglib-2.0.so.0
  • #4 ??
    from /usr/lib/libglib-2.0.so.0
  • #5 start_thread
    at pthread_create.c line 310
  • #6 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 109

Thread 6 (Thread 0x7fffdf7fe700 (LWP 14823))

  • #0 syscall
    at ../sysdeps/unix/sysv/linux/x86_64/syscall.S line 38
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 ??
    from /usr/lib/libglib-2.0.so.0
  • #3 ??
    from /usr/lib/libglib-2.0.so.0
  • #4 ??
    from /usr/lib/libglib-2.0.so.0
  • #5 start_thread
    at pthread_create.c line 310
  • #6 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 109

Thread 5 (Thread 0x7fffdffff700 (LWP 14822))

  • #0 syscall
    at ../sysdeps/unix/sysv/linux/x86_64/syscall.S line 38
  • #1 g_cond_wait
    from /usr/lib/libglib-2.0.so.0
  • #2 ??
    from /usr/lib/libglib-2.0.so.0
  • #3 ??
    from /usr/lib/libglib-2.0.so.0
  • #4 ??
    from /usr/lib/libglib-2.0.so.0
  • #5 start_thread
    at pthread_create.c line 310
  • #6 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 109

Comment 8 Felipe Lessa 2014-10-28 15:59:09 UTC
I guess I should mention the versions of a few key libraries:

core/glibc 2.20-2 (base)
core/glib2 2.42.0-1
extra/cairo 1.14.0-1
extra/librsvg 1:2.40.5-1
extra/gstreamer 1.4.3-1
extra/gst-plugins-base-libs 1.4.3-1
extra/gst-plugins-bad 1.4.3-1
extra/tracker 1.2.3-1 (gnome)

Instead of recompiling glib2, I've recompiled glib :P, so that's why there are a few missing symbols yet.  I'm rebuilding it at the moment.  (At first I thought glib was being specially treated like glibc, which is always stripped.)
Comment 9 Felipe Lessa 2014-10-28 16:01:10 UTC
Sorry for spamming with a triple-reply.  This one should be fine:

$ gdb /usr/lib/tracker/tracker-extract
GNU gdb (GDB) 7.8
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from /usr/lib/tracker/tracker-extract...done.
(gdb) run --file=rfam61-upgma-microRNAs.svg -v 3
Starting program: /usr/lib/tracker/tracker-extract --file=rfam61-upgma-microRNAs.svg -v 3
warning: Could not load shared library symbols for linux-vdso.so.1.
Do you need "set solib-search-path" or "set sysroot"?
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[New Thread 0x7fffee862700 (LWP 5654)]
[New Thread 0x7fffed099700 (LWP 5655)]
[New Thread 0x7fffec898700 (LWP 5656)]
Locale 'TRACKER_LOCALE_LANGUAGE' was set to 'pt_BR.utf8'
Locale 'TRACKER_LOCALE_TIME' was set to 'pt_BR.utf8'
Locale 'TRACKER_LOCALE_COLLATE' was set to 'pt_BR.utf8'
Locale 'TRACKER_LOCALE_NUMERIC' was set to 'pt_BR.utf8'
Locale 'TRACKER_LOCALE_MONETARY' was set to 'pt_BR.utf8'
Setting priority nice level to 19
Loading extractor rules... (/usr/share/tracker/extract-rules)
  Loaded rule '10-abw.rule'
  Loaded rule '10-bmp.rule'
  Loaded rule '10-comics.rule'
  Loaded rule '10-dvi.rule'
  Loaded rule '10-ebooks.rule'
  Loaded rule '10-epub.rule'
  Loaded rule '10-flac.rule'
  Loaded rule '10-gif.rule'
  Loaded rule '10-html.rule'
  Loaded rule '10-ico.rule'
  Loaded rule '10-jpeg.rule'
  Loaded rule '10-mp3.rule'
  Loaded rule '10-msoffice.rule'
  Loaded rule '10-oasis.rule'
  Loaded rule '10-pdf.rule'
  Loaded rule '10-png.rule'
  Loaded rule '10-ps.rule'
  Loaded rule '10-svg.rule'
  Loaded rule '10-tiff.rule'
  Loaded rule '10-vorbis.rule'
  Loaded rule '10-xmp.rule'
  Loaded rule '10-xps.rule'
  Loaded rule '11-iso.rule'
  Loaded rule '11-msoffice-xml.rule'
  Loaded rule '15-gstreamer-guess.rule'
  Loaded rule '15-playlist.rule'
  Loaded rule '15-source-code.rule'
  Loaded rule '90-gstreamer-audio-generic.rule'
  Loaded rule '90-gstreamer-image-generic.rule'
  Loaded rule '90-gstreamer-video-generic.rule'
  Loaded rule '90-text-generic.rule'
Extractor rules loaded
[New Thread 0x7fffdffff700 (LWP 5657)]
[New Thread 0x7fffdf7fe700 (LWP 5658)]
[New Thread 0x7fffdeffd700 (LWP 5659)]
[New Thread 0x7fffde7fc700 (LWP 5660)]
[New Thread 0x7fffddffb700 (LWP 5661)]
[New Thread 0x7fffdd7fa700 (LWP 5662)]
[New Thread 0x7fffdcff9700 (LWP 5663)]
[New Thread 0x7fffdc7f8700 (LWP 5664)]
[New Thread 0x7fffdbff7700 (LWP 5665)]
[New Thread 0x7fffdb7f6700 (LWP 5666)]
Initializing media art processing requirements...
No mounts found to iterate
Setting memory limitations: total is 16,8 GB, minimum is 256 MB, recommended is ~1 GB
  Virtual/Heap set to 8,4 GB (50% of total or MAXLONG)
MIME type guessed as 'image/svg+xml' (from GIO)
Using /usr/lib/tracker-1.0/extract-modules/libextract-gstreamer.so...
GStreamer backend in use:
  Discoverer/GUPnP-DLNA
[New Thread 0x7fffd962d700 (LWP 5667)]
[New Thread 0x7fffcd461700 (LWP 5668)]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffd962d700 (LWP 5667)]
_fill_xrgb32_lerp_opaque_spans (abstract_renderer=0x7fffd962a570, y=23789, h=24305, spans=0x7fffd9629450, num_spans=3)
    at cairo-image-compositor.c:2280
2280	cairo-image-compositor.c: Arquivo ou diretório não encontrado.
(gdb) thread apply all bt

Thread 16 (Thread 0x7fffcd461700 (LWP 5668))

  • #0 syscall
    at ../sysdeps/unix/sysv/linux/x86_64/syscall.S line 38
  • #1 g_cond_wait
    at gthread-posix.c line 1390
  • #2 gst_queue_loop
    at gstqueue.c line 1252
  • #3 gst_task_func
    at gsttask.c line 317
  • #4 g_thread_pool_thread_proxy
    at gthreadpool.c line 307
  • #5 g_thread_proxy
    at gthread.c line 764
  • #6 start_thread
    at pthread_create.c line 310
  • #7 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 109

Thread 15 (Thread 0x7fffd962d700 (LWP 5667))

  • #0 _fill_xrgb32_lerp_opaque_spans
    at cairo-image-compositor.c line 2280
  • #1 generate_row
    at cairo-rectangular-scan-converter.c line 625
  • #2 generate_box
    at cairo-rectangular-scan-converter.c line 643
  • #3 _cairo_rectangular_scan_converter_generate
    at cairo-rectangular-scan-converter.c line 673
  • #4 composite_boxes
    at cairo-spans-compositor.c line 741
  • #5 clip_and_composite_boxes
    at cairo-spans-compositor.c line 887
  • #6 clip_and_composite_boxes
    at cairo-spans-compositor.c line 901
  • #7 _cairo_spans_compositor_fill
    at cairo-spans-compositor.c line 1126
  • #8 _cairo_compositor_fill
    at cairo-compositor.c line 203
  • #9 _cairo_image_surface_fill
    at cairo-image-surface.c line 985
  • #10 _cairo_surface_fill
  • #11 _cairo_gstate_fill
    at cairo-gstate.c line 1317
  • #12 INT_cairo_fill_preserve
    at cairo.c line 2231
  • #13 rsvg_cairo_render_path
    at rsvg-cairo-draw.c line 532
  • #14 rsvg_render_path
    at rsvg-base.c line 1994
  • #15 rsvg_node_draw
    at rsvg-structure.c line 69
  • #16 _rsvg_node_draw_children
    at rsvg-structure.c line 87
  • #17 rsvg_node_draw
    at rsvg-structure.c line 69
  • #18 rsvg_node_svg_draw
    at rsvg-structure.c line 323
  • #19 rsvg_node_draw
    at rsvg-structure.c line 69
  • #20 rsvg_handle_render_cairo_sub
    at rsvg-cairo-render.c line 225
  • #21 gst_rsvg_decode_image
    at gstrsvgdec.c line 238
  • #22 gst_rsvg_dec_handle_frame
    at gstrsvgdec.c line 342
  • #23 gst_video_decoder_decode_frame
    at gstvideodecoder.c line 3007
  • #24 gst_video_decoder_have_frame
    at gstvideodecoder.c line 2939
  • #25 gst_video_decoder_parse_available
    at gstvideodecoder.c line 941
  • #26 gst_video_decoder_chain_forward
    at gstvideodecoder.c line 1880
  • #27 gst_video_decoder_chain
    at gstvideodecoder.c line 2175
  • #28 gst_pad_chain_data_unchecked
    at gstpad.c line 3836
  • #29 gst_pad_push_data
    at gstpad.c line 4069
  • #30 gst_type_find_element_loop
    at gsttypefindelement.c line 1110
  • #31 gst_task_func
    at gsttask.c line 317
  • #32 g_thread_pool_thread_proxy
    at gthreadpool.c line 307
  • #33 g_thread_proxy
    at gthread.c line 764
  • #34 start_thread
    at pthread_create.c line 310
  • #35 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 109

Thread 14 (Thread 0x7fffdb7f6700 (LWP 5666))

  • #0 syscall
    at ../sysdeps/unix/sysv/linux/x86_64/syscall.S line 38
  • #1 g_cond_wait
    at gthread-posix.c line 1390
  • #2 g_async_queue_pop_intern_unlocked
    at gasyncqueue.c line 419
  • #3 g_async_queue_pop_unlocked
    at gasyncqueue.c line 475
  • #4 g_thread_pool_wait_for_new_task
    at gthreadpool.c line 245
  • #5 g_thread_pool_thread_proxy
    at gthreadpool.c line 296
  • #6 g_thread_proxy
    at gthread.c line 764
  • #7 start_thread
    at pthread_create.c line 310
  • #8 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 109

Thread 13 (Thread 0x7fffdbff7700 (LWP 5665))

  • #0 syscall
    at ../sysdeps/unix/sysv/linux/x86_64/syscall.S line 38
  • #1 g_cond_wait
    at gthread-posix.c line 1390
  • #2 g_async_queue_pop_intern_unlocked
    at gasyncqueue.c line 419
  • #3 g_async_queue_pop_unlocked
    at gasyncqueue.c line 475
  • #4 g_thread_pool_wait_for_new_task
    at gthreadpool.c line 245
  • #5 g_thread_pool_thread_proxy
    at gthreadpool.c line 296
  • #6 g_thread_proxy
    at gthread.c line 764
  • #7 start_thread
    at pthread_create.c line 310
  • #8 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 109

Thread 12 (Thread 0x7fffdc7f8700 (LWP 5664))

  • #0 syscall
    at ../sysdeps/unix/sysv/linux/x86_64/syscall.S line 38
  • #1 g_cond_wait
    at gthread-posix.c line 1390
  • #2 g_async_queue_pop_intern_unlocked
    at gasyncqueue.c line 419
  • #3 g_async_queue_pop_unlocked
    at gasyncqueue.c line 475
  • #4 g_thread_pool_wait_for_new_task
    at gthreadpool.c line 245
  • #5 g_thread_pool_thread_proxy
    at gthreadpool.c line 296
  • #6 g_thread_proxy
    at gthread.c line 764
  • #7 start_thread
    at pthread_create.c line 310
  • #8 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 109

Thread 11 (Thread 0x7fffdcff9700 (LWP 5663))

  • #0 syscall
    at ../sysdeps/unix/sysv/linux/x86_64/syscall.S line 38
  • #1 g_cond_wait
    at gthread-posix.c line 1390
  • #2 g_async_queue_pop_intern_unlocked
    at gasyncqueue.c line 419
  • #3 g_async_queue_pop_unlocked
    at gasyncqueue.c line 475
  • #4 g_thread_pool_wait_for_new_task
    at gthreadpool.c line 245
  • #5 g_thread_pool_thread_proxy
    at gthreadpool.c line 296
  • #6 g_thread_proxy
    at gthread.c line 764
  • #7 start_thread
    at pthread_create.c line 310
  • #8 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 109

Thread 10 (Thread 0x7fffdd7fa700 (LWP 5662))

  • #0 syscall
    at ../sysdeps/unix/sysv/linux/x86_64/syscall.S line 38
  • #1 g_cond_wait
    at gthread-posix.c line 1390
  • #2 g_async_queue_pop_intern_unlocked
    at gasyncqueue.c line 419
  • #3 g_async_queue_pop_unlocked
    at gasyncqueue.c line 475
  • #4 g_thread_pool_wait_for_new_task
    at gthreadpool.c line 245
  • #5 g_thread_pool_thread_proxy
    at gthreadpool.c line 296
  • #6 g_thread_proxy
    at gthread.c line 764
  • #7 start_thread
    at pthread_create.c line 310
  • #8 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 109

Thread 9 (Thread 0x7fffddffb700 (LWP 5661))

  • #0 syscall
    at ../sysdeps/unix/sysv/linux/x86_64/syscall.S line 38
  • #1 g_cond_wait
    at gthread-posix.c line 1390
  • #2 g_async_queue_pop_intern_unlocked
    at gasyncqueue.c line 419
  • #3 g_async_queue_pop_unlocked
    at gasyncqueue.c line 475
  • #4 g_thread_pool_wait_for_new_task
    at gthreadpool.c line 245
  • #5 g_thread_pool_thread_proxy
    at gthreadpool.c line 296
  • #6 g_thread_proxy
    at gthread.c line 764
  • #7 start_thread
    at pthread_create.c line 310
  • #8 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 109

Thread 8 (Thread 0x7fffde7fc700 (LWP 5660))

  • #0 syscall
    at ../sysdeps/unix/sysv/linux/x86_64/syscall.S line 38
  • #1 g_cond_wait
    at gthread-posix.c line 1390
  • #2 g_async_queue_pop_intern_unlocked
    at gasyncqueue.c line 419
  • #3 g_async_queue_pop_unlocked
    at gasyncqueue.c line 475
  • #4 g_thread_pool_wait_for_new_task
    at gthreadpool.c line 245
  • #5 g_thread_pool_thread_proxy
    at gthreadpool.c line 296
  • #6 g_thread_proxy
    at gthread.c line 764
  • #7 start_thread
    at pthread_create.c line 310
  • #8 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 109

Thread 7 (Thread 0x7fffdeffd700 (LWP 5659))

  • #0 syscall
    at ../sysdeps/unix/sysv/linux/x86_64/syscall.S line 38
  • #1 g_cond_wait
    at gthread-posix.c line 1390
  • #2 g_async_queue_pop_intern_unlocked
    at gasyncqueue.c line 419
  • #3 g_async_queue_pop_unlocked
    at gasyncqueue.c line 475
  • #4 g_thread_pool_wait_for_new_task
    at gthreadpool.c line 245
  • #5 g_thread_pool_thread_proxy
    at gthreadpool.c line 296
  • #6 g_thread_proxy
    at gthread.c line 764
  • #7 start_thread
    at pthread_create.c line 310
  • #8 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 109

Thread 6 (Thread 0x7fffdf7fe700 (LWP 5658))

  • #0 syscall
    at ../sysdeps/unix/sysv/linux/x86_64/syscall.S line 38
  • #1 g_cond_wait
    at gthread-posix.c line 1390
  • #2 g_async_queue_pop_intern_unlocked
    at gasyncqueue.c line 419
  • #3 g_async_queue_pop_unlocked
    at gasyncqueue.c line 475
  • #4 g_thread_pool_wait_for_new_task
    at gthreadpool.c line 245
  • #5 g_thread_pool_thread_proxy
    at gthreadpool.c line 296
  • #6 g_thread_proxy
    at gthread.c line 764
  • #7 start_thread
    at pthread_create.c line 310
  • #8 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 109

Thread 5 (Thread 0x7fffdffff700 (LWP 5657))

  • #0 syscall
    at ../sysdeps/unix/sysv/linux/x86_64/syscall.S line 38
  • #1 g_cond_wait
    at gthread-posix.c line 1390
  • #2 g_async_queue_pop_intern_unlocked
    at gasyncqueue.c line 419
  • #3 g_async_queue_pop_unlocked
    at gasyncqueue.c line 475
  • #4 g_thread_pool_wait_for_new_task
    at gthreadpool.c line 245
  • #5 g_thread_pool_thread_proxy
    at gthreadpool.c line 296
  • #6 g_thread_proxy
    at gthread.c line 764
  • #7 start_thread
    at pthread_create.c line 310
  • #8 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 109

Comment 10 Felipe Lessa 2014-10-28 16:29:09 UTC
It seems that this bug is not gstreamer's fault after all.  I've just noticed that eog also crashes with this file (stack trace below), and only rsvg and cairo are mentioned.  (Or perhaps both are buggy.)

It looks like the problem is related to the fact that the SVG file defines its own size as 20000pt x 19031.425365pt.  These process use at least 2 GiB of RAM before dying.  Still, something else must be at play: I can see why it would use lots of RAM and thrash the system, but segfaulting looks unacceptable.

Thanks for looking into this issue :).


$ gdb eog
GNU gdb (GDB) 7.8
Copyright (C) 2014 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "x86_64-unknown-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
<http://www.gnu.org/software/gdb/documentation/>.
For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from eog...done.
(gdb) run rfam61-upgma-microRNAs.svg 
Starting program: /usr/bin/eog rfam61-upgma-microRNAs.svg
warning: Could not load shared library symbols for linux-vdso.so.1.
Do you need "set solib-search-path" or "set sysroot"?
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
[New Thread 0x7fffe9e99700 (LWP 21237)]
[New Thread 0x7fffe9494700 (LWP 21239)]
[New Thread 0x7fffe318d700 (LWP 21240)]
[New Thread 0x7fffe298c700 (LWP 21241)]

(eog:21233): GLib-GObject-WARNING **: The property GtkSettings:gtk-menu-images is deprecated and shouldn't be used anymore. It will be removed in a future version.

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffe318d700 (LWP 21240)]
_fill_xrgb32_lerp_opaque_spans (abstract_renderer=0x7fffe318aa20, y=23789, h=24305, spans=0x7fffe3189900, num_spans=3)
    at cairo-image-compositor.c:2280
2280	cairo-image-compositor.c: Arquivo ou diretório não encontrado.
(gdb) thread apply all bt

Thread 4 (Thread 0x7fffe318d700 (LWP 21240))

  • #0 _fill_xrgb32_lerp_opaque_spans
    at cairo-image-compositor.c line 2280
  • #1 generate_row
    at cairo-rectangular-scan-converter.c line 625
  • #2 generate_box
    at cairo-rectangular-scan-converter.c line 643
  • #3 _cairo_rectangular_scan_converter_generate
    at cairo-rectangular-scan-converter.c line 673
  • #4 composite_boxes
    at cairo-spans-compositor.c line 741
  • #5 clip_and_composite_boxes
    at cairo-spans-compositor.c line 887
  • #6 clip_and_composite_boxes
    at cairo-spans-compositor.c line 901
  • #7 _cairo_spans_compositor_fill
    at cairo-spans-compositor.c line 1126
  • #8 _cairo_compositor_fill
    at cairo-compositor.c line 203
  • #9 _cairo_image_surface_fill
    at cairo-image-surface.c line 985
  • #10 _cairo_surface_fill
  • #11 _cairo_gstate_fill
    at cairo-gstate.c line 1317
  • #12 INT_cairo_fill_preserve
    at cairo.c line 2231
  • #13 rsvg_cairo_render_path
    at rsvg-cairo-draw.c line 532
  • #14 rsvg_render_path
    at rsvg-base.c line 1994
  • #15 rsvg_node_draw
    at rsvg-structure.c line 69
  • #16 _rsvg_node_draw_children
    at rsvg-structure.c line 87
  • #17 rsvg_node_draw
    at rsvg-structure.c line 69
  • #18 rsvg_node_svg_draw
    at rsvg-structure.c line 323
  • #19 rsvg_node_draw
    at rsvg-structure.c line 69
  • #20 rsvg_handle_render_cairo_sub
    at rsvg-cairo-render.c line 225
  • #21 rsvg_handle_get_pixbuf_sub
    at rsvg.c line 90
  • #22 eog_image_real_load
    at eog-image.c line 1220
  • #23 eog_image_load
  • #24 eog_job_load_run
    at eog-jobs.c line 563
  • #25 eog_job_process
    at eog-job-scheduler.c line 153
  • #26 eog_job_scheduler
    at eog-job-scheduler.c line 128
  • #27 g_thread_proxy
    at gthread.c line 764
  • #28 start_thread
    at pthread_create.c line 310
  • #29 clone
    at ../sysdeps/unix/sysv/linux/x86_64/clone.S line 109

Comment 11 Luis de Bethencourt 2014-10-28 17:12:36 UTC
My small investigation also points out rsvg as the culprit.

No worries, our pleasure.
Comment 12 Federico Mena Quintero 2015-02-06 19:36:38 UTC
I don't get a crash in eog; it just gives me "Cannot open image".  Similarly, rsvg-view-3 simply gets an out-of-memory error from Cairo and refuses to render the image, but doesn't crash.

Given the point size and resolution, the SVG wants to be rendered by default at 25000x23789 pixels, which is under 3 GB just for the base surface (plus any extra memory for temporary buffers during the rendering process) :)

Some interesting things:

"rsvg-convert -z 0.5 example.svg > foo.png" succeeds, but generates an all-gray image, without any objects.

"rsvg-convert -z 0.4 example.svg > foo.png" succeeds and generates the image correctly.

My suspicion is that with zoom=0.5, generating the background surface succeeds, but then rsvg-convert is unable to allocate memory to render any other objects.  Librsvg may be failing to check for Cairo errors; I'll look into that.

(EOG should probably limit the maximum size of rendered SVGs...)

Since I don't actually get a crash, I'll lower the severity to major.
Comment 13 Martyn Russell 2015-05-31 12:36:11 UTC
*** Bug 748486 has been marked as a duplicate of this bug. ***
Comment 14 GNOME Infrastructure Team 2017-12-13 18:04:13 UTC
-- GitLab Migration Automatic Message --

This bug has been migrated to GNOME's GitLab instance and has been closed from further activity.

You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.gnome.org/GNOME/librsvg/issues/94.