GNOME Bugzilla – Bug 578356
Asserts when reconnecting to a chat room.
Last modified: 2010-03-17 04:41:05 UTC
Steps to reproduce (I think): * Join an XMPP MUC. * Make the network go away. * Make the network come back. ERROR:empathy-chatroom.c:231:chatroom_set_property: assertion failed: (chat == NULL || priv->tp_chat == NULL) Log and backtrace: ** (empathy:14316): DEBUG: empathy_dispatch_operation_approve: Pre-approving operation /org/freedesktop/Telepathy/Connection/gabble/jabber/will_2ethompson_40collabora_2eco_2euk_2fQueeg/MucChannel1 ** (empathy:14316): DEBUG: dispatcher_start_dispatching: Dispatching process started for /org/freedesktop/Telepathy/Connection/gabble/jabber/will_2ethompson_40collabora_2eco_2euk_2fQueeg/MucChannel1 (empathy:14316): tp-glib-DEBUG: _tp_channel_got_properties: Received 8 channel properties (empathy:14316): tp-glib-DEBUG: _tp_channel_maybe_set_interfaces: - org.freedesktop.Telepathy.Channel.Interface.Group (empathy:14316): tp-glib-DEBUG: _tp_channel_maybe_set_interfaces: - org.freedesktop.Telepathy.Channel.Interface.Password (empathy:14316): tp-glib-DEBUG: _tp_channel_maybe_set_interfaces: - org.freedesktop.Telepathy.Properties (empathy:14316): tp-glib-DEBUG: _tp_channel_maybe_set_interfaces: - org.freedesktop.Telepathy.Channel.Interface.ChatState (empathy:14316): tp-glib-DEBUG: _tp_channel_maybe_set_interfaces: - org.freedesktop.Telepathy.Channel.Interface.Messages (empathy:14316): tp-glib-DEBUG: _tp_channel_continue_introspection: 0x173e830 (empathy:14316): tp-glib-DEBUG: _tp_channel_get_handle: 0x173e830: handle already known to be 1 of type 2 (empathy:14316): tp-glib-DEBUG: _tp_channel_continue_introspection: 0x173e830 (empathy:14316): tp-glib-DEBUG: _tp_channel_get_identifier: 0x173e830: identifier already known to be devel@conference.pidgin.im (empathy:14316): tp-glib-DEBUG: _tp_channel_continue_introspection: 0x173e830 (empathy:14316): tp-glib-DEBUG: _tp_channel_get_channel_type: 0x173e830: channel type org.freedesktop.Telepathy.Channel.Type.Text already determined (empathy:14316): tp-glib-DEBUG: _tp_channel_continue_introspection: 0x173e830 (empathy:14316): tp-glib-DEBUG: _tp_channel_get_interfaces: 0x173e830 (empathy:14316): tp-glib-DEBUG: _tp_channel_continue_introspection: 0x173e830 (empathy:14316): tp-glib-DEBUG: _tp_channel_get_group_properties: 0x173e830 (empathy:14316): tp-glib-DEBUG: tp_proxy_borrow_interface_by_id: 0x173e830: org.freedesktop.Telepathy.Channel.Interface.Group DBusGProxy is 0x20e6b30 (empathy:14316): tp-glib-DEBUG: tp_channel_got_group_properties_cb: Received 6 group properties (empathy:14316): tp-glib-DEBUG: _got_initial_group_flags: Initial GroupFlags: 2313 (empathy:14316): tp-glib-DEBUG: tp_channel_group_self_handle_changed_cb: 0x173e830 SelfHandle changed to 33 (empathy:14316): tp-glib-DEBUG: _tp_channel_continue_introspection: 0x173e830 (empathy:14316): tp-glib-DEBUG: _tp_channel_continue_introspection: 0x173e830 (empathy:14316): tp-glib-DEBUG: _tp_channel_continue_introspection: 0x173e830: channel ready (empathy:14316): tp-glib-DEBUG: cwr_ready: enter ** (empathy:14316): DEBUG: tp_chat_channel_ready_cb: Channel ready ** (empathy:14316): DEBUG: empathy_run_until_ready_full: Starting run until ready for object 0x19f9260 ** (empathy:14316): DEBUG: tp_group_update_members: Members changed for list devel@conference.pidgin.im: added-len=0, current-len=0 removed-len=0 local-pending-len=0, current-len=0 remote-pending-len=0, current-len=0 ** (empathy:14316): DEBUG: tp_group_update_members: Members changed done for list devel@conference.pidgin.im: members-len=0 local-pendings-len=0 remote-pendings-len=0 ** (empathy:14316): DEBUG: tp_group_update_members: Members changed for list devel@conference.pidgin.im: added-len=20, current-len=0 removed-len=0 local-pending-len=0, current-len=0 remote-pending-len=0, current-len=0 ** (empathy:14316): DEBUG: tp_contact_factory_add_contact: Contact added: (null) (33) ** (empathy:14316): DEBUG: tp_contact_factory_add_contact: Contact added: (null) (34) ** (empathy:14316): DEBUG: tp_contact_factory_add_contact: Contact added: (null) (36) ** (empathy:14316): DEBUG: tp_contact_factory_add_contact: Contact added: (null) (38) ** (empathy:14316): DEBUG: tp_contact_factory_add_contact: Contact added: (null) (40) ** (empathy:14316): DEBUG: tp_contact_factory_add_contact: Contact added: (null) (42) ** (empathy:14316): DEBUG: tp_contact_factory_add_contact: Contact added: (null) (44) ** (empathy:14316): DEBUG: tp_contact_factory_add_contact: Contact added: (null) (46) ** (empathy:14316): DEBUG: tp_contact_factory_add_contact: Contact added: (null) (48) ** (empathy:14316): DEBUG: tp_contact_factory_add_contact: Contact added: (null) (50) ** (empathy:14316): DEBUG: tp_contact_factory_add_contact: Contact added: (null) (52) ** (empathy:14316): DEBUG: tp_contact_factory_add_contact: Contact added: (null) (54) ** (empathy:14316): DEBUG: tp_contact_factory_add_contact: Contact added: (null) (56) ** (empathy:14316): DEBUG: tp_contact_factory_add_contact: Contact added: (null) (58) ** (empathy:14316): DEBUG: tp_contact_factory_add_contact: Contact added: (null) (60) ** (empathy:14316): DEBUG: tp_contact_factory_add_contact: Contact added: (null) (62) ** (empathy:14316): DEBUG: tp_contact_factory_add_contact: Contact added: (null) (63) ** (empathy:14316): DEBUG: tp_contact_factory_add_contact: Contact added: (null) (65) ** (empathy:14316): DEBUG: tp_contact_factory_add_contact: Contact added: (null) (67) ** (empathy:14316): DEBUG: tp_contact_factory_add_contact: Contact added: (null) (69) ** (empathy:14316): DEBUG: tp_group_update_members: Members changed done for list devel@conference.pidgin.im: members-len=20 local-pendings-len=0 remote-pendings-len=0 ** (empathy:14316): DEBUG: tp_group_get_members_cb: Ready ** (empathy:14316): DEBUG: run_until_ready_cb: Object 0x19f9260 is ready (empathy:14316): tp-glib-DEBUG: tp_proxy_borrow_interface_by_id: 0x173e830: org.freedesktop.Telepathy.Properties DBusGProxy is 0x20ac750 (empathy:14316): tp-glib-DEBUG: tp_proxy_borrow_interface_by_id: 0x173e830: org.freedesktop.Telepathy.Channel.Type.Text DBusGProxy is 0x19f92d0 (empathy:14316): tp-glib-DEBUG: tp_proxy_borrow_interface_by_id: 0x173e830: org.freedesktop.Telepathy.Channel.Interface.ChatState DBusGProxy is 0x20ac4b0 ** (empathy:14316): DEBUG: empathy_dispatch_operation_set_status: Dispatch operation /org/freedesktop/Telepathy/Connection/gabble/jabber/will_2ethompson_40collabora_2eco_2euk_2fQueeg/MucChannel1 status: 0 -> 1 ** (empathy:14316): DEBUG: dispatch_operation_ready_cb: Send to observers: /org/freedesktop/Telepathy/Connection/gabble/jabber/will_2ethompson_40collabora_2eco_2euk_2fQueeg/MucChannel1 ** ERROR:empathy-chatroom.c:231:chatroom_set_property: assertion failed: (chat == NULL || priv->tp_chat == NULL) Program received signal SIGABRT, Aborted.
+ Trace 214285
Thread 140269810644912 (LWP 14316)
Florian Steinel reported the same issue when reconnecting with Idle over at <http://bugs.freedesktop.org/show_bug.cgi?id=21135>: telepathy-mission-control Version 4.67 telepathy-idle git latest (1b6f1549a8c66356a9ea2d4a7240be98efb38ec7) libtelepathy Version 0.3.3 telepathy-glib Version 0.7.29 empathy Version 2.26.0.1 Distribution: Gentoo Base System release 2.0.0 Gnome Release: 2.26.0 2009-03-22 (Gentoo) BugBuddy Version: 2.26.0 System: Linux 2.6.28-gentoo-r2 #1 SMP Fri Feb 20 18:53:41 CET 2009 x86_64 X Vendor: The X.Org Foundation X Vendor Release: 10599903 Selinux: No Accessibility: Disabled GTK+ Theme: Clearlooks Icon Theme: gnome GTK+ Modules: canberra-gtk-module, gnomebreakpad Memory status: size: 280227840 vsize: 280227840 resident: 42569728 share: 15134720 rss: 42569728 rss_rlim: 18446744073709551615 CPU usage: start_time: 1239530114 rtime: 429 utime: 399 stime: 30 cutime:0 cstime: 0 timeout: 0 it_real_value: 0 frequency: 100 Backtrace was generated from '/usr/bin/empathy' [Thread debugging using libthread_db enabled] [New Thread 0x7fcfcb5bb6f0 (LWP 18877)] 0x00007fcfc90d9ec5 in __libc_waitpid (pid=25802, stat_loc=0x7fffd35f88d0, options=0) at ../sysdeps/unix/sysv/linux/waitpid.c:32 in ../sysdeps/unix/sysv/linux/waitpid.c
+ Trace 214402
Thread 1 (Thread 0x7fcfcb5bb6f0 (LWP 18877))
---- Critical and fatal warnings logged during execution ---- ** tp-glib **: tp_channel_get_identifier: assertion `TP_IS_CHANNEL (self)' failed ** empathy **: empathy_chatroom_manager_find: assertion `room != NULL' failed ** tp-glib **: tp_channel_get_identifier: assertion `TP_IS_CHANNEL (self)' failed ** empathy **: empathy_chatroom_manager_find: assertion `room != NULL' failed ** tp-glib **: tp_channel_get_identifier: assertion `TP_IS_CHANNEL (self)' failed ** empathy **: empathy_chatroom_manager_find: assertion `room != NULL' failed ----------- .xsession-errors --------------------- ERROR:empathy-chatroom.c:231:chatroom_set_property: assertion failed: (chat == NULL || priv->tp_chat == NULL) 32 ../sysdeps/unix/sysv/linux/waitpid.c: No such file or directory. --------------------------------------------------
I suspect that this comment in chatroom_manager_observe_channel_cb is false, because were it true this assertion would not fire: /* A TpChat is always destroyed as it only gets unreffed after the channel * has been invalidated in the dispatcher.. */ g_signal_connect (chat, "destroy", G_CALLBACK (chatroom_manager_chat_destroyed_cb), manager);
Ah. The problem is that chatroom_manager_chat_destroyed_cb tries to get the room's identifier using empathy_tp_chat_get_id (chat) which calls tp_channel_get_identifier on its priv->channel which is set to NULL before 'destroy' is emitted. Fixed in <http://git.collabora.co.uk/?p=user/wjt/empathy-wjt.git;a=shortlog;h=refs/heads/bug-578356>. But this seems hairy.
[Bumping severity; this is a crasher.]
committed. Thanks!
*** Bug 613099 has been marked as a duplicate of this bug. ***