Opened 8 years ago

Last modified 8 years ago

#5028 new Bug

GTK client has completely locked up during network outage.

Reported by: pathetic_loser Owned by: jordan
Priority: Normal Milestone: None Set
Component: GTK+ Client Version: 2.61+
Severity: Major Keywords: GTK UI deadlock lockup network down
Cc:

Description

OS: ubuntu 12.04 64 bit.
Transmission: recent SVN (r13450)

Transmission became stuck when network got down so no packets would travel to/from outside world. It operated normally for some time. Then it hanged. Looks like if networking still continues to operate (I can still see SIGPIPEs arriving in debugger and some little in/out traffic). However UI is completely locked up and would not refresh/redraw. Transmission also uses 100% of CPU time.

Backtrace follows:

(gdb) bt full
#0  0x00007fcdf4164b17 in node_get_next (node=0xb7e9330) at /build/buildd/glib2.0-2.32.3/./glib/gsequence.c:1621
        n = 0xb7eb810
#1  0x00007fcdf416509b in g_sequence_foreach_range (begin=<optimized out>, end=0x27d5f30, func=0x7fcdf54fa900 <increase_offset_iter>, 
    user_data=0x0) at /build/buildd/glib2.0-2.32.3/./glib/gsequence.c:321
        next = <optimized out>
        seq = 0x211cfd0
        iter = 0xb7e9330
        __PRETTY_FUNCTION__ = "g_sequence_foreach_range"
#2  0x00007fcdf54fdb9d in gtk_tree_model_sort_insert_value (s_iter=0x7fff5e111600, s_path=0x12846070, level=0x1bb7890, 
    tree_model_sort=0x2066400) at /build/buildd/gtk+3.0-3.4.2/./gtk/gtktreemodelsort.c:2075
        priv = 0x2066420
        elt = 0x12847630
        data = {tree_model_sort = 0x2066400, sort_func = 0x7fcdf54ed040 <_gtk_tree_data_list_compare_func>, sort_data = 0x0, 
          parent_path = 0x12847ec0, parent_path_depth = 1, parent_path_indices = 0x7fff5e111860}
        offset = <optimized out>
#3  gtk_tree_model_sort_row_inserted (s_model=<optimized out>, s_path=0x12846070, s_iter=<optimized out>, data=0x2066400)
    at /build/buildd/gtk+3.0-3.4.2/./gtk/gtktreemodelsort.c:978
        tree_model_sort = 0x2066400
        priv = <optimized out>
        path = <optimized out>
        iter = {stamp = 16681120, user_data = 0x18caac0, user_data2 = 0x12846070, user_data3 = 0x7fcdf565079c}
        real_s_iter = {stamp = 152732558, user_data = 0x1aa8680, user_data2 = 0x128471c0, user_data3 = 0x128471c0}
        i = <optimized out>
        free_s_path = 0
        elt = <optimized out>
        level = 0x1bb7890
        parent_level = 0x1bb7890
        __PRETTY_FUNCTION__ = "gtk_tree_model_sort_row_inserted"
#4  0x00007fcdf4613ca2 in g_closure_invoke (closure=0x28e6470, return_value=0x0, n_param_values=3, param_values=0x7fff5e111830, 
    invocation_hint=<optimized out>) at /build/buildd/glib2.0-2.32.3/./gobject/gclosure.c:777
        marshal = 0x7fcdf54099c0 <_gtk_marshal_VOID__BOXED_BOXED>
        marshal_data = <optimized out>
        in_marshal = <optimized out>
        real_closure = 0x28e6450
        __PRETTY_FUNCTION__ = "g_closure_invoke"
#5  0x00007fcdf4624d71 in signal_emit_unlocked_R (node=<optimized out>, detail=0, instance=<optimized out>, emission_return=0x0, 
    instance_and_params=0x7fff5e111830) at /build/buildd/glib2.0-2.32.3/./gobject/gsignal.c:3547
        tmp = <optimized out>
        handler = 0x231d690
---Type <return> to continue, or q <return> to quit---
        accumulator = 0x0
        emission = {next = 0x7fff5e111e00, instance = 0x18caac0, ihint = {signal_id = 192, detail = 0, run_type = G_SIGNAL_RUN_FIRST}, 
          state = EMISSION_RUN, chain_type = 4}
        class_closure = 0x1095cc0
        hlist = 0x2270d78
        handler_list = 0x231d690
        return_accu = 0x0
        accu = {g_type = 0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, 
              v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, 
              v_double = 0, v_pointer = 0x0}}}
        signal_id = 192
        max_sequential_handler_number = 5425760
        return_value_altered = 1
