Sigh... I just had a segfault when moving from packet
to packet, highlighting protocol items. Normal usage.
The segfault occured from within gtk:
#0 0x4014a2ec in undraw_cursor (text=0x8183490, absolute=0) at gtktext.c:5170
#1 0x40144f24 in gtk_text_adjustment (adjustment=0x8183ce8, text=0x8183490) at gtktext.c:2306
#2 0x400fc071 in gtk_marshal_NONE__NONE (object=0x8183ce8, func=0x40144d10 <gtk_text_adjustment>,
func_data=0x8183490, args=0xbfffe81c) at gtkmarshal.c:312
#3 0x4012f0fc in gtk_handlers_run (handlers=0x81b0c60, signal=0xbfffe7c8, object=0x8183ce8,
params=0xbfffe81c, after=0) at gtksignal.c:1909
#4 0x4012e555 in gtk_signal_real_emit (object=0x8183ce8, signal_id=95, params=0xbfffe81c) at gtksignal.c:1469
#5 0x4012c956 in gtk_signal_emit_by_name (object=0x8183ce8, name=0x4018696b "value_changed")
at gtksignal.c:618
#6 0x40148da8 in scroll_int (text=0x8183490, diff=-13) at gtktext.c:4473
#7 0x40146dd6 in find_line_containing_point (text=0x8183490, point=0, scroll=1) at gtktext.c:3601
#8 0x401473ca in find_cursor (text=0x8183490, scroll=1) at gtktext.c:3781
#9 0x4014abbb in recompute_geometry (text=0x8183490) at gtktext.c:5442
#10 0x40141b39 in gtk_text_thaw (text=0x8183490) at gtktext.c:917
#11 0x80ddd39 in packet_hex_print (bv=0x8183490, pd=0x81566bc "\020@À", len=49, bstart=-1, blen=-1,
encoding=CHAR_ASCII) at proto_draw.c:141
#12 0x80d863d in tree_view_cb (w=0x81b94f8, data=0x0) at main.c:780
I'm using gtk+-1.2.6. The code in question is:
5165 {
5166 GdkFont* font;
5167
5168 g_assert(text->cursor_mark.property);
5169
5170 font = MARK_CURRENT_FONT(text, &text->cursor_mark);
5171
5172 draw_bg_rect (text, &text->cursor_mark,
5173 text->cursor_pos_x,
5174 text->cursor_pos_y - text->cursor_char_offset - font->ascent,
The macro MARK_CURRENT_FONT uses the MARK_CURRENT_PROPERTY macro to
provide a pointer. We have:
#define MARK_CURRENT_PROPERTY(mark) ((TextProperty*)(mark)->property->data)
#define MARK_CURRENT_FONT(text, mark) \
((MARK_CURRENT_PROPERTY(mark)->flags & PROPERTY_FONT) ? \
MARK_CURRENT_PROPERTY(mark)->font->gdk_font : \
GTK_WIDGET (text)->style->font)
and guess what?
(gdb) print text->cursor_mark->property->data
$1 = 0x0
I'll spend a wee bit of time to see if I can't see why data is 0.
So far, I have been unable to reproduce the crash.
--gilbert