Bug#757036: librsvg2-2: Stack overflow when thumbnailing deeply nested svg file from nautilus

Rabin Vincent rabin at rab.in
Mon Aug 4 18:49:22 UTC 2014


Package: librsvg2-2
Version: 2.40.2-1
Severity: important

nautilus crashes while attempting to thumbnail a deeply nested svg file,
and the crash is due to a stack overflow caused by librsvg2.

rabin at debian:~/test$ ls
test.svg
rabin at debian:~/test$ gdb -q --args nautilus .
Reading symbols from /usr/bin/nautilus...Reading symbols from
/usr/lib/debug/usr/bin/nautilus...done.
done.
(gdb) r
Starting program: /usr/bin/nautilus .
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 "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fffebb89700 (LWP 22913)]
[New Thread 0x7fffe89f1700 (LWP 22914)]
[New Thread 0x7fffe3df2700 (LWP 22915)]
[New Thread 0x7fffd0d70700 (LWP 22916)]
[New Thread 0x7fffc60e4700 (LWP 22917)]
[New Thread 0x7fffe8044700 (LWP 22918)]

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0x7fffe8044700 (LWP 22918)]
0x00007ffff3d6d8ef in str_to_mpn (str=str at entry=0x7fffe9cf1910 "1",
digcnt=digcnt at entry=1, n=n at entry=0x7fffe80250a0,
    nsize=nsize at entry=0x7fffe8025090, exponent=exponent at entry=0x7fffe8025098,
decimal_len=decimal_len at entry=1,
    thousands=thousands at entry=0x0, decimal=0x7ffff3e93d8c <dot.2505> ".") at
strtod_l.c:352
352     strtod_l.c: Filen eller katalogen finns inte.
(gdb) disas
Dump of assembler code for function str_to_mpn:
   0x00007ffff3d6d8e0 <+0>:     push   %r15
   0x00007ffff3d6d8e2 <+2>:     push   %r14
   0x00007ffff3d6d8e4 <+4>:     mov    %rcx,%r14
   0x00007ffff3d6d8e7 <+7>:     push   %r13
   0x00007ffff3d6d8e9 <+9>:     push   %r12
   0x00007ffff3d6d8eb <+11>:    mov    %esi,%r12d
   0x00007ffff3d6d8ee <+14>:    push   %rbp
=> 0x00007ffff3d6d8ef <+15>:    push   %rbx
   0x00007ffff3d6d8f0 <+16>:    sub    $0x18,%rsp
   0x00007ffff3d6d8f4 <+20>:    test   %esi,%esi
(gdb) bt 15
#0  0x00007ffff3d6d8ef in str_to_mpn (str=str at entry=0x7fffe9cf1910 "1",
digcnt=digcnt at entry=1,
    n=n at entry=0x7fffe80250a0, nsize=nsize at entry=0x7fffe8025090,
exponent=exponent at entry=0x7fffe8025098,
    decimal_len=decimal_len at entry=1, thousands=thousands at entry=0x0,
decimal=0x7ffff3e93d8c <dot.2505> ".")
    at strtod_l.c:352
#1  0x00007ffff3d6e9a9 in __GI_____strtod_l_internal (nptr=<optimized out>,
endptr=<optimized out>,
    group=<optimized out>, loc=0x7ffff40d2ae0 <_nl_C_locobj>) at
strtod_l.c:1198
#2  0x00007fffe9ccddb7 in rsvg_css_parse_raw_length (relative_size=<synthetic
pointer>, ex=<synthetic pointer>,
    em=<synthetic pointer>, percent=<synthetic pointer>, in=<synthetic
pointer>, str=str at entry=0x7fffe9cf1910 "1")
    at rsvg-css.c:116
#3  _rsvg_css_parse_length (str=str at entry=0x7fffe9cf1910 "1") at rsvg-css.c:189
#4  0x00007fffe9ce6478 in rsvg_state_init (state=state at entry=0x7fffb832a9c0) at
rsvg-styles.c:125
#5  0x00007fffe9ce7be0 in rsvg_state_push (ctx=ctx at entry=0x7fffb800c480) at
rsvg-styles.c:1586
#6  0x00007fffe9ce3568 in _rsvg_node_draw_children (self=0x7fffb81c5640,
ctx=0x7fffb800c480, dominate=0)
    at rsvg-structure.c:86
#7  0x00007fffe9ce3503 in rsvg_node_draw (self=0x7fffb81c5640,
ctx=0x7fffb800c480, dominate=<optimized out>)
    at rsvg-structure.c:69
#8  0x00007fffe9ce3583 in _rsvg_node_draw_children (self=0x7fffb81c4950,
ctx=0x7fffb800c480, dominate=0)
    at rsvg-structure.c:87
#9  0x00007fffe9ce3503 in rsvg_node_draw (self=0x7fffb81c4950,
ctx=0x7fffb800c480, dominate=<optimized out>)
    at rsvg-structure.c:69
