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 791278 - Reproducible crash creating a new file in an empty folder
Reproducible crash creating a new file in an empty folder
Status: RESOLVED FIXED
Product: gnome-builder
Classification: Other
Component: general
3.27.x
Other Linux
: Normal normal
: ---
Assigned To: GNOME Builder Maintainers
GNOME Builder Maintainers
Depends on:
Blocks:
 
 
Reported: 2017-12-05 18:03 UTC by Giovanni Campagna
Modified: 2017-12-06 00:17 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
project-tree: remove synthesized "Empty" node before insertion (2.52 KB, patch)
2017-12-06 00:16 UTC, Christian Hergert
committed Details | Review

Description Giovanni Campagna 2017-12-05 18:03:21 UTC
Traceback:

Thread 1 (Thread 0x7fd2947cbb00 (LWP 19445))

  • #0 waitpid
    from /lib64/libpthread.so.0
  • #1 bug_buddy_sigsegv_handler
    at ../../gnome-builder/src/bug-buddy.c line 51
  • #2 <signal handler called>
  • #3 gb_project_file_compare_directories_first
    at ../../gnome-builder/src/plugins/project-tree/gb-project-file.c line 69
  • #4 _dzl_tree_insert_sorted
    at ../../libdazzle/src/tree/dzl-tree.c line 532
  • #5 dzl_tree_node_insert_sorted
    at ../../libdazzle/src/tree/dzl-tree-node.c line 152
  • #6 gb_project_tree_builder_add
    at ../../gnome-builder/src/plugins/project-tree/gb-project-tree-builder.c line 100
  • #7 gb_project_tree_builder_changed
    at ../../gnome-builder/src/plugins/project-tree/gb-project-tree-builder.c line 197
  • #8 ffi_call_unix64
    from /lib64/libffi.so.6
  • #9 ffi_call
    from /lib64/libffi.so.6
  • #10 g_cclosure_marshal_generic_va
    at /home/gcampagn/gnome/glib/gobject/gclosure.c line 1604
  • #11 _g_closure_invoke_va
    at /home/gcampagn/gnome/glib/gobject/gclosure.c line 867
  • #12 g_signal_emit_valist
    at /home/gcampagn/gnome/glib/gobject/gsignal.c line 3300
  • #13 g_signal_emit
    at /home/gcampagn/gnome/glib/gobject/gsignal.c line 3447
  • #14 ffi_call_unix64
    from /lib64/libffi.so.6
  • #15 ffi_call
    from /lib64/libffi.so.6
  • #16 g_cclosure_marshal_generic_va
    at /home/gcampagn/gnome/glib/gobject/gclosure.c line 1604
  • #17 _g_closure_invoke_va
    at /home/gcampagn/gnome/glib/gobject/gclosure.c line 867
  • #18 g_signal_emit_valist
    at /home/gcampagn/gnome/glib/gobject/gsignal.c line 3300
  • #19 g_signal_emit
    at /home/gcampagn/gnome/glib/gobject/gsignal.c line 3447
  • #20 g_file_monitor_emit_event
    at /home/gcampagn/gnome/glib/gio/gfilemonitor.c line 290
  • #21 g_file_monitor_source_dispatch
    at /home/gcampagn/gnome/glib/gio/glocalfilemonitor.c line 546
  • #22 g_main_dispatch
    at /home/gcampagn/gnome/glib/glib/gmain.c line 3183
  • #23 g_main_context_dispatch
    at /home/gcampagn/gnome/glib/glib/gmain.c line 3848
  • #24 g_main_context_iterate
    at /home/gcampagn/gnome/glib/glib/gmain.c line 3921
  • #25 g_main_context_iteration
    at /home/gcampagn/gnome/glib/glib/gmain.c line 3982
  • #26 g_application_run
    at /home/gcampagn/gnome/glib/gio/gapplication.c line 2402
  • #27 main
    at ../../gnome-builder/src/main.c line 154


Reproducer:
Create a folder in the project tree
Create a new file in that folder

Version: 81410f2088f4a32182ba0379e81675a101d407ec
Comment 1 Christian Hergert 2017-12-06 00:16:32 UTC
Created attachment 365076 [details] [review]
project-tree: remove synthesized "Empty" node before insertion

If we have a synthesized "Empty" node in the tree, we should remove it
before inserting our newly created file. Otherwise, we'll do a node
comparison for insertion sort and segfault from a NULL DzlTreeNode:item
property.
Comment 2 Christian Hergert 2017-12-06 00:17:26 UTC
Looks like I forgot that we auto expand that node when inserting (causing the
empty node to be created for visual feedback to the user).

This removes our synthesized node so the insertion sort works as expected.

Attachment 365076 [details] pushed as 4861ba8 - project-tree: remove synthesized "Empty" node before insertion