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 358583 - close any project => crash
close any project => crash
Status: VERIFIED FIXED
Product: anjuta
Classification: Applications
Component: core application
CVS HEAD
Other All
: Normal critical
: ---
Assigned To: Naba Kumar
Anjuta maintainers
Depends on:
Blocks:
 
 
Reported: 2006-09-30 18:17 UTC by Adam Dingle
Modified: 2009-08-15 18:40 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Adam Dingle 2006-09-30 18:17:51 UTC
Steps to reproduce:
1. Use the application wizard to create a new generic project, accepting all defaults
2. Choose File / Close Project to close the project.  Anjuta will crash.

This worked fine until recently; changes in the last few days must have broken this.



Stack trace:

Thread 1 (Thread -1224173888 (LWP 4006))

  • #0 __kernel_vsyscall
  • #1 __waitpid_nocancel
    from /lib/tls/i686/cmov/libpthread.so.0
  • #2 libgnomeui_module_info_get
    from /usr/lib/libgnomeui-2.so.0
  • #3 <signal handler called>
  • #4 g_type_check_instance_is_a
    from /usr/lib/libgobject-2.0.so.0
  • #5 ianjuta_document_manager_get_editors
    at ianjuta-document-manager.c line 93
  • #6 project_manager_plugin_close_project
    at plugin.c line 1635
  • #7 on_close_project
    at plugin.c line 1703
  • #8 g_cclosure_marshal_VOID__VOID
    from /usr/lib/libgobject-2.0.so.0
  • #9 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #10 g_signal_stop_emission
    from /usr/lib/libgobject-2.0.so.0
  • #11 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #12 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #13 _gtk_action_emit_activate
    from /usr/lib/libgtk-x11-2.0.so.0
  • #14 gtk_action_activate
    from /usr/lib/libgtk-x11-2.0.so.0
  • #15 g_cclosure_marshal_VOID__VOID
    from /usr/lib/libgobject-2.0.so.0
  • #16 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #17 g_signal_stop_emission
    from /usr/lib/libgobject-2.0.so.0
  • #18 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #19 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #20 gtk_widget_activate
    from /usr/lib/libgtk-x11-2.0.so.0
  • #21 gtk_menu_shell_activate_item
    from /usr/lib/libgtk-x11-2.0.so.0
  • #22 gtk_menu_shell_activate_item
    from /usr/lib/libgtk-x11-2.0.so.0
  • #23 gtk_menu_reorder_child
    from /usr/lib/libgtk-x11-2.0.so.0
  • #24 _gtk_marshal_BOOLEAN__BOXED
    from /usr/lib/libgtk-x11-2.0.so.0
  • #25 g_cclosure_new_swap
    from /usr/lib/libgobject-2.0.so.0
  • #26 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #27 g_signal_stop_emission
    from /usr/lib/libgobject-2.0.so.0
  • #28 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #29 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #30 gtk_widget_activate
    from /usr/lib/libgtk-x11-2.0.so.0
  • #31 gtk_propagate_event
    from /usr/lib/libgtk-x11-2.0.so.0
  • #32 gtk_main_do_event
    from /usr/lib/libgtk-x11-2.0.so.0
  • #33 _gdk_events_queue
    from /usr/lib/libgdk-x11-2.0.so.0
  • #34 g_main_context_dispatch
    from /usr/lib/libglib-2.0.so.0
  • #35 g_main_context_check
    from /usr/lib/libglib-2.0.so.0
  • #36 g_main_loop_run
    from /usr/lib/libglib-2.0.so.0
  • #37 gtk_main
    from /usr/lib/libgtk-x11-2.0.so.0
  • #38 main
    at main.c line 378
  • #0 __kernel_vsyscall


Other information:
Comment 1 Naba Kumar 2006-10-01 16:32:27 UTC
That's apparently my fault. I couldn't reproduce it, I have kind of fixed something that might be causing it to crash, Please confirm it is indeed fixed now.
Comment 2 Adam Dingle 2006-10-02 12:55:48 UTC
I'm still seeing this crash, so I'm reopening this.

I debugged a bit to see what's going on here.  In project_manager_plugin_close_project(), the call to anjuta_shell_get() is failing to find an object named "document_manager".  Note that when anjuta_shell_get() fails to find a value, it does *not* set the value to NULL (anjuta_shell_get() calls anjuta_shell_get_valist(); when this function sees an error, it breaks out of its loop without setting a NULL value).  So after anjuta_shell_get() returns we have a garbage value in docman.  The test "if (docman)" succeeds, but then the following call IANJUTA_DOCUMENT_MANAGER (docman) crashes.

If I change "GObject *docman;" to "GObject *docman = NULL;" in project_manager_plugin_close_project() then the crash goes away.

One thing puzzles me here.  I don't see how the call to anjuta_shell_get() could *ever* find an object "document_manager", because I can't seem to find any place in the code where such an object is registered.  When I search globally for the string ["document_manager"] then I find only this one instance.  Where are we adding the document manager object to the shell values list?
Comment 3 Naba Kumar 2006-10-04 10:30:33 UTC
Okay, it's now really fixed :)
Comment 4 Naba Kumar 2006-12-04 10:02:02 UTC
Closing all fixed bugs. Sorry for the mass update :( ...