! Please note that this is a snapshot of our old Bugzilla server, which is read only since May 29, 2020. Please go to gitlab.xfce.org for our new server !
xfdesktop aborts with segfault in xfdesktop_icon_get_extents()
Status:
RESOLVED: FIXED
Product:
Xfdesktop
Component:
General

Comments

Description Friedmund Laßmann 2011-04-11 09:35:29 CEST
Every now and then my xfdesktop aborts. It will restart automatically but the icon positions are lost, which is annoying for me as I have a a bunch of minimized application icons on the screen with my own special positions, and after the restart they are not sorted any more but instead they are all in one row.

For each abort I get a line in /var/log/messages like this:
Apr  4 09:54:13 manxmaus kernel: [1036854.894215] xfdesktop[12202]: segfault at 35 ip 0000000000420588 sp 00007fffbe52fc80 error 4 in xfdesktop[400000+43000]
Apr  4 10:00:50 manxmaus kernel: [1037251.310987] xfdesktop[12249]: segfault at 35 ip 0000000000420588 sp 00007fff155faa40 error 4 in xfdesktop[400000+43000]
Apr  5 13:17:27 manxmaus kernel: [1135449.088074] xfdesktop[12350]: segfault at 35 ip 0000000000420588 sp 00007fff8fbc26d0 error 4 in xfdesktop[400000+43000]
Apr  5 13:21:04 manxmaus kernel: [1135665.997053] xfdesktop[20880]: segfault at 1c0000000054 ip 000000000041bb3e sp 00007fffa6caa6b0 error 4 in xfdesktop[400000+43000]
Apr  5 15:46:47 manxmaus kernel: [1144408.719297] xfdesktop[20887]: segfault at 35 ip 0000000000420588 sp 00007fff5f5c3600 error 4 in xfdesktop[400000+43000]
...

I've attached with gdb and got this message after the next abort:

Program received signal SIGSEGV, Segmentation fault.
0x000000000041bbee in xfdesktop_icon_get_extents (icon=0x240000000035, pixbuf_extents=0x0, 
    text_extents=0x0, total_extents=0x7fffa4ea6070) at xfdesktop-icon.c:170
170	    g_return_val_if_fail(XFDESKTOP_IS_ICON(icon), FALSE);
(gdb) bt
#0  0x000000000041bbee in xfdesktop_icon_get_extents (icon=0x240000000035, pixbuf_extents=0x0, 
    text_extents=0x0, total_extents=0x7fffa4ea6070) at xfdesktop-icon.c:170
#1  0x000000000041e488 in xfdesktop_icon_view_invalidate_icon (icon_view=0x6bf340, icon=0x240000000035, 
    recalc_extents=0) at xfdesktop-icon-view.c:2370
#2  0x0000000000420645 in xfdesktop_icon_view_focus_out (widget=<value optimized out>, 
    evt=<value optimized out>, user_data=<value optimized out>) at xfdesktop-icon-view.c:891
#3  0x00007fb189f4a278 in ?? () from /usr/lib64/libgtk-x11-2.0.so.0
#4  0x00007fb187696d3e in g_closure_invoke () from /lib64/libgobject-2.0.so.0
#5  0x00007fb1876a8367 in ?? () from /lib64/libgobject-2.0.so.0
#6  0x00007fb1876b1a45 in g_signal_emit_valist () from /lib64/libgobject-2.0.so.0
#7  0x00007fb1876b1e73 in g_signal_emit () from /lib64/libgobject-2.0.so.0
#8  0x00007fb18a0657bf in ?? () from /usr/lib64/libgtk-x11-2.0.so.0
#9  0x00007fb189f48a43 in gtk_main_do_event () from /usr/lib64/libgtk-x11-2.0.so.0
#10 0x00007fb189bb312c in ?? () from /usr/lib64/libgdk-x11-2.0.so.0
#11 0x00007fb186fcdbd3 in g_main_context_dispatch () from /lib64/libglib-2.0.so.0
#12 0x00007fb186fce3b0 in ?? () from /lib64/libglib-2.0.so.0
#13 0x00007fb186fcea35 in g_main_loop_run () from /lib64/libglib-2.0.so.0
#14 0x00007fb189f477e7 in gtk_main () from /usr/lib64/libgtk-x11-2.0.so.0
#15 0x00000000004143f5 in main (argc=1, argv=0x7fffa4ea6e48) at main.c:396

