Created attachment 56948 [details] log Calling tp_connection_rename_group_async() makes Gabble crash. Could be a tp-glib bug, I didn't investigate yet. #0 0x00007ffff6c87e18 in g_logv (log_domain=0x7ffff770d326 "GLib-GIO", log_level=G_LOG_LEVEL_CRITICAL, format=0x7ffff6d0a3a0 "%s: assertion `%s' failed", args1=0x7fffffffe038) at gmessages.c:758 domain = 0x0 data = 0x0 depth = 1 log_func = 0x432c40 <log_handler> domain_fatal_mask = 5 masquerade_fatal = 0 test_level = 10 was_fatal = 0 was_recursion = 0 i = 3 #1 0x00007ffff6c87f0c in g_log (log_domain=0x7ffff770d326 "GLib-GIO", log_level=G_LOG_LEVEL_CRITICAL, format=0x7ffff6d0a3a0 "%s: assertion `%s' failed") at gmessages.c:792 args = {{gp_offset = 24, fp_offset = 48, overflow_arg_area = 0x7fffffffe110, reg_save_area = 0x7fffffffe050}} #2 0x00007ffff6c87f4d in g_return_if_fail_warning (log_domain=0x7ffff770d326 "GLib-GIO", pretty_function=0x7ffff770d760 "g_simple_async_result_get_op_res_gpointer", expression=0x7ffff770d350 "G_IS_SIMPLE_ASYNC_RESULT (simple)") at gmessages.c:801 No locals. #3 0x00007ffff76540b7 in g_simple_async_result_get_op_res_gpointer (simple=0xace700) at gsimpleasyncresult.c:542 __PRETTY_FUNCTION__ = "g_simple_async_result_get_op_res_gpointer" #4 0x00007ffff7a4a224 in emulate_rename_group_add_cb (source=<optimized out>, result=0x804d80, user_data=0xace700) at base-contact-list.c:4462 self = 0x7d3040 rename_result = 0xace700 error = 0x0 #5 0x00007ffff765493e in g_simple_async_result_complete (simple=0x804d80) at gsimpleasyncresult.c:744 current_source = 0xb2dae0 current_context = 0x79cdd0 __PRETTY_FUNCTION__ = "g_simple_async_result_complete" #6 0x00007ffff765498a in complete_in_idle_cb (data=0x804d80) at gsimpleasyncresult.c:756 simple = 0x804d80 #7 0x00007ffff6c809fd in g_idle_dispatch (source=0xb2dae0, callback=0x7ffff7654957 <complete_in_idle_cb>, user_data=0x804d80) at gmain.c:4629 No locals. #8 0x00007ffff6c7e2d3 in g_main_dispatch (context=0x79cdd0) at gmain.c:2510 dispatch = 0x7ffff6c809b1 <g_idle_dispatch> was_in_call = 0 user_data = 0x804d80 callback = 0x7ffff7654957 <complete_in_idle_cb> cb_funcs = 0x7ffff6f70b40 cb_data = 0xb2c230 need_destroy = 7975568 current_source_link = {data = 0xb2dae0, next = 0x0} source = 0xb2dae0 ---Type <return> to continue, or q <return> to quit--- current = 0x7ad220 i = 0 __PRETTY_FUNCTION__ = "g_main_dispatch" #9 0x00007ffff6c7ef94 in g_main_context_dispatch (context=0x79cdd0) at gmain.c:3047 No locals. #10 0x00007ffff6c7f177 in g_main_context_iterate (context=0x79cdd0, block=1, dispatch=1, self=0x796780) at gmain.c:3118 max_priority = 0 timeout = 0 some_ready = 1 nfds = 4 allocated_nfds = 6 fds = 0x80c200 #11 0x00007ffff6c7f5a0 in g_main_loop_run (loop=0x7a1050) at gmain.c:3312 self = 0x796780 __PRETTY_FUNCTION__ = "g_main_loop_run" #12 0x00007ffff7a8c07f in tp_run_connection_manager (prog_name=<optimized out>, version=<optimized out>, construct_cm=<optimized out>, argc=<optimized out>, argv=<optimized out>) at run.c:285 connection = 0x799f60 bus_daemon = 0x79f090 error = 0x0 ret = 1 __PRETTY_FUNCTION__ = "tp_run_connection_manager" #13 0x0000000000432f2a in gabble_main (argc=1, argv=0x7fffffffe4d8) at gabble.c:182 loader = 0x796690 out = <optimized out> fatal_mask = <optimized out> #14 0x000000351582169d in __libc_start_main (main=0x432b10 <main>, argc=1, ubp_av=0x7fffffffe4d8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffe4c8) at libc-start.c:226 result = <optimized out> unwind_buf = {cancel_jmp_buf = {{jmp_buf = {0, -1926054014880421663, 4401968, 140737488348368, 0, 0, 1926054013969000673, -1932216794003117855}, mask_was_saved = 0}}, priv = {pad = {0x0, 0x0, 0x5077f0, 0x7fffffffe4d8}, data = {prev = 0x0, cleanup = 0x0, canceltype = 5273584}}} not_first_call = <optimized out>
So yeah, that's actually a tp-glib bug. Attaching a fix and a test in Gabble.
Created attachment 56959 [details] [review] make sure the result object stays alive while renaming groups I started tracking this in Gabble so my unit test is living there.
Created attachment 56960 [details] [review] groups.py: factor out parse_roster_change_request()
Created attachment 56961 [details] [review] groups.py: factor out send_roster_push()
Created attachment 56962 [details] [review] groups.py: test RenameGroup() This has been started as a regression test for fdo#45982 which turned to be a tp-glib bug. So we shouldn't merge this commit to master until we depend on a fixed tp-glib.
Created attachment 56963 [details] [review] make sure the result object stays alive while renaming groups I started tracking this in Gabble so my unit test is living there.
Looks good to me
I merged the tp-glib patch to 0.16 and master. I'll merge the Gabble ones once we have a release on which Gabble depend.
Gabble now depends on a fixed version of tp-glib so I merged my test to master.
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.