#6  0x00007fcdf462d099 in g_signal_emit_valist (instance=0x18caac0, signal_id=<optimized out>, detail=0, var_args=<optimized out>)
    at /build/buildd/glib2.0-2.32.3/./gobject/gsignal.c:3296
        instance_and_params = 0x7fff5e111830
        signal_return_type = 4
        param_values = 0x7fff5e111848
        node = 0x10a2660
        i = <optimized out>
        n_params = 2
        __PRETTY_FUNCTION__ = "g_signal_emit_valist"
#7  0x00007fcdf462d242 in g_signal_emit (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>)
    at /build/buildd/glib2.0-2.32.3/./gobject/gsignal.c:3352
        var_args = {{gp_offset = 40, fp_offset = 48, overflow_arg_area = 0x7fff5e111b60, reg_save_area = 0x7fff5e111aa0}}
#8  0x00007fcdf54f95cd in gtk_tree_model_filter_emit_row_inserted_for_path (filter=0x18caac0, c_model=0x244b180, c_path=<optimized out>, 
    c_iter=0x1ef1440) at /build/buildd/gtk+3.0-3.4.2/./gtk/gtktreemodelfilter.c:1967
        level = 0x1aa8680
        elt = 0x128471c0
        path = 0x12846070
        iter = {stamp = 152732558, user_data = 0x1aa8680, user_data2 = 0x128471c0, user_data3 = 0x128471c0}
        children = {stamp = 32445504, user_data = 0x12847e10, user_data2 = 0x1aa8680, user_data3 = 0x7fcdf4165c44}
        signals_emitted = 0
#9  0x00007fcdf54fa053 in gtk_tree_model_filter_row_inserted (c_model=0x244b180, c_path=0x12847e10, c_iter=0x1ef1440, data=0x18caac0)
    at /build/buildd/gtk+3.0-3.4.2/./gtk/gtktreemodelfilter.c:2296
        filter = 0x18caac0
        real_path = 0x128463b0
        real_c_iter = {stamp = 731657793, user_data = 0x12848630, user_data2 = 0x4, user_data3 = 0x16944}
        elt = 0x0
---Type <return> to continue, or q <return> to quit---
        level = <optimized out>
        parent_level = 0x0
        siter = <optimized out>
        dummy = {iter = {stamp = 0, user_data = 0x0, user_data2 = 0x0, user_data3 = 0x0}, children = 0x0, offset = 0, ref_count = 0, 
          ext_ref_count = 0, zero_ref_count = 0, visible_siter = 0x7fcdf2de1c3e}
        i = 0
        offset = <optimized out>
        free_c_path = 0
        emit_row_inserted = <optimized out>
        __PRETTY_FUNCTION__ = "gtk_tree_model_filter_row_inserted"
#10 0x00007fcdf4613ca2 in g_closure_invoke (closure=0x1ba6e90, return_value=0x0, n_param_values=3, param_values=0x7fff5e111ec0, 
    invocation_hint=<optimized out>) at /build/buildd/glib2.0-2.32.3/./gobject/gclosure.c:777
        marshal = 0x7fcdf54099c0 <_gtk_marshal_VOID__BOXED_BOXED>
        marshal_data = <optimized out>
        in_marshal = <optimized out>
        real_closure = 0x1ba6e70
        __PRETTY_FUNCTION__ = "g_closure_invoke"
#11 0x00007fcdf4624d71 in signal_emit_unlocked_R (node=<optimized out>, detail=0, instance=<optimized out>, emission_return=0x0, 
    instance_and_params=0x7fff5e111ec0) at /build/buildd/glib2.0-2.32.3/./gobject/gsignal.c:3547
        tmp = <optimized out>
        handler = 0x231d560
        accumulator = 0x0
        emission = {next = 0x0, instance = 0x244b180, ihint = {signal_id = 192, detail = 0, run_type = G_SIGNAL_RUN_FIRST}, 
          state = EMISSION_RUN, chain_type = 4}
        class_closure = 0x1095cc0
        hlist = 0x1ded978
        handler_list = 0x231d560
        return_accu = 0x0
        accu = {g_type = 0, data = {{v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, 
              v_double = 0, v_pointer = 0x0}, {v_int = 0, v_uint = 0, v_long = 0, v_ulong = 0, v_int64 = 0, v_uint64 = 0, v_float = 0, 
              v_double = 0, v_pointer = 0x0}}}
        signal_id = 192
        max_sequential_handler_number = 5425760
        return_value_altered = 1
#12 0x00007fcdf462d099 in g_signal_emit_valist (instance=0x244b180, signal_id=<optimized out>, detail=0, var_args=<optimized out>)
    at /build/buildd/glib2.0-2.32.3/./gobject/gsignal.c:3296
        instance_and_params = 0x7fff5e111ec0
        signal_return_type = 4
        param_values = 0x7fff5e111ed8
---Type <return> to continue, or q <return> to quit---
        node = 0x10a2660
        i = <optimized out>
        n_params = 2
        __PRETTY_FUNCTION__ = "g_signal_emit_valist"
