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 578356 - Asserts when reconnecting to a chat room.
Asserts when reconnecting to a chat room.
Status: RESOLVED FIXED
Product: empathy
Classification: Core
Component: General
2.26.x
Other Linux
: Normal critical
: ---
Assigned To: empathy-maint
empathy-maint
: 613099 (view as bug list)
Depends on:
Blocks:
 
 
Reported: 2009-04-08 09:49 UTC by Will Thompson
Modified: 2010-03-17 04:41 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Will Thompson 2009-04-08 09:49:31 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.

Thread 140269810644912 (LWP 14316)

  • #0 *__GI_raise
    at ../nptl/sysdeps/unix/sysv/linux/raise.c line 64
  • #1 *__GI_abort
    at abort.c line 88
  • #2 IA__g_assertion_message
    at /tmp/buildd/glib2.0-2.20.0/glib/gtestutils.c line 1301
  • #3 IA__g_assertion_message_expr
    at /tmp/buildd/glib2.0-2.20.0/glib/gtestutils.c line 1312
  • #4 chatroom_set_property
    at empathy-chatroom.c line 231
  • #5 IA__g_object_set_valist
    at /tmp/buildd/glib2.0-2.20.0/gobject/gobject.c line 942
  • #6 IA__g_object_set
    at /tmp/buildd/glib2.0-2.20.0/gobject/gobject.c line 1537
  • #7 chatroom_manager_observe_channel_cb
    at empathy-chatroom-manager.c line 725
  • #8 IA__g_closure_invoke
    at /tmp/buildd/glib2.0-2.20.0/gobject/gclosure.c line 767
  • #9 signal_emit_unlocked_R
    at /tmp/buildd/glib2.0-2.20.0/gobject/gsignal.c line 3244
  • #10 IA__g_signal_emit_valist
    at /tmp/buildd/glib2.0-2.20.0/gobject/gsignal.c line 2977
  • #11 IA__g_signal_emit
    at /tmp/buildd/glib2.0-2.20.0/gobject/gsignal.c line 3034
  • #12 dispatch_operation_ready_cb
    at empathy-dispatcher.c line 401
  • #13 IA__g_closure_invoke
    at /tmp/buildd/glib2.0-2.20.0/gobject/gclosure.c line 767
  • #14 signal_emit_unlocked_R
    at /tmp/buildd/glib2.0-2.20.0/gobject/gsignal.c line 3244
  • #15 IA__g_signal_emit_valist
    at /tmp/buildd/glib2.0-2.20.0/gobject/gsignal.c line 2977
  • #16 IA__g_signal_emit
    at /tmp/buildd/glib2.0-2.20.0/gobject/gsignal.c line 3034
  • #17 cwr_ready
    at channel.c line 1569
  • #18 IA__g_closure_invoke
    at /tmp/buildd/glib2.0-2.20.0/gobject/gclosure.c line 767
  • #19 signal_emit_unlocked_R
    at /tmp/buildd/glib2.0-2.20.0/gobject/gsignal.c line 3244
  • #20 IA__g_signal_emit_valist
    at /tmp/buildd/glib2.0-2.20.0/gobject/gsignal.c line 2977
  • #21 IA__g_signal_emit
    at /tmp/buildd/glib2.0-2.20.0/gobject/gsignal.c line 3034
  • #22 g_object_dispatch_properties_changed
    at /tmp/buildd/glib2.0-2.20.0/gobject/gobject.c line 770
  • #23 IA__g_object_notify
    at /tmp/buildd/glib2.0-2.20.0/gobject/gobjectnotifyqueue.c line 125
  • #24 _tp_channel_emit_initial_sets
    at channel-group.c line 689
  • #25 _tp_cli_dbus_properties_invoke_callback_get_all
    at _gen/tp-cli-generic-body.h line 1421
  • #26 tp_proxy_pending_call_idle_invoke
    at proxy-methods.c line 153
  • #27 IA__g_main_context_dispatch
    at /tmp/buildd/glib2.0-2.20.0/glib/gmain.c line 1814
  • #28 g_main_context_iterate
    at /tmp/buildd/glib2.0-2.20.0/glib/gmain.c line 2448
  • #29 IA__g_main_loop_run
    at /tmp/buildd/glib2.0-2.20.0/glib/gmain.c line 2656
  • #30 IA__gtk_main
    at /build/buildd/gtk+2.0-2.16.0/gtk/gtkmain.c line 1205
  • #31 main
    at empathy.c line 569

Comment 1 Will Thompson 2009-04-12 14:27:51 UTC
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

Thread 1 (Thread 0x7fcfcb5bb6f0 (LWP 18877))

  • #0 __libc_waitpid
    at ../sysdeps/unix/sysv/linux/waitpid.c line 32
  • #1 IA__g_spawn_sync
    at gspawn.c line 382
  • #2 IA__g_spawn_command_line_sync
    at gspawn.c line 694
  • #3 bugbuddy_segv_handle
    from /usr/lib64/gtk-2.0/modules/libgnomebreakpad.so
  • #4 <signal handler called>
  • #5 *__GI_raise
    at ../nptl/sysdeps/unix/sysv/linux/raise.c line 64
  • #6 *__GI_abort
    at abort.c line 88
  • #7 IA__g_assertion_message
    at gtestutils.c line 1301
  • #8 IA__g_assertion_message_expr
    at gtestutils.c line 1312
  • #9 chatroom_set_property
    at empathy-chatroom.c line 231
  • #10 IA__g_object_set_valist
    at gobject.c line 942
  • #11 IA__g_object_set
    at gobject.c line 1537
  • #12 chatroom_manager_observe_channel_cb
    at empathy-chatroom-manager.c line 725
  • #13 IA__g_closure_invoke
    at gclosure.c line 767
  • #14 signal_emit_unlocked_R
    at gsignal.c line 3247
  • #15 IA__g_signal_emit_valist
    at gsignal.c line 2980
  • #16 IA__g_signal_emit
    at gsignal.c line 3037
  • #17 dispatch_operation_ready_cb
    at empathy-dispatcher.c line 401
  • #18 dispatcher_connection_new_requested_channel
    at empathy-dispatcher.c line 1133
  • #19 _tp_cli_connection_invoke_callback_request_channel
    at _gen/tp-cli-connection-body.h line 3211
  • #20 tp_proxy_pending_call_idle_invoke
    at proxy-methods.c line 153
  • #21 IA__g_main_context_dispatch
    at gmain.c line 1814
  • #22 g_main_context_iterate
    at gmain.c line 2448
  • #23 IA__g_main_loop_run
    at gmain.c line 2656
  • #24 IA__gtk_main
    at gtkmain.c line 1205
  • #25 main
    at empathy.c line 569


---- 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.
--------------------------------------------------

Comment 2 Will Thompson 2009-04-12 18:13:02 UTC
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);
Comment 3 Will Thompson 2009-04-12 18:29:35 UTC
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.
Comment 4 Will Thompson 2009-04-13 09:16:45 UTC
[Bumping severity; this is a crasher.]
Comment 5 Xavier Claessens 2009-04-13 09:36:26 UTC
committed. Thanks!
Comment 6 Akhil Laddha 2010-03-17 04:41:05 UTC
*** Bug 613099 has been marked as a duplicate of this bug. ***