Connector: assertion failure when moving empty group
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Inkscape |
Fix Released
|
Critical
|
Michael Wybrow |
Bug Description
This is the error output on stdout:
** ERROR **: file sp-conn-end.cpp: line 224 (NR::Point
calc_bbox_
assertion failed: ((offset[otherDim] >= 0) ==
(cp[otherDim] >= 0))
aborting...
Reproduction: Move the text object "doc" on the top of
the page in the attached file a little and release mouse.
Some about my system:
$ uname -a
Linux beynac 2.6.12-9-686 #1 Mon Oct 10 13:25:32 BST
2005 i686 GNU/Linux
I run Ubuntu 6.04 "Dapper Drake" Development Branch
$ inkscape -V
Inkscape 0.43 (Feb 23 2006)
$ gdb --version
GNU gdb 6.4-debian
Copyright 2005 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public
License, and you are
welcome to change it and/or distribute copies of it
under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show
warranty" for details.
This GDB was configured as "i486-linux-gnu".
$ gdm --version
GDM 2.13.0.8
the rest of this detailed description is gdb output
with /*comments*/, error and bt:
$ env DISPLAY=':0.0' gdb inkscape
GNU gdb 6.4-debian
Copyright 2005 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public
License, and you are
welcome to change it and/or distribute copies of it
under certain conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show
warranty" for details.
This GDB was configured as "i486-linux-
debugging symbols found)
Using host libthread_db library
"/lib/tls/
(gdb) run project_graph2.svg
Starting program: /usr/bin/inkscape project_graph2.svg
(no debugging symbols found)
/* ... */
(no debugging symbols found)
[Thread debugging using libthread_db enabled]
[New Thread -1227130400 (LWP 21462)]
(no debugging symbols found)
/* ... */
(no debugging symbols found)
---Type <return> to continue, or q <return> to quit---
(no debugging symbols found)
/* ... */
(no debugging symbols found)
/* here, I switch to the xserver and move the text
object "doc" on the top of the page a little to the
right. */
** ERROR **: file sp-conn-end.cpp: line 224 (NR::Point
calc_bbox_
assertion failed: ((offset[otherDim] >= 0) ==
(cp[otherDim] >= 0))
aborting...
Program received signal SIGABRT, Aborted.
[Switching to Thread -1227130400 (LWP 21462)]
0xffffe410 in __kernel_vsyscall ()
(gdb) bt
#0 0xffffe410 in __kernel_vsyscall ()
#1 0xb6f4f9a1 in raise () from
/lib/tls/
#2 0xb6f512b9 in abort () from
/lib/tls/
#3 0xb7384ef6 in g_logv () from /usr/lib/
#4 0xb7384f2a in g_log () from /usr/lib/
#5 0xb7384f96 in g_assert_warning () from
/usr/lib/
#6 0x081e3843 in SPConnEnd:
#7 0x081e3c6b in SPConnEnd:
#8 0x0815ac4b in sp_item_
#9 0x08141207 in sp_selection_
#10 0x081ddf20 in sp_sel_trans_ungrab ()
#11 0x081dac8d in key_is_a_modifier ()
#12 0x081b5e79 in sp_event_
#13 0x082cf03f in sp_marshal_
#14 0xb73e979f in g_closure_invoke () from
/usr/lib/
#15 0xb73f82da in g_signal_
/usr/lib/
#16 0xb73f9876 in g_signal_
/usr/lib/
#17 0xb7ae7a43 in gtk_signal_emit () from
/usr/lib/
#18 0x082bb6c8 in sp_canvas_
#19 0x082bbbbf in sp_canvas_
#20 0x082cedf8 in sp_marshal_
#21 0xb73e916f in g_cclosure_new_swap () from
/usr/lib/
#22 0xb73e979f in g_closure_invoke () from
/usr/lib/
#23 0xb73f89be in g_signal_
/usr/lib/
#24 0xb73f9876 in g_signal_
/usr/lib/
#25 0xb7ae7a43 in gtk_signal_emit () from
/usr/lib/
#26 0x082c9b57 in sp_canvas_new_aa ()
#27 0x082cae95 in sp_canvas_
#28 0xb7aa0460 in _gtk_marshal_
/usr/lib/
#29 0xb73e916f in g_cclosure_new_swap () from
/usr/lib/
#30 0xb73e979f in g_closure_invoke () from
/usr/lib/
#31 0xb73f89be in g_signal_
/usr/lib/
#32 0xb73f9876 in g_signal_
/usr/lib/
#33 0xb73f9e79 in g_signal_emit () from
/usr/lib/
#34 0xb7b8246f in gtk_widget_activate () from
/usr/lib/
#35 0xb7a9ebdd in gtk_propagate_event () from
/usr/lib/
#36 0xb7a9efeb in gtk_main_do_event () from
/usr/lib/
#37 0xb7942e1c in _gdk_events_queue () from
/usr/lib/
#38 0xb737c7d7 in g_main_
/usr/lib/
#39 0xb737f896 in g_main_
/usr/lib/
#40 0xb737fbb8 in g_main_loop_run () from
/usr/lib/
#41 0xb7a9e2e5 in gtk_main () from
/usr/lib/
#42 0xb7eb5b35 in Gtk::Main::run_impl () from
/usr/lib/
#43 0xb7eb5a26 in Gtk::Main::run () from
/usr/lib/
#44 0x0812dff2 in sp_main_gui ()
#45 0x081f51d5 in
Inkscape:
#46 0x0812d8ce in main ()
(gdb) c
Continuing.
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.
/* inkscape shows error ok-box which cannot be clicked.
xserver doesn't respond. */
/* ctrl-c */
Program received signal SIGINT, Interrupt.
0xffffe410 in __kernel_vsyscall ()
(gdb) k
Kill the program being debugged? (y or n) y
(gdb) q
Reproduced.
The problem is that calc_bbox_conn_pt is being passed an x1=y1=- 1e18), which in turn is
empty bbox (i.e. x0=y0=1e18,
because the connector's other end (#g2504) is an empty group!
Perhaps handle the case that the bbox is empty as detaching
that end. Does that sound reasonable, from a user's
perspective?