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 326453 - Crash on UML Class properties page
Crash on UML Class properties page
Status: RESOLVED FIXED
Product: dia
Classification: Other
Component: objects
CVS head
Other All
: Normal critical
: 0.95
Assigned To: Dia maintainers
Dia maintainers
Depends on:
Blocks:
 
 
Reported: 2006-01-10 12:25 UTC by Gabor Keresztfalvi
Modified: 2006-01-14 13:56 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Gabor Keresztfalvi 2006-01-10 12:25:22 UTC
Steps to reproduce:
1. Open a dia file with UML class objects, or create a new one and add an UML class.
2. Add some attributes.
3. Add/modify some operations.
4. Apply it


Stack trace:
Program received signal SIGSEGV, Segmentation fault.

Thread 46912544556544 (LWP 668)

  • #0 dia_object_sanity_check
    at object.c line 925
  • #1 umlclass_sanity_check
    at class.c line 2286
  • #2 umlclass_apply_props_from_dialog
    at class_dialog.c line 823
  • #3 properties_respond
    at properties.c line 134
  • #4 g_cclosure_marshal_VOID
    from /opt/gnome/lib64/libgobject-2.0.so.0
  • #5 g_closure_invoke
    from /opt/gnome/lib64/libgobject-2.0.so.0
  • #6 g_signal_chain_from_overridden
    from /opt/gnome/lib64/libgobject-2.0.so.0
  • #7 g_signal_emit_valist
    from /opt/gnome/lib64/libgobject-2.0.so.0
  • #8 g_signal_emit
    from /opt/gnome/lib64/libgobject-2.0.so.0
  • #9 gtk_dialog_response
    from /opt/gnome/lib64/libgtk-x11-2.0.so.0
  • #10 gtk_dialog_add_buttons
    from /opt/gnome/lib64/libgtk-x11-2.0.so.0
  • #11 g_cclosure_marshal_VOID__VOID
    from /opt/gnome/lib64/libgobject-2.0.so.0
  • #12 g_closure_invoke
    from /opt/gnome/lib64/libgobject-2.0.so.0
  • #13 g_signal_chain_from_overridden
    from /opt/gnome/lib64/libgobject-2.0.so.0
  • #14 g_signal_emit_valist
    from /opt/gnome/lib64/libgobject-2.0.so.0
  • #15 g_signal_emit
    from /opt/gnome/lib64/libgobject-2.0.so.0
  • #16 gtk_button_clicked
    from /opt/gnome/lib64/libgtk-x11-2.0.so.0


Other information:
Seems to me that attributes_read_from_dialog() in class_dialog.c calls
umlclass_sanity_check() while the connection point array is not finalized yet.
If I comment it out (line 823 in class_dialog.c, the last statement in
attributes_read_from_dialog()) everything works fine.

The function umlclass_apply_props_from_dialog() which calls
attributes_read_from_dialog() does the sanity check also, and finalizes the
array by calling operations_read_from_dialog() right after
attributes_read_from_dialog().

Is it really enough to get rid of that umlclass_sanity_check() call?
Comment 1 Hans Breuer 2006-01-14 13:56:39 UTC
To fix this bug, yes. The whole thing involved some more changes:

2006-01-14  Hans Breuer  <hans@breuer.org>

	* lib/debug.c : replace wrong call to vprintf() - missing file
	descriptor - with the more appropriate g_vprintf(). Thus 
	dia_assert_true() does not smash the stack anymore on win32.
	
	* objects/UML/class.c objects/UML/class_dialog.c objects/UML/uml.h
	  objects/UML/umlattribute.c objects/UML/umloperation.c :
	reverted the memory managment of UMLAttribute/UMLOperation's 
	ConnectionPoint(s) back to how it was up until 0.94. This finally
	makes the UMLClass work again including undo/redo support. Fixes
	bug #314153 and en passant bug #326453.