SIGSEGV when zooming in on curve in sp_ctrl_build_cache

Bug #1928598 reported by Dave Odell
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
inkscape (Ubuntu)
New
Undecided
Unassigned

Bug Description

$ lsb_release -rd
Description: Ubuntu 20.04.2 LTS
Release: 20.04

$ apt-cache policy inkscape
inkscape:
  Installed: 0.92.5-1ubuntu1.1
  Candidate: 0.92.5-1ubuntu1.1
  Version table:
 *** 0.92.5-1ubuntu1.1 500
        500 http://us.archive.ubuntu.com/ubuntu focal-updates/universe amd64 Packages
        100 /var/lib/dpkg/status
     0.92.5-1ubuntu1 500
        500 http://us.archive.ubuntu.com/ubuntu focal/universe amd64 Packages

1. Open up the attached SVG, with `inkscape bezier_fit.svg`
2. Select the orange-red curve in front with "Edit paths by nodes (F2)" so that all four of the Bezier vertices are visible.
3. Zoom all the way in on a segment of curve.
4. SIGSEGV, with a stack trace that (usually) looks like:

Thread 1 "inkscape" received signal SIGSEGV, Segmentation fault.
0x00007ffff734edec in sp_ctrl_build_cache (ctrl=0x5555584886d0 [SPCtrl]) at ./src/display/sodipodi-ctrl.cpp:385
385 ./src/display/sodipodi-ctrl.cpp: No such file or directory.
(gdb) bt
#0 0x00007ffff734edec in sp_ctrl_build_cache (ctrl=0x5555584886d0 [SPCtrl]) at ./src/display/sodipodi-ctrl.cpp:385
#1 sp_ctrl_render(SPCanvasItem*, SPCanvasBuf*) (item=<optimized out>, buf=0x7fffffffd810) at ./src/display/sodipodi-ctrl.cpp:569
#2 0x00007ffff7351b6a in SPCanvasGroup::render(SPCanvasItem*, SPCanvasBuf*) (item=<optimized out>, buf=0x7fffffffd810) at ./src/display/sp-canvas.cpp:858
#3 0x00007ffff7351b6a in SPCanvasGroup::render(SPCanvasItem*, SPCanvasBuf*) (item=<optimized out>, buf=0x7fffffffd810) at ./src/display/sp-canvas.cpp:858
#4 0x00007ffff7351b6a in SPCanvasGroup::render(SPCanvasItem*, SPCanvasBuf*) (item=<optimized out>, buf=0x7fffffffd810) at ./src/display/sp-canvas.cpp:858
#5 0x00007ffff7351b6a in SPCanvasGroup::render(SPCanvasItem*, SPCanvasBuf*) (item=<optimized out>, buf=0x7fffffffd810) at ./src/display/sp-canvas.cpp:858
#6 0x00007ffff73541e0 in SPCanvas::paintSingleBuffer(Geom::GenericRect<int> const&, Geom::GenericRect<int> const&, int)
    (this=0x555556e9d6c0 [SPCanvas], paint_rect=..., canvas_rect=...) at ./src/display/sp-canvas.cpp:1576
#7 0x00007ffff73546d1 in SPCanvas::paintRectInternal(PaintRectSetup const*, Geom::GenericRect<int> const&)
    (this=this@entry=0x555556e9d6c0 [SPCanvas], setup=setup@entry=0x7fffffffd970, this_rect=...) at ./src/display/sp-canvas.cpp:1677
#8 0x00007ffff7354944 in SPCanvas::paintRect(int, int, int, int)
    (this=0x555556e9d6c0 [SPCanvas], xx0=<optimized out>, yy0=<optimized out>, xx1=<optimized out>, yy1=<optimized out>) at ./src/display/sp-canvas.cpp:1790
#9 0x00007ffff7354ba5 in SPCanvas::paint() (this=0x555556e9d6c0 [SPCanvas]) at ./src/display/sp-canvas.cpp:1929
#10 0x00007ffff7354d48 in SPCanvas::doUpdate() (this=0x555556e9d6c0 [SPCanvas]) at ./src/display/sp-canvas.cpp:1963
#11 0x00007ffff7354dd8 in SPCanvas::idle_handler(void*) (data=0x555556e9d6c0) at ./src/display/sp-canvas.cpp:1978
#12 0x00007ffff613ce99 in () at /usr/lib/x86_64-linux-gnu/libgdk-x11-2.0.so.0
#13 0x00007ffff6b7804e in g_main_dispatch (context=0x555555675570) at ../../../glib/gmain.c:3309
#14 g_main_context_dispatch (context=context@entry=0x555555675570) at ../../../glib/gmain.c:3974
#15 0x00007ffff6b78400 in g_main_context_iterate (context=0x555555675570, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../../../glib/gmain.c:4047
#16 0x00007ffff6b786f3 in g_main_loop_run (loop=0x5555580ccdb0) at ../../../glib/gmain.c:4241
#17 0x00007ffff63ad092 in gtk_main () at /usr/lib/x86_64-linux-gnu/libgtk-x11-2.0.so.0
#18 0x000055555555db3d in sp_main_gui(int, char const**) (argc=<optimized out>, argv=<optimized out>) at ./src/main.cpp:1173
#19 0x00007ffff5bb60b3 in __libc_start_main (main=
    0x55555555b8c0 <main(int, char**)>, argc=2, argv=0x7fffffffdec8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffdeb8)
    at ../csu/libc-start.c:308
#20 0x000055555555bf6e in _start () at ./src/main.cpp:661

And also:
* The two paths are either a near-exact or perfectly exact match for one another.
* `vector-effect: non-scaling-stroke` in the CSS probably isn't something that Inkscape sees very often.

Revision history for this message
Dave Odell (dmo2118) wrote :
Revision history for this message
Dave Odell (dmo2118) wrote :
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.