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 696559 - stack-switcher: Disconnect the stack signals when the stack is destroyed
stack-switcher: Disconnect the stack signals when the stack is destroyed
Status: RESOLVED FIXED
Product: libgd
Classification: Platform
Component: general
unspecified
Other All
: Normal normal
: ---
Assigned To: libgd maintainer(s)
Depends on:
Blocks:
 
 
Reported: 2013-03-25 13:45 UTC by Debarshi Ray
Modified: 2013-03-25 14:58 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
stack-switcher: Disconnect the signals when the stack is destroyed (1.27 KB, patch)
2013-03-25 14:24 UTC, Debarshi Ray
committed Details | Review

Description Debarshi Ray 2013-03-25 13:45:45 UTC
Otherwise if the stack is destroyed before the stack-switcher, it causes a segmentation fault. eg., in the following backtrace widget=0x6d0360 is pointing to an invalid memory address.

(gdb) bt
  • #0 gtk_widget_get_toplevel
    at gtkwidget.c line 10232
  • #1 gtk_widget_is_focus
    at gtkwidget.c line 7358
  • #2 gtk_widget_propagate_state
    at gtkwidget.c line 11380
  • #3 gtk_widget_update_state_flags
    at gtkwidget.c line 7695
  • #4 gtk_widget_set_state_flags
    at gtkwidget.c line 7731
  • #5 gtk_radio_button_clicked
    at gtkradiobutton.c line 875
  • #6 g_closure_invoke
    at gclosure.c line 777
  • #7 signal_emit_unlocked_R
    at gsignal.c line 3514
  • #8 g_signal_emit_valist
    at gsignal.c line 3328
  • #9 g_signal_emit
    at gsignal.c line 3384
  • #10 gtk_button_clicked
    at gtkbutton.c line 1308
  • #11 gtk_radio_button_clicked
    at gtkradiobutton.c line 856
  • #12 g_closure_invoke
    at gclosure.c line 777
  • #13 signal_emit_unlocked_R
    at gsignal.c line 3514
  • #14 g_signal_emit_valist
    at gsignal.c line 3328
  • #15 g_signal_emit
    at gsignal.c line 3384
  • #16 gtk_button_clicked
    at gtkbutton.c line 1308
  • #17 gtk_toggle_button_set_active
    at gtktogglebutton.c line 467
  • #18 on_child_changed
    at libgd/gd-stack-switcher.c line 184
  • #19 g_closure_invoke
    at gclosure.c line 777
  • #20 signal_emit_unlocked_R
    at gsignal.c line 3584
  • #21 g_signal_emit_valist
    at gsignal.c line 3328
  • #22 g_signal_emit
    at gsignal.c line 3384
  • #23 g_object_dispatch_properties_changed
    at gobject.c line 1042
  • #24 g_object_notify_by_spec_internal
    at gobject.c line 1136
  • #25 g_object_notify
    at gobject.c line 1178
  • #26 set_visible_child
    at libgd/gd-stack.c line 780
  • #27 gd_stack_remove
    at libgd/gd-stack.c line 902
  • #28 g_closure_invoke
    at gclosure.c line 777
  • #29 signal_emit_unlocked_R
    at gsignal.c line 3514
  • #30 g_signal_emit_valist
    at gsignal.c line 3328
  • #31 g_signal_emit
    at gsignal.c line 3384
  • #32 gtk_container_remove
    at gtkcontainer.c line 1546
  • #33 gtk_widget_dispose
    at gtkwidget.c line 10760
  • #34 g_object_run_dispose
    at gobject.c line 1062
  • #35 gd_stack_forall
    at libgd/gd-stack.c line 1077
  • #36 gtk_container_destroy
    at gtkcontainer.c line 1377
  • #37 g_closure_invoke
    at gclosure.c line 777
  • #38 signal_emit_unlocked_R
    at gsignal.c line 3700
  • #39 g_signal_emit_valist
    at gsignal.c line 3328
  • #40 g_signal_emit
    at gsignal.c line 3384
  • #41 gtk_widget_dispose
    at gtkwidget.c line 10771
  • #42 g_object_run_dispose
    at gobject.c line 1062
  • #43 gtk_overlay_forall
    at gtkoverlay.c line 571
  • #44 gtk_container_destroy
    at gtkcontainer.c line 1377
  • #45 g_closure_invoke
    at gclosure.c line 777
  • #46 signal_emit_unlocked_R
    at gsignal.c line 3700
  • #47 g_signal_emit_valist
    at gsignal.c line 3328
  • #48 g_signal_emit
    at gsignal.c line 3384
  • #49 gtk_widget_dispose
    at gtkwidget.c line 10771
  • #50 g_object_run_dispose
    at gobject.c line 1062
  • #51 gtk_box_forall
    at gtkbox.c line 1875
  • #52 gtk_container_destroy
    at gtkcontainer.c line 1377
  • #53 g_closure_invoke
    at gclosure.c line 777
  • #54 signal_emit_unlocked_R
    at gsignal.c line 3700
  • #55 g_signal_emit_valist
    at gsignal.c line 3328
  • #56 g_signal_emit
    at gsignal.c line 3384
  • #57 gtk_widget_dispose
    at gtkwidget.c line 10771
  • #58 g_object_run_dispose
    at gobject.c line 1062
  • #59 gtk_container_destroy
    at gtkcontainer.c line 1377
  • #60 g_closure_invoke
    at gclosure.c line 777
  • #61 signal_emit_unlocked_R
    at gsignal.c line 3700
  • #62 g_signal_emit_valist
    at gsignal.c line 3328
  • #63 g_signal_emit
    at gsignal.c line 3384
  • #64 gtk_widget_dispose
    at gtkwidget.c line 10771
  • #65 g_object_run_dispose
    at gobject.c line 1062
  • #66 gtk_widget_destroy
    at gtkwidget.c line 4093
  • #67 gtk_main_do_event
    at gtkmain.c line 1610
  • #68 gdk_event_source_dispatch
    at gdkeventsource.c line 364
  • #69 g_main_dispatch
    at gmain.c line 3054
  • #70 g_main_context_dispatch
    at gmain.c line 3630
  • #71 g_main_context_iterate
    at gmain.c line 3701
  • #72 g_main_context_iteration
    at gmain.c line 3762
  • #73 g_application_run
    at gapplication.c line 1623
  • #74 main
    at photos-main.c line 47

Comment 1 Debarshi Ray 2013-03-25 14:24:47 UTC
Created attachment 239767 [details] [review]
stack-switcher: Disconnect the signals when the stack is destroyed
Comment 2 Cosimo Cecchi 2013-03-25 14:34:12 UTC
Review of attachment 239767 [details] [review]:

Thanks, looks good.
Comment 3 Debarshi Ray 2013-03-25 14:58:12 UTC
Thanks for the review. Pushed.