heap-use-after-free when hiding and showing desktop icons
Issue Description
This crash bisects to commit 90a6ae3e.
Steps to Reproduce Issue
- Right-click on the desktop and select "Desktop Settings"
- Select the "Desktop Icons" tab
- Change the Icon type to "None"
- Change the Icon type to "File/launcher icons" to trigger a use-after-free
Expected Behavior
No memory errors
Additional Information
ERROR: AddressSanitizer: heap-use-after-free on address 0x7c790a66e2a0 at pc 0x7f4910c23082
READ of size 8 at 0x7c790a66e2a0 thread T0
#0 0x7f4910c23081 in gtk_container_remove gtk3/gtk/gtkcontainer.c:1902:3
#1 0x55a3d762c670 in xfce_desktop_put_to_layer xfdesktop/src/xfce-desktop.c:1505:13
#2 0x55a3d769d2f3 in init_for_x11 xfdesktop/src/xfdesktop-icon-view-holder.c:124:5
#3 0x55a3d769d2f3 in xfdesktop_icon_view_holder_new xfdesktop/src/xfdesktop-icon-view-holder.c:228:9
#4 0x55a3d76ba3e9 in create_icon_view xfdesktop/src/xfdesktop-file-icon-manager.c:1389:21
#5 0x55a3d76ba3e9 in xfdesktop_file_icon_manager_desktop_added xfdesktop/src/xfdesktop-file-icon-manager.c:1531:5
#6 0x55a3d76b8895 in xfdesktop_file_icon_manager_constructed xfdesktop/src/xfdesktop-file-icon-manager.c:521:9
#7 0x7f4911d27af1 in g_object_new_internal glib/gobject/gobject.c:2716:5
#8 0x7f4911d26c6f in g_object_new_valist glib/gobject/gobject.c:3004:16
#9 0x7f4911d2578b in g_object_new glib/gobject/gobject.c:2479:12
#10 0x55a3d76b760c in xfdesktop_file_icon_manager_new xfdesktop/src/xfdesktop-file-icon-manager.c:3711:12
#11 0x55a3d7637ce5 in xfdesktop_application_set_icon_style xfdesktop/src/xfdesktop-application.c:1514:38
#12 0x55a3d7635914 in xfdesktop_application_set_property xfdesktop/src/xfdesktop-application.c:341:13
[...snip...]
0x7c790a66e2a0 is located 288 bytes inside of 336-byte region [0x7c790a66e180,0x7c790a66e2d0)
freed by thread T0 here:
#0 0x7f4912d74a6d (/usr/lib/clang/21/lib/linux/libclang_rt.asan-x86_64.so+0x174a6d)
#1 0x7f491199deb8 in g_free_sized glib/glib/gmem.c:236:3
#2 0x7f4911d8ae52 in g_type_free_instance glib/gobject/gtype.c:1979:5
#3 0x7f4911d23cd1 in g_object_unref glib/gobject/gobject.c:4921:3
#4 0x7f4911d22b0e in g_object_run_dispose glib/gobject/gobject.c:1923:3
#5 0x7f4911110e47 in gtk_widget_destroy gtk3/gtk/gtkwidget.c:4787:5
#6 0x55a3d769ebd3 in xfdesktop_icon_view_holder_finalize xfdesktop/src/xfdesktop-icon-view-holder.c:66:5
#7 0x7f4911d23bfe in g_object_unref glib/gobject/gobject.c:4905:3
#8 0x55a3d76cfe73 in monitor_data_free xfdesktop/src/xfdesktop-file-icon-manager.c:170:5
#9 0x7f49119105b2 in g_hash_table_remove_all_nodes glib/glib/ghash.c:665:13
#10 0x7f49119111c1 in g_hash_table_remove_all glib/glib/ghash.c:1880:3
#11 0x7f4911911122 in g_hash_table_destroy glib/glib/ghash.c:1471:3
#12 0x55a3d76b9a6f in xfdesktop_file_icon_manager_dispose xfdesktop/src/xfdesktop-file-icon-manager.c:604:5
#13 0x7f4911d23760 in g_object_unref glib/gobject/gobject.c:4834:3
#14 0x55a3d7637a58 in xfdesktop_application_set_icon_style xfdesktop/src/xfdesktop-application.c:1495:5
#15 0x55a3d7635914 in xfdesktop_application_set_property xfdesktop/src/xfdesktop-application.c:341:13
[...snip...]
previously allocated by thread T0 here:
#0 0x7f4912d75d6d in calloc
#1 0x7f491199ddfa in g_malloc0 glib/glib/gmem.c:133:13
#2 0x7f4911d892e1 in g_type_create_instance glib/gobject/gtype.c:1882:17
#3 0x7f4911d27715 in g_object_new_internal glib/gobject/gobject.c:2666:24
#4 0x7f4911d257cb in g_object_new_with_properties glib/gobject/gobject.c:2828:14
#5 0x7f4911d257cb in g_object_new glib/gobject/gobject.c:2476:12
#6 0x7f4910d38f63 in gtk_fixed_new gtk3/gtk/gtkfixed.c:196:10
#7 0x55a3d769d26b in init_for_x11 xfdesktop/src/xfdesktop-icon-view-holder.c:121:25
#8 0x55a3d769d26b in xfdesktop_icon_view_holder_new xfdesktop/src/xfdesktop-icon-view-holder.c:228:9
#9 0x55a3d76ba3e9 in create_icon_view xfdesktop/src/xfdesktop-file-icon-manager.c:1389:21
#10 0x55a3d76ba3e9 in xfdesktop_file_icon_manager_desktop_added xfdesktop/src/xfdesktop-file-icon-manager.c:1531:5
#11 0x55a3d76b8895 in xfdesktop_file_icon_manager_constructed xfdesktop/src/xfdesktop-file-icon-manager.c:521:9
#12 0x7f4911d27af1 in g_object_new_internal glib/gobject/gobject.c:2716:5
#13 0x7f4911d26c6f in g_object_new_valist glib/gobject/gobject.c:3004:16
#14 0x7f4911d2578b in g_object_new glib/gobject/gobject.c:2479:12
#15 0x55a3d76b760c in xfdesktop_file_icon_manager_new xfdesktop/src/xfdesktop-file-icon-manager.c:3711:12
#16 0x55a3d7637ce5 in xfdesktop_application_set_icon_style xfdesktop/src/xfdesktop-application.c:1514:38
#17 0x55a3d7635914 in xfdesktop_application_set_property xfdesktop/src/xfdesktop-application.c:341:13
[...snip...]
Environment & Versions
- OS distribution and version: Arch Linux
- Overall Xfce version: 4.21
- xfdesktop version (git hash if not a release): efe24d8d
- thunar version (if issue related to file/launcher icons): cff7db0b0a
- Windowing system (X11/Wayland): X11
- Compositor and version (if Wayland): N/A
- GTK Theme: Adwaita
- Icon Theme: elementary
- UI Scale Factor: 1x