segfaulting xfce4-panel

Oliver Lehmann oliver at FreeBSD.org
Sun Feb 17 11:48:11 CET 2008


Hi,

recently I've updated my FreeBSD desktop from FreeBSD 6 to FreeBSD 7
which is about to being released in the near future.

I encountered an error with xfce4-panel on amd64 only. When trying the same
on i386 it works. When trying to move an icon around within the panel the
panel segfaults:

DBG[panel-properties.c:380] _set_struts(): all struts are checked and updated
DBG[panel-properties.c:473] panel_resize_function(): old: 1280x50       new: 1280x50
DBG[panel-properties.c:351] _set_struts(): 
Struts
0       0       50      0
0       0       0       0
1280    2559    0       0

DBG[panel-properties.c:380] _set_struts(): all struts are checked and updated
DBG[panel-dnd.c:124] panel_dnd_set_widget_data():  + set pointer: 83747792
DBG[panel.c:446] _panel_drag_data_received():  + drag data received: 1
DBG[panel-dnd.c:93] panel_dnd_get_plugin_from_data():  + get pointer: 83747792
Segmentation fault (core dumped)
Exit 139


It looks like the returned value is somewhat broken in panel-dnd.c:

GtkWidget *
panel_dnd_get_plugin_from_data (GtkSelectionData *data)
{
    glong *n;
 
    n = (glong *)data->data;
    DBG (" + get pointer: %ld", *n);

    return GTK_WIDGET (GINT_TO_POINTER (*n));
}


Adding debug output around the call of that function in panel.c shows
that the function gets called, but after that nothing gets executed in
panel.c so I guess the function is the cause.

Ideas how to fix this...?

here comes some gdb output:

(gdb) 
#0  0x0000000802ffaffc in g_type_check_instance_cast () from /usr/local/lib/libgobject-2.0.so.0
#1  0x000000000040f468 in panel_dnd_get_plugin_from_data (data=0x7fffffffdd60) at panel-dnd.c:95
#2  0x0000000000418f2e in _panel_drag_data_received (widget=0x8055060c0, context=0x8055964e0, x=135, y=16, data=0x7fffffffdd60, info=1, time=654247801, panel=0x804fa4350)
    at panel.c:470
#3  0x0000000800d326ed in gtk_marshal_BOOLEAN__VOID () from /usr/local/lib/libgtk-x11-2.0.so.0
#4  0x0000000802fde52e in g_closure_invoke () from /usr/local/lib/libgobject-2.0.so.0
#5  0x0000000802ff225a in g_signal_handler_disconnect () from /usr/local/lib/libgobject-2.0.so.0
#6  0x0000000802ff3c90 in g_signal_emit_valist () from /usr/local/lib/libgobject-2.0.so.0
#7  0x0000000802ff3f8f in g_signal_emit_by_name () from /usr/local/lib/libgobject-2.0.so.0
#8  0x0000000800e56a1b in gtk_drag_finish () from /usr/local/lib/libgtk-x11-2.0.so.0
#9  0x0000000802fde52e in g_closure_invoke () from /usr/local/lib/libgobject-2.0.so.0
#10 0x0000000802ff225a in g_signal_handler_disconnect () from /usr/local/lib/libgobject-2.0.so.0
#11 0x0000000802ff3c90 in g_signal_emit_valist () from /usr/local/lib/libgobject-2.0.so.0
#12 0x0000000802ff3f8f in g_signal_emit_by_name () from /usr/local/lib/libgobject-2.0.so.0
#13 0x0000000800d8ba95 in gtk_target_list_unref () from /usr/local/lib/libgtk-x11-2.0.so.0
#14 0x0000000800d8da2c in gtk_selection_convert () from /usr/local/lib/libgtk-x11-2.0.so.0
#15 0x0000000000418faf in _panel_drag_drop (widget=0x8055060c0, context=0x8055964e0, x=135, y=16, time=654247801, panel=0x804fa4350) at panel.c:531
#16 0x0000000800d34d5c in gtk_marshal_BOOLEAN__VOID () from /usr/local/lib/libgtk-x11-2.0.so.0
#17 0x0000000802fde52e in g_closure_invoke () from /usr/local/lib/libgobject-2.0.so.0
#18 0x0000000802ff225a in g_signal_handler_disconnect () from /usr/local/lib/libgobject-2.0.so.0
#19 0x0000000802ff39c6 in g_signal_emit_valist () from /usr/local/lib/libgobject-2.0.so.0
#20 0x0000000802ff3f8f in g_signal_emit_by_name () from /usr/local/lib/libgobject-2.0.so.0
#21 0x0000000800e564d7 in gtk_drag_finish () from /usr/local/lib/libgtk-x11-2.0.so.0
#22 0x0000000800e5517b in gtk_drag_unhighlight () from /usr/local/lib/libgtk-x11-2.0.so.0
#23 0x0000000800e551b7 in gtk_drag_unhighlight () from /usr/local/lib/libgtk-x11-2.0.so.0
#24 0x0000000800e56795 in gtk_drag_finish () from /usr/local/lib/libgtk-x11-2.0.so.0
#25 0x0000000800d2f8fd in gtk_main_do_event () from /usr/local/lib/libgtk-x11-2.0.so.0
#26 0x00000008011de66c in gdk_add_client_message_filter () from /usr/local/lib/libgdk-x11-2.0.so.0
#27 0x0000000803245943 in g_main_context_dispatch () from /usr/local/lib/libglib-2.0.so.0
#28 0x0000000803248bed in g_main_context_check () from /usr/local/lib/libglib-2.0.so.0
#29 0x0000000803248eb9 in g_main_loop_run () from /usr/local/lib/libglib-2.0.so.0
#30 0x0000000800d2fb52 in gtk_main () from /usr/local/lib/libgtk-x11-2.0.so.0
#31 0x000000000040d134 in panel_app_run (argc=1, argv=0x7fffffffea88) at panel-app.c:735
#32 0x000000000040c057 in main (argc=1, argv=0x7fffffffea88) at main.c:167
(gdb) up 1
#1  0x000000000040f468 in panel_dnd_get_plugin_from_data (data=0x7fffffffdd60) at panel-dnd.c:95
95          return GTK_WIDGET (GINT_TO_POINTER (*n));
(gdb) print *n
$1 = 83776464
(gdb) 


-- 
 Oliver Lehmann
  http://www.pofo.de/
  http://wishlist.ans-netz.de/



More information about the Xfce4-dev mailing list