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 579118 - Segmentation fault when adding file to project
Segmentation fault when adding file to project
Status: RESOLVED FIXED
Product: anjuta
Classification: Applications
Component: plugins: project-manager
SVN TRUNK
Other All
: Normal critical
: ---
Assigned To: Naba Kumar
Anjuta maintainers
Depends on:
Blocks:
 
 
Reported: 2009-04-16 05:10 UTC by Nick Colgan
Modified: 2009-04-19 21:28 UTC
See Also:
GNOME target: ---
GNOME version: 2.25/2.26


Attachments
Fix to segfault (1001 bytes, patch)
2009-04-16 05:14 UTC, Nick Colgan
committed Details | Review

Description Nick Colgan 2009-04-16 05:10:43 UTC
Steps to reproduce:
1. Create new project form existing sources
2. Right click on file in sidebar
3. Add to Project
4. Pick target from imported Makefile
5. Click add
6. Segmentation fault.


Stack trace:
  • #0 uri_normalize
    at gbf-mkfile-project.c line 320
  • #1 impl_add_source
    at gbf-mkfile-project.c line 3240
  • #2 gbf_project_util_add_source_multi
    at gbf-project-util.c line 773
  • #3 gbf_project_util_add_source
    at gbf-project-util.c line 632
  • #4 iproject_manager_add_source
    at plugin.c line 2294
  • #5 on_popup_add_to_project
    at plugin.c line 775
  • #6 IA__g_closure_invoke
    at /build/buildd/glib2.0-2.20.1/gobject/gclosure.c line 767
  • #7 signal_emit_unlocked_R
    at /build/buildd/glib2.0-2.20.1/gobject/gsignal.c line 3247
  • #8 IA__g_signal_emit_valist
    at /build/buildd/glib2.0-2.20.1/gobject/gsignal.c line 2980
  • #9 IA__g_signal_emit
    at /build/buildd/glib2.0-2.20.1/gobject/gsignal.c line 3037
  • #10 _gtk_action_emit_activate
    at /build/buildd/gtk+2.0-2.16.1/gtk/gtkaction.c line 727
  • #11 IA__g_closure_invoke
    at /build/buildd/glib2.0-2.20.1/gobject/gclosure.c line 767
  • #12 signal_emit_unlocked_R
    at /build/buildd/glib2.0-2.20.1/gobject/gsignal.c line 3177
  • #13 IA__g_signal_emit_valist
    at /build/buildd/glib2.0-2.20.1/gobject/gsignal.c line 2980
  • #14 IA__g_signal_emit
    at /build/buildd/glib2.0-2.20.1/gobject/gsignal.c line 3037
  • #15 IA__gtk_widget_activate
    at /build/buildd/gtk+2.0-2.16.1/gtk/gtkwidget.c line 4792
  • #16 IA__gtk_menu_shell_activate_item
    at /build/buildd/gtk+2.0-2.16.1/gtk/gtkmenushell.c line 1139
  • #17 gtk_menu_shell_button_release
    at /build/buildd/gtk+2.0-2.16.1/gtk/gtkmenushell.c line 678
  • #18 _gtk_marshal_BOOLEAN__BOXED
    at /build/buildd/gtk+2.0-2.16.1/gtk/gtkmarshalers.c line 84
  • #19 IA__g_closure_invoke
    at /build/buildd/glib2.0-2.20.1/gobject/gclosure.c line 767
  • #20 signal_emit_unlocked_R
    at /build/buildd/glib2.0-2.20.1/gobject/gsignal.c line 3285
  • #21 IA__g_signal_emit_valist
    at /build/buildd/glib2.0-2.20.1/gobject/gsignal.c line 2990
  • #22 IA__g_signal_emit
    at /build/buildd/glib2.0-2.20.1/gobject/gsignal.c line 3037
  • #23 gtk_widget_event_internal
    at /build/buildd/gtk+2.0-2.16.1/gtk/gtkwidget.c line 4761
  • #24 IA__gtk_propagate_event
    at /build/buildd/gtk+2.0-2.16.1/gtk/gtkmain.c line 2396
  • #25 IA__gtk_main_do_event
    at /build/buildd/gtk+2.0-2.16.1/gtk/gtkmain.c line 1601
  • #26 gdk_event_dispatch
    at /build/buildd/gtk+2.0-2.16.1/gdk/x11/gdkevents-x11.c line 2364
  • #27 IA__g_main_context_dispatch
    at /build/buildd/glib2.0-2.20.1/glib/gmain.c line 1814
  • #28 g_main_context_iterate
    at /build/buildd/glib2.0-2.20.1/glib/gmain.c line 2448
  • #29 IA__g_main_loop_run
    at /build/buildd/glib2.0-2.20.1/glib/gmain.c line 2656
  • #30 IA__gtk_main
    at /build/buildd/gtk+2.0-2.16.1/gtk/gtkmain.c line 1205
  • #31 main
    at main.c line 240

Other information:
Also posted on Launchpad: https://bugs.launchpad.net/ubuntu/+source/anjuta/+bug/361524
Comment 1 Nick Colgan 2009-04-16 05:14:12 UTC
Created attachment 132740 [details] [review]
Fix to segfault

Adds detection in function impl_add_source (gbf-mkfile-project.c) on path to check if its relative or absolute before passing it to uri_normalize.
Comment 2 Nick Colgan 2009-04-16 06:23:43 UTC
The problem is that if uri_normalize is passed a NULL value for the first argument, it results in a segfault, and g_path_skip_root will return NULL if the pathname given isn't absolute.

From gbf-mkfile-project.c (line 3241 on latest svn):

group_uri = uri_normalize (g_path_skip_root (GBF_MKFILE_NODE (g_node->parent)->id),
   project->project_root_uri);
Comment 3 Johannes Schmid 2009-04-19 21:28:28 UTC
Thanks a lot for the patch!

This problem has been fixed in the development version. The fix will be available in the next major software release. Thank you for your bug report.