Bug 45982

Summary: Crash when trying to rename a group
Product: Telepathy Reporter: Guillaume Desmottes <guillaume.desmottes>
Component: gabbleAssignee: Telepathy bugs list <telepathy-bugs>
Status: RESOLVED FIXED QA Contact: Telepathy bugs list <telepathy-bugs>
Severity: normal    
Priority: medium    
Version: unspecified   
Hardware: Other   
OS: All   
Whiteboard: r+
i915 platform: i915 features:
Attachments: log
make sure the result object stays alive while renaming groups
groups.py: factor out parse_roster_change_request()
groups.py: factor out send_roster_push()
groups.py: test RenameGroup()
make sure the result object stays alive while renaming groups

Description Guillaume Desmottes 2012-02-13 01:29:16 UTC
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>
Comment 1 Guillaume Desmottes 2012-02-13 04:27:57 UTC
So yeah, that's actually a tp-glib bug. Attaching a fix and a test in Gabble.
Comment 2 Guillaume Desmottes 2012-02-13 04:29:01 UTC
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.
Comment 3 Guillaume Desmottes 2012-02-13 04:30:04 UTC
Created attachment 56960 [details] [review]
groups.py: factor out parse_roster_change_request()
Comment 4 Guillaume Desmottes 2012-02-13 04:30:17 UTC
Created attachment 56961 [details] [review]
groups.py: factor out send_roster_push()
Comment 5 Guillaume Desmottes 2012-02-13 04:30:23 UTC
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.
Comment 6 Guillaume Desmottes 2012-02-13 04:42:39 UTC
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.
Comment 7 Simon McVittie 2012-02-13 05:02:57 UTC
Looks good to me
Comment 8 Guillaume Desmottes 2012-02-13 05:33:51 UTC
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.
Comment 9 Guillaume Desmottes 2012-02-23 02:04:22 UTC
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.