https://bugs.kde.org/show_bug.cgi?id=338012
Matt Whitlock changed:
What|Removed |Added
CC||k...@mattwhitlock.name
--- Comment #6 from Matt Whitlock ---
I have been experiencing this crash for years and am still seeing it in
Oxygen-Gtk2 1.4.6. Here is some more information.
#6
#7 0x7f724774a012 in IA__gtk_tree_view_get_background_area
(tree_view=tree_view@entry=0x7f72b9630b50, path=0x7f72b8a2cdb0,
column=0x7f72b92b5840, rect=rect@entry=0x7f72be2345b0) at
../../gtk+-2.24.31/gtk/gtktreeview.c:13035
#8 0x7f7247434af5 in Oxygen::Gtk::CellInfo::backgroundRect
(this=this@entry=0x7f72b9771320,
treeView=treeView@entry=0x7f72b9630b50) at
../../oxygen-gtk2-1.4.6/src/oxygengtkcellinfo.cpp:206
#9 0x7f7247425fbd in Oxygen::TreeViewStateData::dirtyRect
(this=this@entry=0x7f72b9771278)
at ../../oxygen-gtk2-1.4.6/src/animations/oxygentreeviewstatedata.cpp:129
#10 0x7f7247426130 in Oxygen::TreeViewStateData::delayedUpdate
(pointer=0x7f72b9771278)
at ../../oxygen-gtk2-1.4.6/src/animations/oxygentreeviewstatedata.cpp:176
#11 0x7f7247425c89 in Oxygen::TreeViewStateData::updateState
(this=this@entry=0x7f72b9771278, info=..., state=)
at ../../oxygen-gtk2-1.4.6/src/animations/oxygentreeviewstatedata.cpp:91
#12 0x7f7247403f0e in Oxygen::TreeViewStateEngine::get
(this=0x7f72b83329d0, widget=, info=..., options=...)
at ../../oxygen-gtk2-1.4.6/src/animations/oxygentreeviewstateengine.h:92
#13 0x7f72474ad850 in Oxygen::draw_expander (style=,
window=0x7f72b9d9ba20, state=,
clipRect=0x7f72be234840, widget=0x7f72b9630b50, detail=0x7f72477e0ba6
"treeview", x=6, y=10,
expanderStyle=GTK_EXPANDER_COLLAPSED) at
../../oxygen-gtk2-1.4.6/src/oxygenstylewrapper.cpp:2738
#14 0x7f724773d6fa in gtk_tree_view_draw_arrow
(tree_view=tree_view@entry=0x7f72b9630b50, tree=tree@entry=0x7f72b904d7d0,
node=node@entry=0x7f72b9335120, x=x@entry=0, y=y@entry=7) at
../../gtk+-2.24.31/gtk/gtktreeview.c:9576
#15 0x7f7247743ba0 in do_prelight
(tree_view=tree_view@entry=0x7f72b9630b50, tree=0x7f72b904d7d0,
node=0x7f72b9335120, x=0,
y=7) at ../../gtk+-2.24.31/gtk/gtktreeview.c:3270
#16 0x7f724774b134 in prelight_or_select
(tree_view=tree_view@entry=0x7f72b9630b50, tree=,
node=, x=, y=) at
../../gtk+-2.24.31/gtk/gtktreeview.c:3320
#17 0x7f724774da25 in gtk_tree_view_enter_notify
(widget=widget@entry=0x7f72b9630b50, event=0x7f72b8f0bca0)
at ../../gtk+-2.24.31/gtk/gtktreeview.c:5620
(gdb) frame 9
#9 0x7f7247425fbd in Oxygen::TreeViewStateData::dirtyRect
(this=this@entry=0x7f72b9771278)
at ../../oxygen-gtk2-1.4.6/src/animations/oxygentreeviewstatedata.cpp:129
129 const GdkRectangle previousRect(
_previous._info.backgroundRect( treeView ) );
(gdb) frame 8
#8 0x7f7247434af5 in Oxygen::Gtk::CellInfo::backgroundRect
(this=this@entry=0x7f72b9771320,
treeView=treeView@entry=0x7f72b9630b50) at
../../oxygen-gtk2-1.4.6/src/oxygengtkcellinfo.cpp:206
206 { gtk_tree_view_get_background_area( treeView, _path, _column,
); }
(gdb) frame 7
#7 0x7f724774a012 in IA__gtk_tree_view_get_background_area
(tree_view=tree_view@entry=0x7f72b9630b50, path=0x7f72b8a2cdb0,
column=0x7f72b92b5840, rect=rect@entry=0x7f72be2345b0) at
../../gtk+-2.24.31/gtk/gtktreeview.c:13035
13035 g_return_if_fail (column == NULL || GTK_IS_TREE_VIEW_COLUMN
(column));
(gdb) print *column
$1 = {parent = {parent_instance = {g_type_instance = {g_class =
0x3f003f00}, ref_count = 0, qdata = 0xa}, flags = 0},
tree_view = 0x0, button = 0x0, child = 0x7f72b8ac0180, arrow = 0x1, alignment
= 0x7f72b8f0da30, window = 0x310fe0,
editable_widget = 0xe00, xalign = 0, property_changed_signal = 0, spacing =
-1185748944,
column_type = (GTK_TREE_VIEW_COLUMN_FIXED | unknown: 32624), requested_width
= 28, button_request = 25, resized_width = 96,
width = 0, fixed_width = 28, min_width = 25, max_width = -1184045376, drag_x
= 32626, drag_y = -1180018624, title = 0x0,
cell_list = 0x0, sort_clicked_signal = 3093474752, sort_column_changed_signal
= 32626, sort_column_id = -1188131744,
sort_order = (unknown: 32626), visible = 0, resizable = 0, clickable = 0,
dirty = 0, show_sort_indicator = 0,
maybe_reordered = 0, reorderable = 0, use_resized_width = 0, expand = 0}
As you can see, Oxygen-Gtk is attempting to check that the
Oxygen::Gtk::CellInfo::_column data member points to a valid GtkTreeViewColumn,
but the referent of the pointer has already been freed, leaving a garbage
address in g_class, which causes the G_TYPE_CHECK_INSTANCE_TYPE in
GTK_IS_TREE_VIEW_COLUMN to segfault.
Probably Oxygen::Gtk::CellInfo should not be holding onto a pointer to a
GtkTreeViewColumn instance without incrementing its reference count.
--
You are receiving this mail