https://bugzilla.novell.com/show_bug.cgi?id=343447#c5
--- Comment #5 from Michael Meeks 2007-11-22 08:10:20 MST ---
Good news - I got another hang, and was annoyed enough to see if it was the
same thing: it was, this time I poked around at the emft's to see what was up
there:
#3 0xb60ee392 in emft_model_row_changed (model=0x808ad90, path=0xb7c5688,
iter=0xb726280, emft=0xb4b9640) at em-folder-tree.c:1860
1860 while (gtk_tree_model_iter_parent (model, &parent_iter,
&child_iter)) {
(gdb) p *emft
$1 = {parent_object = {box = {container = {widget = {object = {parent_instance
= {g_type_instance = {g_class = 0xb}, ref_count = 0, qdata = 0x0},
flags = 0}, private_flags = 12703, state = 166 '¦', saved_state =
103 'g', name = 0x0, style = 0x0, requisition = {width = 0, height = 0},
allocation = {x = 0, y = 0, width = 0, height = 0}, window = 0x0,
parent = 0x0}, focus_child = 0x0, border_width = 0, need_resize = 0,
resize_mode = 0, reallocate_redraws = 0, has_focus_chain = 0}, children
= 0x0, spacing = 0, homogeneous = 0}}, priv = 0xb0595e8}
(gdb) p *emft->priv
$2 = {treeview = 0x2e626f72, model = 0x6c796174, select_uris = 0x6340726f,
select_uris_table = 0x616c6c6f, excluded = 1634889570,
excluded_func = 0x2e6f632e, excluded_data = 0x3006b75, do_multiselect = 1,
cursor_set = 0, save_state_id = 4475221, autoscroll_id = 3061240200,
autoexpand_id = 174393296, autoexpand_row = 0x11, loading_row_id = 5653842,
loaded_row_id = 3061240184, drag_row = 0x10}
looks ok - but the next frame up:
#10 0xb60ee35c in emft_model_row_changed (model=0x808ad90, path=0xabe3508,
iter=0xb1fb5480, emft=0xaaa1ae0) at em-folder-tree.c:1864
1864 gtk_tree_model_row_changed (model, parent_path,
&parent_iter);
(gdb) p *emft
$3 = {parent_object = {box = {container = {widget = {object = {parent_instance
= {g_type_instance = {g_class = 0xb}, ref_count = 0, qdata = 0x0},
flags = 0}, private_flags = 46808, state = 94 '^', saved_state =
103 'g', name = 0x0, style = 0x0, requisition = {width = 0, height = 0},
allocation = {x = 0, y = 0, width = 0, height = 0}, window = 0x0,
parent = 0x0}, focus_child = 0x0, border_width = 0, need_resize = 0,
resize_mode = 0, reallocate_redraws = 0, has_focus_chain = 0}, children
= 0x0, spacing = 0, homogeneous = 0}}, priv = 0xa686438}
(gdb) p *emft->priv
$4 = {treeview = 0x0, model = 0x3, select_uris = 0xb6dfaa00, select_uris_table
= 0x0, excluded = 0, excluded_func = 0x80e8830, excluded_data = 0x0,
do_multiselect = 0, cursor_set = 0, save_state_id = 135205720, autoscroll_id
= 0, autoexpand_id = 166431672, autoexpand_row = 0x0, loading_row_id = 0,
loaded_row_id = 0, drag_row = 0x0}
Looks badly duff - a 'model' of 0x3 ;-) - anyhow I guess the good news is we're
not leaking: just not using the emft - except as a random number:
#17 0xb60ee35c in emft_model_row_changed (model=0x808ad90, path=0xab39f18,
iter=0xb0955c60, emft=0xb13b458) at em-folder-tree.c:1864
1864 gtk_tree_model_row_changed (model, parent_path,
&parent_iter);
(gdb) p *emft
$5 = {parent_object = {box = {container = {widget = {object = {parent_instance
= {g_type_instance = {g_class = 0xb}, ref_count = 0, qdata = 0x0},
flags = 0}, private_flags = 35135, state = 96 '`', saved_state =
103 'g', name = 0x0, style = 0x0, requisition = {width = 0, height = 0},
allocation = {x = 0, y = 0, width = 0, height = 0}, window = 0x0,
parent = 0x0}, focus_child = 0x0, border_width = 0, need_resize = 0,
resize_mode = 0, reallocate_redraws = 0, has_focus_chain = 0}, children
= 0x0, spacing = 0, homogeneous = 0}}, priv = 0x98f7e18}
(gdb) p *emft->priv
$6 = {treeview = 0x0, model = 0x3, select_uris = 0xb6dfaa00, select_uris_table
= 0x0, excluded = 0, excluded_func = 0x810cb58, excluded_data = 0x0,
do_multiselect = 0, cursor_set = 0, save_state_id = 135205720, autoscroll_id
= 0, autoexpand_id = 191355872, autoexpand_row = 0x0, loading_row_id = 0,
loaded_row_id = 0, drag_row = 0x0}
just the same.
I append this patch fragment as an *example* of how not to do it - this should
fix the proximate cause: but the underlying bug is structural - why !? is this
change notification in the view, and not in the model ? :-)
--- em-folder-tree.c
+++ em-folder-tree.c
@@ -481,6 +481,10 @@
priv->autoexpand_id = 0;
}
+ g_signal_handlers_disconnect_by_func
+ (priv->model, "row-changed",
+ G_CALLBACK (emft_model_row_changed), emft);
+
priv->treeview = NULL;
priv->model = NULL;
Fixing it more pleasantly should be easy, but if it's beyond doing - then I'd
really like a usable mail-client soon, even if it has to be done like the above
;-)
--
Configure bugmail: https://bugzilla.novell.com/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are on the CC list for the bug.