#13 0x00007fcdf462d242 in g_signal_emit (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>)
    at /build/buildd/glib2.0-2.32.3/./gobject/gsignal.c:3352
        var_args = {{gp_offset = 40, fp_offset = 48, overflow_arg_area = 0x7fff5e1121f0, reg_save_area = 0x7fff5e112130}}
#14 0x00007fcdf5402100 in gtk_list_store_insert_with_values (list_store=0x244b180, iter=0x7fff5e1121f0, position=<optimized out>)
    at /build/buildd/gtk+3.0-3.4.2/./gtk/gtkliststore.c:2253
        priv = <optimized out>
        path = 0x12847e10
        seq = 0x1b2b2f0
        ptr = <optimized out>
        tmp_iter = {stamp = 731657793, user_data = 0x12848630, user_data2 = 0x4, user_data3 = 0x16944}
        length = <optimized out>
        changed = 1
        maybe_need_sort = 1
        var_args = {{gp_offset = 48, fp_offset = 48, overflow_arg_area = 0x7fff5e112340, reg_save_area = 0x7fff5e112230}}
        __PRETTY_FUNCTION__ = "gtk_list_store_insert_with_values"
#15 0x000000000043885d in addMessages (store=0x244b180, head=0x7fcd8e57d5a0) at msgwin.c:375
        name = 0x7fcd8e7ff070 "ubuntu-12.04.1-server-amd64.iso"
        i = 0x7fcd8e782060
        sequence = 507816
        default_name = 0x108d320 "Transmission"
#16 0x0000000000438988 in onRefresh (gdata=0x1c04350) at msgwin.c:410
        tail = 0x41
        msgs = 0x7fcd8e57d5a0
        data = 0x1c04350
        pinned_to_new = 0
#17 0x00007fcdf50266af in gdk_threads_dispatch (data=<optimized out>) at /build/buildd/gtk+3.0-3.4.2/./gdk/gdk.c:763
        dispatch = 0x17c9300
        ret = 0
#18 0x00007fcdf414f91b in g_timeout_dispatch (source=0x2850460, callback=<optimized out>, user_data=<optimized out>)
    at /build/buildd/glib2.0-2.32.3/./glib/gmain.c:3882
        timeout_source = 0x2850460
        again = <optimized out>
#19 0x00007fcdf414ed53 in g_main_dispatch (context=0xff1e70) at /build/buildd/glib2.0-2.32.3/./glib/gmain.c:2539
        dispatch = 0x7fcdf414f900 <g_timeout_dispatch>
        was_in_call = 0
---Type <return> to continue, or q <return> to quit---
        user_data = 0x17c9300
        callback = 0x7fcdf5026680 <gdk_threads_dispatch>
        cb_funcs = 0x7fcdf43fa9a0
        cb_data = 0x1e8d8a0
        current_source_link = {data = 0x2850460, next = 0x0}
        need_destroy = <optimized out>
        source = 0x2850460
        current = 0x108fc20
        i = <optimized out>
#20 g_main_context_dispatch (context=0xff1e70) at /build/buildd/glib2.0-2.32.3/./glib/gmain.c:3075
No locals.
#21 0x00007fcdf414f0a0 in g_main_context_iterate (dispatch=1, block=<optimized out>, context=0xff1e70, self=<optimized out>)
    at /build/buildd/glib2.0-2.32.3/./glib/gmain.c:3146
        timeout = 0
        some_ready = 1
        fds = <optimized out>
        max_priority = 0
        nfds = 5
        allocated_nfds = <optimized out>
#22 g_main_context_iterate (context=0xff1e70, block=<optimized out>, dispatch=1, self=<optimized out>)
    at /build/buildd/glib2.0-2.32.3/./glib/gmain.c:3083
        some_ready = 1
#23 0x00007fcdf414f164 in g_main_context_iteration (context=0xff1e70, may_block=1) at /build/buildd/glib2.0-2.32.3/./glib/gmain.c:3207
        retval = <optimized out>
#24 0x00007fcdf48eac94 in g_application_run (application=0x1096080, argc=<optimized out>, argv=0x7fff5e112888)
    at /build/buildd/glib2.0-2.32.3/./gio/gapplication.c:1507
        arguments = 0x1094cf0
        status = 0
        i = <optimized out>
        __PRETTY_FUNCTION__ = "g_application_run"
#25 0x0000000000433779 in main (argc=1, argv=0x7fff5e112888) at main.c:657

Change History (1)

comment:1 Changed 8 years ago by jordan

Looks like the UI is going crazy trying to add a flood of log messages in the message window? Step 15 of this backtrace indicates that's where the program was when this snapshot was taken.

Note: See TracTickets for help on using tickets.