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 683275 - [new roster] Crash when disabling groups
[new roster] Crash when disabling groups
Status: RESOLVED FIXED
Product: empathy
Classification: Core
Component: Contact List
2.33.x
Other Linux
: Normal critical
: 3.6
Assigned To: empathy-maint
empathy-maint
Depends on:
Blocks:
 
 
Reported: 2012-09-03 14:51 UTC by Guillaume Desmottes
Modified: 2012-09-03 15:17 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
roster-view: clear_view: start by cleaning our internal hash tables (1.41 KB, patch)
2012-09-03 15:13 UTC, Guillaume Desmottes
committed Details | Review

Description Guillaume Desmottes 2012-09-03 14:51:15 UTC
- Start Empathy in group mode
- Disable group mode


(lt-empathy:24318): GLib-GObject-WARNING **: invalid unclassed pointer in cast to `EmpathyRosterGroup'


  • #0 empathy_roster_group_get_widgets
    at empathy-roster-group.c line 236
  • #1 filter_group
    at empathy-roster-view.c line 869
  • #2 at_least_one_group_displayed
    at empathy-roster-view.c line 274
  • #3 check_if_empty
    at empathy-roster-view.c line 287
  • #4 remove_from_displayed
    at empathy-roster-view.c line 793
  • #5 empathy_roster_view_remove
    at empathy-roster-view.c line 1215
  • #6 g_cclosure_marshal_VOID__OBJECT
    at gmarshal.c line 1272
  • #7 g_type_class_meta_marshal
    at gclosure.c line 970
  • #8 g_closure_invoke
    at gclosure.c line 777
  • #9 signal_emit_unlocked_R
    at gsignal.c line 3481
  • #10 g_signal_emit_valist
    at gsignal.c line 3300
  • #11 g_signal_emit
    at gsignal.c line 3356
  • #12 gtk_container_remove
    at gtkcontainer.c line 1546
  • #13 gtk_widget_dispose
    at gtkwidget.c line 10263
  • #14 empathy_roster_contact_dispose
    at empathy-roster-contact.c line 329
  • #15 g_object_run_dispose
    at gobject.c line 1061
  • #16 gtk_widget_destroy
    at gtkwidget.c line 3957
  • #17 egg_list_box_real_forall_internal
    at egg-list-box.c line 1446
  • #18 gtk_container_foreach
    at gtkcontainer.c line 2093
  • #19 clear_view
    at empathy-roster-view.c line 1340
  • #20 empathy_roster_view_show_groups
    at empathy-roster-view.c line 1358
  • #21 empathy_roster_view_set_property
    at empathy-roster-view.c line 152
  • #22 object_set_property
    at gobject.c line 1357
  • #23 g_object_set_property
    at gobject.c line 2154
  • #24 g_settings_binding_key_changed
    at gsettings.c line 2411
  • #25 g_cclosure_marshal_VOID__STRINGv
    at gmarshal.c line 1004
  • #26 _g_closure_invoke_va
    at gclosure.c line 840
  • #27 g_signal_emit_valist
    at gsignal.c line 3211
  • #28 g_signal_emit
    at gsignal.c line 3356
  • #29 g_settings_real_change_event
    at gsettings.c line 282
  • #30 ffi_call_unix64
    at ../src/x86/unix64.S line 75
  • #31 ffi_call
    at ../src/x86/ffi64.c line 486
  • #32 g_cclosure_marshal_generic_va
    at gclosure.c line 1550
  • #33 g_type_class_meta_marshalv
    at gclosure.c line 997
  • #34 _g_closure_invoke_va
    at gclosure.c line 840
  • #35 g_signal_emit_valist
    at gsignal.c line 3211
  • #36 g_signal_emit
    at gsignal.c line 3356
  • #37 settings_backend_changed
    at gsettings.c line 336
  • #38 g_settings_backend_invoke_closure
    at gsettingsbackend.c line 271
  • #39 g_main_context_invoke_full
    at gmain.c line 4958
  • #40 g_main_context_invoke
    at gmain.c line 4919
  • #41 g_settings_backend_dispatch_signal
    at gsettingsbackend.c line 353
  • #42 g_settings_backend_changed
    at gsettingsbackend.c line 400
  • #43 dconf_settings_backend_write
    at dconfsettingsbackend.c line 472
  • #44 g_settings_backend_write
  • #45 g_settings_write_to_backend
    at gsettings.c line 1013
  • #46 g_settings_binding_property_changed
    at gsettings.c line 2461
  • #47 g_cclosure_marshal_VOID__PARAM
    at gmarshal.c line 1042
  • #48 g_closure_invoke
    at gclosure.c line 777
  • #49 signal_emit_unlocked_R
    at gsignal.c line 3551
  • #50 g_signal_emit_valist
    at gsignal.c line 3300
  • #51 g_signal_emit
    at gsignal.c line 3356
  • #52 g_object_dispatch_properties_changed
    at gobject.c line 1041
  • #53 g_object_notify_by_spec_internal
    at gobject.c line 1135
  • #54 g_object_notify
    at gobject.c line 1177
  • #55 gtk_toggle_button_clicked
    at gtktogglebutton.c line 618
  • #56 g_cclosure_marshal_VOID__VOIDv
    at gmarshal.c line 115
  • #57 g_type_class_meta_marshalv
    at gclosure.c line 997
  • #58 _g_closure_invoke_va
    at gclosure.c line 840
  • #59 g_signal_emit_valist
    at gsignal.c line 3211
  • #60 g_signal_emit
    at gsignal.c line 3356
  • #61 gtk_button_clicked
    at gtkbutton.c line 1308
  • #62 gtk_toggle_button_released
    at gtktogglebutton.c line 599
  • #63 g_cclosure_marshal_VOID__VOIDv
    at gmarshal.c line 115
  • #64 g_type_class_meta_marshalv
    at gclosure.c line 997
  • #65 _g_closure_invoke_va
    at gclosure.c line 840
  • #66 g_signal_emit_valist
    at gsignal.c line 3211
  • #67 g_signal_emit
    at gsignal.c line 3356
  • #68 gtk_button_button_release
    at gtkbutton.c line 1799
  • #69 _gtk_marshal_BOOLEAN__BOXEDv
    at gtkmarshalers.c line 130
  • #70 g_type_class_meta_marshalv
    at gclosure.c line 997
  • #71 _g_closure_invoke_va
    at gclosure.c line 840
  • #72 g_signal_emit_valist
    at gsignal.c line 3211
  • #73 g_signal_emit
    at gsignal.c line 3356
  • #74 gtk_widget_event_internal
    at gtkwidget.c line 6303
  • #75 gtk_widget_event
    at gtkwidget.c line 5960
  • #76 propagate_event_up
    at gtkmain.c line 2390
  • #77 propagate_event
    at gtkmain.c line 2490
  • #78 gtk_propagate_event
    at gtkmain.c line 2525
  • #79 gtk_main_do_event
    at gtkmain.c line 1713
  • #80 _gdk_event_emit
    at gdkevents.c line 69
  • #81 gdk_event_source_dispatch
    at gdkeventsource.c line 358
  • #82 g_main_dispatch
    at gmain.c line 2691
  • #83 g_main_context_dispatch
    at gmain.c line 3195
  • #84 g_main_context_iterate
    at gmain.c line 3266
  • #85 g_main_context_iteration
    at gmain.c line 3327
  • #86 g_application_run
    at gapplication.c line 1607
  • #87 main
    at empathy.c line 847

Comment 1 Guillaume Desmottes 2012-09-03 15:02:30 UTC
Trace of the first warning:


  • #0 g_logv
    at gmessages.c line 967
  • #1 g_log
    at gmessages.c line 1003
  • #2 g_type_check_instance_cast
    at gtype.c line 4014
  • #3 at_least_one_group_displayed
    at empathy-roster-view.c line 272
  • #4 check_if_empty
    at empathy-roster-view.c line 287
  • #5 remove_from_displayed
    at empathy-roster-view.c line 793
  • #6 empathy_roster_view_remove
    at empathy-roster-view.c line 1215
  • #7 g_cclosure_marshal_VOID__OBJECT
    at gmarshal.c line 1272
  • #8 g_type_class_meta_marshal
    at gclosure.c line 970
  • #9 g_closure_invoke
    at gclosure.c line 777
  • #10 signal_emit_unlocked_R
    at gsignal.c line 3481
  • #11 g_signal_emit_valist
    at gsignal.c line 3300
  • #12 g_signal_emit
    at gsignal.c line 3356
  • #13 gtk_container_remove
    at gtkcontainer.c line 1546
  • #14 gtk_widget_dispose
    at gtkwidget.c line 10263
  • #15 empathy_roster_contact_dispose
    at empathy-roster-contact.c line 329
  • #16 g_object_run_dispose
    at gobject.c line 1061
  • #17 gtk_widget_destroy
    at gtkwidget.c line 3957
  • #18 egg_list_box_real_forall_internal
    at egg-list-box.c line 1446
  • #19 gtk_container_foreach
    at gtkcontainer.c line 2093
  • #20 clear_view
    at empathy-roster-view.c line 1340
  • #21 empathy_roster_view_show_groups
    at empathy-roster-view.c line 1358
  • #22 empathy_roster_view_set_property
    at empathy-roster-view.c line 152
  • #23 object_set_property
    at gobject.c line 1357
  • #24 g_object_set_property
    at gobject.c line 2154
  • #25 g_settings_binding_key_changed
    at gsettings.c line 2423
  • #26 g_cclosure_marshal_VOID__STRINGv
    at gmarshal.c line 1004
  • #27 _g_closure_invoke_va
    at gclosure.c line 840
  • #28 g_signal_emit_valist
    at gsignal.c line 3211
  • #29 g_signal_emit
    at gsignal.c line 3356
  • #30 g_settings_real_change_event
    at gsettings.c line 288
  • #31 ffi_call_unix64
    at ../src/x86/unix64.S line 75
  • #32 ffi_call
    at ../src/x86/ffi64.c line 486
  • #33 g_cclosure_marshal_generic_va
    at gclosure.c line 1550
  • #34 g_type_class_meta_marshalv
    at gclosure.c line 997
  • #35 _g_closure_invoke_va
    at gclosure.c line 840
  • #36 g_signal_emit_valist
    at gsignal.c line 3211
  • #37 g_signal_emit
    at gsignal.c line 3356
  • #38 settings_backend_changed
    at gsettings.c line 348
  • #39 g_settings_backend_invoke_closure
    at gsettingsbackend.c line 271
  • #40 g_idle_dispatch
    at gmain.c line 4806
  • #41 g_main_dispatch
    at gmain.c line 2715
  • #42 g_main_context_dispatch
    at gmain.c line 3219
  • #43 g_main_context_iterate
    at gmain.c line 3290
  • #44 g_main_context_iteration
    at gmain.c line 3351
  • #45 g_application_run
    at gapplication.c line 1607
  • #46 main
    at empathy.c line 847

Comment 2 Guillaume Desmottes 2012-09-03 15:13:00 UTC
Created attachment 223336 [details] [review]
roster-view: clear_view: start by cleaning our internal hash tables

Removing and destroying the widgets contained in the view will call
empathy_roster_view_remove(). This function may use some of the internal hash
tables which now contain destroyed object.

It's safer to clean the internal hash tables first as we are about to destroy
their content anyway.
Comment 3 Guillaume Desmottes 2012-09-03 15:17:00 UTC
Attachment 223336 [details] pushed as d25442b - roster-view: clear_view: start by cleaning our internal hash tables