#10 0x00007fffe9ce3583 in _rsvg_node_draw_children (self=0x7fffb81c4460,
ctx=0x7fffb800c480, dominate=0)
    at rsvg-structure.c:87
#11 0x00007fffe9ce3503 in rsvg_node_draw (self=0x7fffb81c4460,
ctx=0x7fffb800c480, dominate=<optimized out>)
    at rsvg-structure.c:69
#12 0x00007fffe9ce3583 in _rsvg_node_draw_children (self=0x7fffb81c3f70,
ctx=0x7fffb800c480, dominate=0)
    at rsvg-structure.c:87
#13 0x00007fffe9ce3503 in rsvg_node_draw (self=0x7fffb81c3f70,
ctx=0x7fffb800c480, dominate=<optimized out>)
    at rsvg-structure.c:69
#14 0x00007fffe9ce3583 in _rsvg_node_draw_children (self=0x7fffb81c3a80,
ctx=0x7fffb800c480, dominate=0)
    at rsvg-structure.c:87
(More stack frames follow...)
(gdb) bt -15
#2497 0x00007fffe9ce3503 in rsvg_node_draw (self=0x7fffb800ee30,
ctx=0x7fffb800c480, dominate=<optimized out>)
    at rsvg-structure.c:69
#2498 0x00007fffe9ce3583 in _rsvg_node_draw_children (self=0x7fffb800d1d0,
ctx=0x7fffb800c480, dominate=0)
    at rsvg-structure.c:87
#2499 0x00007fffe9ce3503 in rsvg_node_draw (self=0x7fffb800d1d0,
ctx=0x7fffb800c480, dominate=<optimized out>)
    at rsvg-structure.c:69
#2500 0x00007fffe9ce3903 in rsvg_node_svg_draw (self=0x7fffb8009440,
ctx=0x7fffb800c480, dominate=<optimized out>)
    at rsvg-structure.c:323
#2501 0x00007fffe9ce3503 in rsvg_node_draw (self=0x7fffb8009440,
ctx=0x7fffb800c480, dominate=<optimized out>)
    at rsvg-structure.c:69
#2502 0x00007fffe9cefac3 in rsvg_handle_render_cairo_sub
(handle=handle at entry=0x7fffb80040d0, cr=cr at entry=0xb34000,
    id=id at entry=0x0) at rsvg-cairo-render.c:225
#2503 0x00007fffe9cefef4 in rsvg_handle_get_pixbuf_sub (handle=0x7fffb80040d0,
id=id at entry=0x0) at rsvg.c:90
#2504 0x00007fffe9ceff77 in rsvg_handle_get_pixbuf (handle=<optimized out>) at
rsvg.c:119
#2505 0x00007fffc60e5e46 in gdk_pixbuf__svg_image_stop_load
(data=0x7fffb80014c0, error=0x7fffe8042a98)
    at io-svg.c:160
#2506 0x00007ffff567b20b in gdk_pixbuf_loader_close () from /usr/lib/x86_64
-linux-gnu/libgdk_pixbuf-2.0.so.0
#2507 0x00007ffff75780b4 in ?? () from /usr/lib/libgnome-desktop-3.so.10
#2508 0x00007ffff7578612 in gnome_desktop_thumbnail_factory_generate_thumbnail
()
   from /usr/lib/libgnome-desktop-3.so.10
#2509 0x00000000004caa91 in thumbnail_thread_start (data=<optimized out>) at
nautilus-thumbnails.c:544
#2510 0x00007ffff40e20a4 in start_thread (arg=0x7fffe8044700) at
pthread_create.c:309
#2511 0x00007ffff3e1704d in clone () at
.../sysdeps/unix/sysv/linux/x86_64/clone.S:111



-- System Information:
Debian Release: jessie/sid
  APT prefers testing
  APT policy: (900, 'testing')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 3.14-1-amd64 (SMP w/8 CPU cores)
Locale: LANG=sv_SE.UTF-8, LC_CTYPE=sv_SE.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages librsvg2-2 depends on:
ii  libc6                2.19-7
ii  libcairo2            1.12.16-2
ii  libcroco3            0.6.8-2
ii  libgdk-pixbuf2.0-0   2.30.7-1
ii  libglib2.0-0         2.40.0-3
ii  libpango-1.0-0       1.36.3-1
ii  libpangocairo-1.0-0  1.36.3-1
ii  libxml2              2.9.1+dfsg1-4
ii  multiarch-support    2.19-7

Versions of packages librsvg2-2 recommends:
ii  librsvg2-common  2.40.2-1

Versions of packages librsvg2-2 suggests:
ii  librsvg2-bin  2.40.2-1

-- no debconf information
-------------- next part --------------
A non-text attachment was scrubbed...
Name: core.gz
Type: application/gzip
Size: 2207840 bytes
Desc: not available
URL: <http://lists.alioth.debian.org/pipermail/pkg-gnome-maintainers/attachments/20140804/18dd5815/attachment-0001.bin>


More information about the pkg-gnome-maintainers mailing list