GNOME Bugzilla – Bug 670662
Gtk-CRITICAL **: gtk_widget_unrealize: assertion `GTK_IS_WIDGET (widget)' failed
Last modified: 2012-02-23 11:23:52 UTC
- Start a video call and wait it's connected - Hang up the call Gtk-CRITICAL **: gtk_widget_unrealize: assertion `GTK_IS_WIDGET (widget)' failed
+ Trace 229720
I'm starting to think this may be a clutter-gtk bug: a) Empathy calls clutter_actor_destroy() on a container (ClusterBox) b) gtk_clutter_actor_dispose is called on an actor which is insided the container c) It calls gtk_widget_destroy (priv->widget) and set priv->widget to NULL. d) clutter_actor_dispose calls clutter_container_remove_actor() to remove the actor from its container e) This result in clutter_actor_update_map_state() being called on the actor which then calls clutter_actor_unrealize_not_hiding() which will call unrealize_actor_before_children_cb() f) This function fires the "unrealize" signal calling gtk_clutter_actor_unrealize() gtk_clutter_actor_unrealize() tries to call gtk_widget_unrealize on priv->widget but this widget has already been destroyed and set to NULL in c) leading to the crash. Adding an early return in gtk_clutter_actor_unrealize() if priv->widget solves this but I'm not sure that's the proper fix.
Created attachment 208245 [details] [review] gtk_clutter_actor_unrealize: early return if priv->widget is NULL
Review of attachment 208245 [details] [review]: looks good to me
Attachment 208245 [details] pushed as 092ee70 - gtk_clutter_actor_unrealize: early return if priv->widget is NULL