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 756852 - GtkInspector segfaults when you respond to a GtkFileChooserDialog
GtkInspector segfaults when you respond to a GtkFileChooserDialog
Status: RESOLVED FIXED
Product: gtk+
Classification: Platform
Component: Debugging
3.18.x
Other Linux
: Normal normal
: ---
Assigned To: gtk-bugs
gtk-bugs
Depends on:
Blocks:
 
 
Reported: 2015-10-20 10:50 UTC by Johannes Sasongko
Modified: 2015-10-25 17:13 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
Test case (run with GTK_DEBUG=interactive) (472 bytes, text/x-csrc)
2015-10-20 10:50 UTC, Johannes Sasongko
Details

Description Johannes Sasongko 2015-10-20 10:50:40 UTC
Created attachment 313731 [details]
Test case (run with GTK_DEBUG=interactive)

GtkInspector causes a crash when you respond (attempt to close, press Open, etc.) to a FileChooserDialog. Any custom "response" signal handlers are run successfully, so the crash happens at some point after that.

This started happening since I upgraded from 3.16.x to 3.18. Tested on Arch Linux with GTK+ 3.18.2.

To test:

1. Compile the attached code.
2. Run with GTK_DEBUG=interactive so you get GtkInspector.
3. Press Escape (or click the Close button) on the file chooser dialog.

Expected behaviour: "Hello" is printed. Dialog stays open.

Actual behaviour: "Hello" is printed. Segfault.


Following is the backtrace. Unfortunately for some reason the glib symbols are incomplete.

  • #0 find_class_funcs
    at inspector/object-tree.c line 506
  • #1 object_get_parent
    at inspector/object-tree.c line 524
  • #2 gtk_inspector_object_tree_find_object
    at inspector/object-tree.c line 1172
  • #3 gtk_inspector_object_tree_find_object
    at inspector/object-tree.c line 1175
  • #4 gtk_object_tree_remove_dead_object
    at inspector/object-tree.c line 616
  • #5 weak_refs_notify
    from /usr/lib/libgobject-2.0.so.0
  • #6 g_object_unref
    from /usr/lib/libgobject-2.0.so.0
  • #7 g_hash_table_remove_all_nodes.part
    from /usr/lib/libglib-2.0.so.0
  • #8 g_hash_table_remove_all
    from /usr/lib/libglib-2.0.so.0
  • #9 g_hash_table_destroy
    from /usr/lib/libglib-2.0.so.0
  • #10 g_hash_table_remove_all_nodes.part
    from /usr/lib/libglib-2.0.so.0
  • #11 g_hash_table_remove_all
    from /usr/lib/libglib-2.0.so.0
  • #12 g_hash_table_destroy
    from /usr/lib/libglib-2.0.so.0
  • #13 gtk_widget_real_destroy
    at gtkwidget.c line 12136
  • #14 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #15 signal_emit_unlocked_R
    from /usr/lib/libgobject-2.0.so.0
  • #16 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #17 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #18 gtk_widget_dispose
    at gtkwidget.c line 12010
  • #19 g_object_run_dispose
    from /usr/lib/libgobject-2.0.so.0
  • #20 gtk_box_forall
    at gtkbox.c line 2586
  • #21 gtk_container_destroy
    at gtkcontainer.c line 1687
  • #22 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #23 signal_emit_unlocked_R
    from /usr/lib/libgobject-2.0.so.0
  • #24 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #25 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #26 gtk_widget_dispose
    at gtkwidget.c line 12010
  • #27 g_object_run_dispose
    from /usr/lib/libgobject-2.0.so.0
  • #28 gtk_window_forall
    at gtkwindow.c line 8150
  • #29 gtk_container_destroy
    at gtkcontainer.c line 1687
  • #30 g_closure_invoke
    from /usr/lib/libgobject-2.0.so.0
  • #31 signal_emit_unlocked_R
    from /usr/lib/libgobject-2.0.so.0
  • #32 g_signal_emit_valist
    from /usr/lib/libgobject-2.0.so.0
  • #33 g_signal_emit
    from /usr/lib/libgobject-2.0.so.0
  • #34 gtk_widget_dispose
    at gtkwidget.c line 12010
  • #35 gtk_window_dispose
    at gtkwindow.c line 3066
  • #36 g_object_run_dispose
    from /usr/lib/libgobject-2.0.so.0
  • #37 gtk_main_do_event
    at gtkmain.c line 1746
  • #38 send_delete_event
    at gtkwindow.c line 1291
  • #39 gdk_threads_dispatch
    at gdk.c line 719
  • #40 g_main_context_dispatch
    from /usr/lib/libglib-2.0.so.0
  • #41 g_main_context_iterate.isra
    from /usr/lib/libglib-2.0.so.0
  • #42 g_main_loop_run
    from /usr/lib/libglib-2.0.so.0
  • #43 gtk_main
    at gtkmain.c line 1241
  • #44 main
    at inspector-crash.c line 19