I've installed the xfdesktop source package but I am not familiar with these GTK macros so I have not idea what goes wrong.
My system is openSUSE 11.4 64bit with xfdesktop-4.8.1-21.1.x86_64 and libgtk-2_0-0-2.22.1-13.13.2.x86_64 and I have two monitors organized with TwinView (at least this is what the NVIDIA X Server Settings tell me) so that xfce thinks there is one display with 3200x1200 (the panel is only displayed on one of them, though). 

If there is anything else I could check, please let me know. Or if you have some patch or code change, I could test it.
Comment 1 Friedmund Laßmann 2011-04-13 15:30:45 CEST
today I got some more aborts, I've attached gdb again and got following stack, now a bit different:

Program received signal SIGSEGV, Segmentation fault.
xfdesktop_icon_view_focus_out (widget=<value optimized out>, evt=<value optimized out>, 
    user_data=<value optimized out>) at xfdesktop-icon-view.c:891
891	        xfdesktop_icon_view_invalidate_icon(icon_view, l->data, FALSE);
(gdb) bt
#0  xfdesktop_icon_view_focus_out (widget=<value optimized out>, evt=<value optimized out>, 
    user_data=<value optimized out>) at xfdesktop-icon-view.c:891
#1  0x00007f8bbb7ed278 in _gtk_marshal_BOOLEAN__BOXED (closure=0x70d6d0, return_value=0x7fff1dd665e0, 
    n_param_values=<value optimized out>, param_values=0x773870, invocation_hint=<value optimized out>, 
    marshal_data=<value optimized out>) at gtkmarshalers.c:86
#2  0x00007f8bb8f39d3e in g_closure_invoke () from /lib64/libgobject-2.0.so.0
#3  0x00007f8bb8f4b367 in ?? () from /lib64/libgobject-2.0.so.0
#4  0x00007f8bb8f54a45 in g_signal_emit_valist () from /lib64/libgobject-2.0.so.0
#5  0x00007f8bb8f54e73 in g_signal_emit () from /lib64/libgobject-2.0.so.0
#6  0x00007f8bbb9087bf in gtk_widget_event_internal (widget=0x6a9020, event=0x6c86e0)
    at gtkwidget.c:4977
#7  0x00007f8bbb7eba43 in IA__gtk_main_do_event (event=0x6c86e0) at gtkmain.c:1619
#8  0x00007f8bbb45612c in gdk_event_dispatch (source=<value optimized out>, 
    callback=<value optimized out>, user_data=<value optimized out>) at gdkevents-x11.c:2377
#9  0x00007f8bb8870bd3 in g_main_dispatch (context=0x685730) at gmain.c:2440
#10 g_main_context_dispatch (context=0x685730) at gmain.c:3013
#11 0x00007f8bb88713b0 in g_main_context_iterate (context=0x685730, block=1, dispatch=1, 
    self=<value optimized out>) at gmain.c:3091
#12 0x00007f8bb8871a35 in g_main_loop_run (loop=0x73d1b0) at gmain.c:3299
#13 0x00007f8bbb7ea7e7 in IA__gtk_main () at gtkmain.c:1237
#14 0x00000000004143f5 in main (argc=1, argv=0x7fff1dd671a8) at main.c:396
Comment 2 Friedmund Laßmann 2011-05-04 11:28:18 CEST
I just noticed that the .xsession-errors also contains some lines for each abort:

** (xfdesktop:16418): CRITICAL **: xfdesktop_icon_get_extents: assertion `XFDESKTOP_IS_ICON(icon)' failed

** (xfdesktop:16418): CRITICAL **: xfdesktop_icon_view_update_icon_extents: assertion `XFDESKTOP_IS_ICON_VIEW(icon_view) && XFDESKTOP_IS_ICON(icon) && pixbuf_extents && text_extents && total_extents' failed

** (xfdesktop:16418): WARNING **: Trying to invalidate icon, but can't recalculate extents

This is nasty because over time it will fill up the disk. I really hope this problem can be fixed (I do not want to switch to LXDE or some other environment, especially because I love the ability to have iconized windows on the desktop)
Comment 3 Friedmund Laßmann 2011-06-28 09:12:17 CEST
In the meantime I've upgraded to xfdesktop-4.8.2-23.1 and now I did not have any problems for more than a week now. Seems that the problem has been fixed ?!

Bug #7490

Reported by:
Friedmund Laßmann
Reported on: 2011-04-11
Last modified on: 2012-12-27

People

Assignee:
Brian J. Tarricone (not reading bugmail)
CC List:
2 users

Version

Attachments

Additional information