Original bug report: https://bugs.launchpad.net/ubuntu/+source/telepathy-gabble/+bug/915015 I observed this once as well when running master iirc. #0 g_logv (log_domain=0xb710b66e "GLib", log_level=<optimized out>, format=0xb7113a5e "%s: assertion `%s' failed", args1=0xbfbc7d2c " \370\020\267t\365\020\267\255\001") at /build/buildd/glib2.0-2.31.8/./glib/gmessages.c:765 domain = 0x0 data = <optimized out> depth = <optimized out> log_func = <optimized out> domain_fatal_mask = <optimized out> masquerade_fatal = <optimized out> test_level = <optimized out> was_fatal = 0 was_recursion = 0 i = <optimized out> #1 0xb70d00b3 in g_log (log_domain=0xb710b66e "GLib", log_level=G_LOG_LEVEL_CRITICAL, format=0xb7113a5e "%s: assertion `%s' failed") at /build/buildd/glib2.0-2.31.8/./glib/gmessages.c:792 args = 0xbfbc7d2c " \370\020\267t\365\020\267\255\001" #2 0xb70d00fd in g_return_if_fail_warning (log_domain=0xb710b66e "GLib", pretty_function=0xb710f820 "g_hash_table_foreach", expression=0xb710f574 "version == hash_table->version") at /build/buildd/glib2.0-2.31.8/./glib/gmessages.c:801 No locals. #3 0xb70b8328 in g_hash_table_foreach (hash_table=0x993c808, func=0x8108e50 <disconnect_entry_foreach>, user_data=0x0) at /build/buildd/glib2.0-2.31.8/./glib/ghash.c:1510 node_hash = <optimized out> node_key = <optimized out> node_value = <optimized out> i = <optimized out> version = 190 __PRETTY_FUNCTION__ = "g_hash_table_foreach" #4 0x08109df7 in gabble_vcard_manager_dispose (object=0x99318c8) at vcard-manager.c:590 self = 0x99318c8 priv = 0x99318d8 __PRETTY_FUNCTION__ = "gabble_vcard_manager_dispose" #5 0xb718f922 in g_object_unref (_object=0x99318c8) at /build/buildd/glib2.0-2.31.8/./gobject/gobject.c:2971 weak_locations = 0x0 object = 0x99318c8 old_ref = <optimized out> __PRETTY_FUNCTION__ = "g_object_unref" #6 0x080c4aa5 in gabble_connection_dispose (object=0x9924440) at connection.c:1211 _tp_clear_pointer_tmp = <optimized out> self = 0x9924440 base = 0x9924440 priv = 0x9924548 __PRETTY_FUNCTION__ = "gabble_connection_dispose" #7 0xb718f922 in g_object_unref (_object=0x9924440) at /build/buildd/glib2.0-2.31.8/./gobject/gobject.c:2971 weak_locations = 0x0 object = 0x9924440 old_ref = <optimized out> __PRETTY_FUNCTION__ = "g_object_unref" #8 0xb718fab2 in g_value_object_free_value (value=0x9db8f30) at /build/buildd/glib2.0-2.31.8/./gobject/gobject.c:3291 No locals. #9 0xb71b15c6 in g_value_unset (value=0x9db8f30) at /build/buildd/glib2.0-2.31.8/./gobject/gvalue.c:276 value_table = <optimized out> __PRETTY_FUNCTION__ = "g_value_unset" #10 0xb71a50f6 in g_signal_emit_valist (instance=0x9924440, signal_id=18, detail=0, var_args=<optimized out>) at /build/buildd/glib2.0-2.31.8/./gobject/gsignal.c:3063 instance_and_params = 0x9db8f30 signal_return_type = 4 param_values = 0x9db8f44 node = 0x0 i = <optimized out> n_params = 0 __PRETTY_FUNCTION__ = "g_signal_emit_valist" #11 0xb71a5253 in g_signal_emit (instance=0x9924440, signal_id=18, detail=0) at /build/buildd/glib2.0-2.31.8/./gobject/gsignal.c:3090 var_args = 0xbfbc804c ">>" #12 0xb7409598 in tp_base_connection_finish_shutdown (self=0x9924440) at base-connection.c:2697 contexts = 0xb6372998 i = <optimized out> __PRETTY_FUNCTION__ = "tp_base_connection_finish_shutdown" #13 0x080c58fd in force_close_cb (source=0x9910c10, res=0x9d9c6a8, user_data=0x9924440) at connection.c:1636 self = <optimized out> base = 0x9924440 error = 0x0 __PRETTY_FUNCTION__ = "force_close_cb" #14 0xb7263500 in g_simple_async_result_complete (simple=0x9d9c6a8) at /build/buildd/glib2.0-2.31.8/./gio/gsimpleasyncresult.c:744 current_source = <optimized out> current_context = <optimized out> __PRETTY_FUNCTION__ = "g_simple_async_result_complete" #15 0x08098972 in connection_force_close_cb (source=0x9d0b560, res=0x9d236f0, user_data=0x9910c10) at wocky-c2s-porter.c:1257 self = 0x9910c10 priv = 0x9910c20 r = 0x9d9c6a8 error = 0x0 __PRETTY_FUNCTION__ = "connection_force_close_cb" #16 0xb7263500 in g_simple_async_result_complete (simple=0x9d236f0) at /build/buildd/glib2.0-2.31.8/./gio/gsimpleasyncresult.c:744 current_source = <optimized out> current_context = <optimized out> __PRETTY_FUNCTION__ = "g_simple_async_result_complete" #17 0x0809b375 in stream_close_cb (source=0xb6304028, res=0x9d56870, user_data=0x9d0b560) at wocky-xmpp-connection.c:1191 connection = <optimized out> priv = 0x9d0b570 error = 0x0 r = 0x9d236f0 #18 0xb72535ce in async_ready_close_callback_wrapper (source_object=0xb6304028, res=0x9d56870, user_data=0x9d0b560) at /build/buildd/glib2.0-2.31.8/./gio/giostream.c:435 stream = 0xb6304028 #19 0xb7263500 in g_simple_async_result_complete (simple=0x9d56870) at /build/buildd/glib2.0-2.31.8/./gio/gsimpleasyncresult.c:744 current_source = <optimized out> current_context = <optimized out> __PRETTY_FUNCTION__ = "g_simple_async_result_complete" #20 0xb7263573 in complete_in_idle_cb_for_thread (_data=0x9d54cc8) at /build/buildd/glib2.0-2.31.8/./gio/gsimpleasyncresult.c:812 data = 0x9d54cc8 simple = 0x9d56870 #21 0xb70c5fd0 in g_idle_dispatch (source=0x9e12e78, callback=0xb7263540 <complete_in_idle_cb_for_thread>, user_data=0x9d54cc8) at /build/buildd/glib2.0-2.31.8/./glib/gmain.c:4632 No locals. #22 0xb70c856a in g_main_dispatch (context=0x99074d0) at /build/buildd/glib2.0-2.31.8/./glib/gmain.c:2513 dispatch = 0xb70c5fb0 <g_idle_dispatch> was_in_call = 0 user_data = 0x9d54cc8 callback = 0xb7263540 <complete_in_idle_cb_for_thread> cb_funcs = 0xb71784d8 cb_data = 0x9e13a98 current_source_link = {data = 0x9e12e78, next = 0x0} need_destroy = <optimized out> source = 0x9e12e78 current = 0x9912d20 i = <optimized out> #23 g_main_context_dispatch (context=0x99074d0) at /build/buildd/glib2.0-2.31.8/./glib/gmain.c:3050 No locals. #24 0xb70c8975 in g_main_context_iterate (dispatch=1, block=-1223859456, context=0x99074d0, self=<optimized out>) at /build/buildd/glib2.0-2.31.8/./glib/gmain.c:3121 timeout = 0 some_ready = 1 fds = 0xb631fb08 max_priority = 0 nfds = <optimized out> allocated_nfds = <optimized out> #25 g_main_context_iterate (context=0x99074d0, block=-1223859456, dispatch=1, self=<optimized out>) at /build/buildd/glib2.0-2.31.8/./glib/gmain.c:3058 some_ready = 1 #26 0xb70c8dbb in g_main_loop_run (loop=0x990b5e8) at /build/buildd/glib2.0-2.31.8/./glib/gmain.c:3315 __PRETTY_FUNCTION__ = "g_main_loop_run" #27 0xb74d8920 in tp_run_connection_manager (prog_name=0x816592b "telepathy-gabble", version=0x817c313 "0.15.2", construct_cm=0x8071340 <construct_cm>, argc=1, argv=0xbfbc8494) at run.c:285 connection = 0x9904ad0 bus_daemon = 0x9908c58 error = 0x0 ret = 1 __PRETTY_FUNCTION__ = "tp_run_connection_manager" #28 0x080716b0 in gabble_main (argc=1, argv=0xbfbc8494) at gabble.c:179 loader = 0x9902490 out = <optimized out> fatal_mask = <optimized out> #29 0x08071280 in main (argc=1, argv=0xbfbc8494) at main.c:33 No locals.
Taking a look at this. The problem, in broad terms, is: #3 0xb70b8328 in g_hash_table_foreach (hash_table=0x993c808, func=0x8108e50 <disconnect_entry_foreach>, user_data=0x0) at disconnect_entry_foreach, in some situations, ultimately ends up calling g_hash_table_remove(), thereby modifying the table being iterated. I haven't figured out exactly what that situation is, yet.
Can't figure out how to reproduce it, sorry. This line in the backtrace: #15 0x08098972 in connection_force_close_cb (source=0x9d0b560, res=0x9d236f0, user_data=0x9910c10) at wocky-c2s-porter.c:1257 tells us that this was an unclean disconnection. My thinking was that we need a vcard cache entry with ->vcard_node, ->pipeline_item, and ->pending_requests to be NULL in order for the code in cache_entry_attempt_to_free() which modifies the hash table to fire, so I tried requesting a vCard, sending back an error of type='wait' to tell it to try again later, and then uncleanly disconnecting the connection in a variety of ways… but no dice. I did make the surprising discovery that if I change connect/stream-closed.py to send a spurious stanza right before the </stream:stream>: - # server closes its stream + # server tells us it hates us then closes the stream cleanly. + stream.send( + elem('message', from_='lol@localhost')( + elem('body')(u'piss off') + )) stream.sendFooter() then the test fails! Gabble never sends the corresponding </stream:stream>. The issue seems to be related to the state transitions of WockyXmppConnection at the end of a stream when it gets a blob of data containing both a stanza and the </stream:stream> — if you stick a q.expect('dbus-signal', signal='MessageReceived') before sendFooter(), the test passes. But I couldn't track it down further. :( So I am donating these bugs back to the public domain.
On the launchpad report one of the users says: https://bugs.launchpad.net/ubuntu/+source/telepathy-gabble/+bug/915015/comments/17 "i can reproduce this bug. all i need is just switch off my internet or set offline status."
This is still actual with the latest version of telepathy. No newer stacktrace is available(identification by apport on launchpad on stacktrace top).
still affecting in ubuntu 13.04 with telepathy gabble 0.15.2-0ubuntu1
-- GitLab Migration Automatic Message -- This bug has been migrated to freedesktop.org's GitLab instance and has been closed from further activity. You can subscribe and participate further through the new bug through this link to our GitLab instance: https://gitlab.freedesktop.org/telepathy/telepathy-gabble/issues/207.
Use of freedesktop.org services, including Bugzilla, is subject to our Code of Conduct. How we collect and use information is described in our Privacy Policy.