CRITICAL: invalid cast from 'GtkDragIcon' to 'GtkWindow'
Open gnome-control-center, visit the Keyboard panel, and configure at least two input sources. Then, try to rearrange the input sources by dragging. There will be many criticals:
GLib-GObject[94814]:CRITICAL: invalid cast from 'GtkDragIcon' to 'GtkWindow'
Backtrace taken using gnome-control-center and GTK built from git main branch:
#0 _g_log_abort (breakpoint=1) at ../../../../Projects/gnome-control-center/shell/cc-log.c:72
#1 0x0000000000457d5a in cc_log_write (log_level=10, log_domain=0x7f669c5c144a "GLib-GObject",
log_message=0x25eb550 "invalid cast from 'GtkDragIcon' to 'GtkWindow'", fields=0x7ffeb5052c90, n_fields=4,
user_data=0x0) at ../../../../Projects/gnome-control-center/shell/cc-log.c:315
#2 0x0000000000457e8b in cc_log_handler (log_level=G_LOG_LEVEL_CRITICAL, fields=0x7ffeb5052c90, n_fields=4,
user_data=0x0) at ../../../../Projects/gnome-control-center/shell/cc-log.c:348
#3 0x00007f669c0ffd9c in g_log_structured_array (log_level=G_LOG_LEVEL_CRITICAL, fields=0x7ffeb5052c90, n_fields=4)
at ../../../../Projects/glib/glib/gmessages.c:1984
#4 0x00007f669c102bc8 in g_log_default_handler (log_domain=0x7f669c5c144a "GLib-GObject", log_level=10,
message=0x25eb550 "invalid cast from 'GtkDragIcon' to 'GtkWindow'", unused_data=0x0)
at ../../../../Projects/glib/glib/gmessages.c:3284
#5 0x00007f669c0ff125 in g_logv (log_domain=0x7f669c5c144a "GLib-GObject", log_level=G_LOG_LEVEL_CRITICAL,
format=0x7f669c5c2cc8 "invalid cast from '%s' to '%s'", args=0x7ffeb5053238)
at ../../../../Projects/glib/glib/gmessages.c:1392
#6 0x00007f669c0ff296 in g_log (log_domain=0x7f669c5c144a "GLib-GObject", log_level=G_LOG_LEVEL_CRITICAL,
format=0x7f669c5c2cc8 "invalid cast from '%s' to '%s'") at ../../../../Projects/glib/glib/gmessages.c:1461
#7 0x00007f669c5ac09e in g_type_check_instance_cast (type_instance=0x23cac00, iface_type=18012928)
at ../../../../Projects/glib/gobject/gtype.c:4224
#8 0x00007f669b6297ea in gtk_menu_button_unroot (widget=0x20dbcb0)
at ../../../../Projects/gtk/gtk/gtkmenubutton.c:1407
#9 0x00007f669b747dc2 in gtk_widget_unroot (widget=0x20dbcb0) at ../../../../Projects/gtk/gtk/gtkwidget.c:2502
#10 0x00007f669b75c801 in gtk_widget_forall (widget=0x239bf40, callback=0x7f669b747cdd <gtk_widget_unroot>,
user_data=0x0) at ../../../../Projects/gtk/gtk/gtkwidget.c:12273
#11 0x00007f669b744a5f in gtk_widget_real_unroot (widget=0x239bf40) at ../../../../Projects/gtk/gtk/gtkwidget.c:799
#12 0x00007f669b747dc2 in gtk_widget_unroot (widget=0x239bf40) at ../../../../Projects/gtk/gtk/gtkwidget.c:2502
#13 0x00007f669b75c801 in gtk_widget_forall (widget=0x2409e20, callback=0x7f669b747cdd <gtk_widget_unroot>,
user_data=0x0) at ../../../../Projects/gtk/gtk/gtkwidget.c:12273
#14 0x00007f669b744a5f in gtk_widget_real_unroot (widget=0x2409e20) at ../../../../Projects/gtk/gtk/gtkwidget.c:799
#15 0x00007f669b747dc2 in gtk_widget_unroot (widget=0x2409e20) at ../../../../Projects/gtk/gtk/gtkwidget.c:2502
#16 0x00007f669b75c801 in gtk_widget_forall (widget=0x23b0ee0, callback=0x7f669b747cdd <gtk_widget_unroot>,
user_data=0x0) at ../../../../Projects/gtk/gtk/gtkwidget.c:12273
#17 0x00007f669b744a5f in gtk_widget_real_unroot (widget=0x23b0ee0) at ../../../../Projects/gtk/gtk/gtkwidget.c:799
#18 0x00007f669b747dc2 in gtk_widget_unroot (widget=0x23b0ee0) at ../../../../Projects/gtk/gtk/gtkwidget.c:2502
#19 0x00007f669b75c801 in gtk_widget_forall (widget=0x240d850, callback=0x7f669b747cdd <gtk_widget_unroot>,
user_data=0x0) at ../../../../Projects/gtk/gtk/gtkwidget.c:12273
#20 0x00007f669b744a5f in gtk_widget_real_unroot (widget=0x240d850) at ../../../../Projects/gtk/gtk/gtkwidget.c:799
#21 0x00007f669b747dc2 in gtk_widget_unroot (widget=0x240d850) at ../../../../Projects/gtk/gtk/gtkwidget.c:2502
#22 0x00007f669b74813e in gtk_widget_unparent (widget=0x240d850) at ../../../../Projects/gtk/gtk/gtkwidget.c:2580
#23 0x00007f669b55d145 in gtk_drag_icon_dispose (object=0x23cac00) at ../../../../Projects/gtk/gtk/gtkdragicon.c:315
#24 0x00007f669c58d83d in g_object_unref (_object=0x23cac00) at ../../../../Projects/glib/gobject/gobject.c:3894
#25 0x00007f669c0c6cb7 in g_datalist_clear (datalist=0x239f4a0) at ../../../../Projects/glib/glib/gdataset.c:277
#26 0x00007f669c588146 in g_object_finalize (object=0x239f490) at ../../../../Projects/glib/gobject/gobject.c:1407
#27 0x00007f669ba20fa2 in gdk_drag_finalize (object=0x239f490) at ../../../../Projects/gtk/gdk/gdkdrag.c:364
#28 0x00007f669b9ab73b in gdk_wayland_drag_finalize (object=0x239f490)
at ../../../../Projects/gtk/gdk/wayland/gdkdrag-wayland.c:84
#29 0x00007f669c58d9c5 in g_object_unref (_object=0x239f490) at ../../../../Projects/glib/gobject/gobject.c:3941
#30 0x00007f669ba23f66 in gdk_drop_finalize (object=0x243a460) at ../../../../Projects/gtk/gdk/gdkdrop.c:304
#31 0x00007f669b9ac909 in gdk_wayland_drop_finalize (object=0x243a460)
at ../../../../Projects/gtk/gdk/wayland/gdkdrop-wayland.c:71
#32 0x00007f669c58d9c5 in g_object_unref (_object=0x243a460) at ../../../../Projects/glib/gobject/gobject.c:3941
#33 0x00007f669ba2b6fa in gdk_dnd_event_finalize (event=0x25074c0) at ../../../../Projects/gtk/gdk/gdkevents.c:3266
#34 0x00007f669ba26d98 in gdk_event_unref (event=0x25074c0) at ../../../../Projects/gtk/gdk/gdkevents.c:894
--Type <RET> for more, q to quit, c to continue without paging--c
#35 0x00007f669b9ad501 in gdk_event_source_dispatch (base=0x115f8f0, callback=0x0, data=0x0)
at ../../../../Projects/gtk/gdk/wayland/gdkeventsource.c:144
#36 0x00007f669c0f1f13 in g_main_dispatch (context=0x1132fe0) at ../../../../Projects/glib/glib/gmain.c:3476
#37 0x00007f669c0f2f8d in g_main_context_dispatch_unlocked (context=0x1132fe0)
at ../../../../Projects/glib/glib/gmain.c:4284
#38 0x00007f669c0f312c in g_main_context_iterate_unlocked (context=0x1132fe0, block=1, dispatch=1, self=0x1133160)
at ../../../../Projects/glib/glib/gmain.c:4349
#39 0x00007f669c0f31e4 in g_main_context_iteration (context=0x1132fe0, may_block=1)
at ../../../../Projects/glib/glib/gmain.c:4414
#40 0x00007f669c323038 in g_application_run (application=0x112ecf0, argc=1, argv=0x7ffeb5053f68)
at ../../../../Projects/glib/gio/gapplication.c:2577
#41 0x00000000004604bb in main (argc=1, argv=0x7ffeb5053f68)
at ../../../../Projects/gnome-control-center/shell/main.c:87
Problem is here in gtk_menu_button_unroot
:
if (button->primary)
{
GtkWidget *toplevel = GTK_WIDGET (gtk_widget_get_root (widget));
add_to_window (GTK_WINDOW (toplevel), button);
}
The code assumes that the toplevel is a GtkWindow, but it's really a GtkDragIcon. This assumption is made in other places too, and I don't know how to fix it.
Looks like this probably broke in a74420bc.