Crash on moving text over path with gears effect when "Snap rotation center" or "Snap text anchor" option is enabled

Bug #931598 reported by Fanda on 2012-02-13
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
Inkscape
High
Unassigned

Bug Description

After I move text over path with gear effect, Inkscape crash.

Windows 7
Inkscape 0.48+devel r10958

Fanda (fanda-cz) wrote :
su_v (suv-lp) wrote :

Not reproduced (based on the sparse 'steps to reproduce' given),
with Inkscape 0.48+devel r10958 and r10969 on OS X 10.7.2 Lion (64bit), cairo 1.10.2
both with default preferences as well as with 'Only snap node closest to the pointer' enabled.

- Can you reproduce the crash consistently?
- Have you tested with default (new) preferences?
- Does the crash appear to be triggered when snapping occurs?
- Does the crash depend on the two object types (text dragged over group, consisting of two paths with LPE applied)?

tags: added: crash
su_v (suv-lp) wrote :

Not reproduced with r10968 and cairo 1.11.2, built with FSF GCC 4.6.2 on OS X 10.7.2 (64bit)
(closer to what is used for the Windows builds with latest devlibs)

jazzynico (jazzynico) wrote :

Confirmed on Windows XP, Inkscape trunk revision 10958 and Ubuntu 11.04, trunk revision 10968.
Not reproduced with 0.48.2.

Difficult to get a backtrace (the crash completely lock the Windows manager and Inkscape needs to be killed from a console). Here's what I can get:

----
(gdb) run
Starting program: /usr/local/bin/inkscape
[Thread debugging using libthread_db enabled]
[New Thread 0xb4ed6b70 (LWP 6089)]
[New Thread 0xb44ffb70 (LWP 6090)]
terminate called after throwing an instance of 'Geom::ContinuityError'
  what(): lib2geom exception: Non-contiguous path (2geom/path.cpp:90)

Program received signal SIGABRT, Aborted.
0x0012e416 in __kernel_vsyscall ()
(gdb) bt
#0 0x0012e416 in __kernel_vsyscall ()
Cannot access memory at address 0xbfffd8c4
-----

The crash doesn't occur when the Snap other points icon is disabled.

Changed in inkscape:
importance: Undecided → High
status: New → Confirmed
tags: added: regression
summary: - Crash on moving text over path with gears efect
+ Crash on moving text over path with gears effect

Possibly related reports (random crashes when transforming objects, available backtraces indicate upstream cairo (unstable) issues):
Bug #825461 (mentions snapping too, as well as freezing of X under linux)
Bug #910100 (cairo master)

jazzynico (jazzynico) on 2012-08-25
Changed in inkscape:
status: Confirmed → Triaged
jazzynico (jazzynico) wrote :

Reproduced again on Windows XP, Inkscape trunk revision 13484.

Steps:
1. Open the file attached comment #1.
2. Select the text object.
3. Move the selected text over the path.
-> Crash (C++ runtime error)

jazzynico (jazzynico) wrote :

Reproduced again with trunk rev. 14032 on Windows XP.
Disabling both "Snap rotation center" and "Snap text anchor" options fixes the issue.

summary: - Crash on moving text over path with gears effect
+ Crash on moving text over path with gears effect when "Snap rotation
+ center" or "Snap text anchor" option is enabled
tags: added: snapping
jazzynico (jazzynico) wrote :

Other workaround: ungroup the gears.

Reduced test case (only one gear and a normal text instead of a flowed one) attached.

tags: added: groups
Alvin Penner (apenner) wrote :

attaching the message I get in Windows 7, Inkscape 0.91 r13725 (Jan 30 2015)
using the reduced test case

...................................

C:\Program Files\Inkscape>inkscape

** (inkscape.exe:3580): WARNING **: Invalid state when picking: STATE_BBOX = 0,
STATE_PICK = 0

** (inkscape.exe:3580): WARNING **: The snapmanager has been set up before, but
unSetup() hasn't been called afterwards. It possibly held invalid pointers
terminate called after throwing an instance of 'Geom::ContinuityError'
  what(): lib2geom exception: Non-contiguous path (src/2geom/path.cpp:91)

Emergency save activated!
Emergency save completed. Inkscape will close now.
If you can reproduce this crash, please file a bug at www.inkscape.org
with a detailed description of the steps leading to the crash, so we can fix it.

terminate called recursively

jazzynico (jazzynico) wrote :

Not reproduced on Crunchbang Waldorf, Inkscape 0.48.3.1, 0.91 and trunk rev. 14036.

su_v (suv-lp) wrote :

As with the original file, not reproduced on OS X 10.7.5 using the reduced test case from comment #8 with Inkscape 0.48.5 r10040, 0.91 r13725 and 0.91+devel r14036.

Alvin Penner (apenner) wrote :

the crash is apparently being caused by a very small amount of numerical round-off error, and that in turn is apparently caused by the scaling transform element in the group that encloses the path. Attached is the result I get when I output the difference between the two points that are calculated just before the crash:

std::cout << "diff = " << prev[0] - (*it)->initialPoint()[0] << ", " << prev[1] - (*it)->initialPoint()[1] << std::endl;

diff = -7.10543e-015, 1.42109e-014

terminate called after throwing an instance of 'Geom::ContinuityError'
  what(): lib2geom exception: Non-contiguous path (src/2geom/path.cpp:96)

The error is very small and should have been ignored. There should probably be a numerical error tolerance value for cases like this.

Alvin Penner (apenner) wrote :

alternatively it might be interesting to perform the continuity test before applying the transform, not after. So, for example, do one pass to confirm continuity, and then do a second pass to perform the actual transform.

To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers