xdg-desktop-portal-gtk
xdg-desktop-portal-gtk copied to clipboard
Crash in FileChooserNative with FileFilter
Fedora 32, Wayland, xdg-desktop-portal-gtk-1.7.1-1.fc32.x86_64.
I have an application which uses GtkFileChooserNative to pick a file with a number of MIME types in a GtkFileFilter. Natively it works fine, but from a Flatpak application I frequently get crashes on opening the dialog or opening folders. Also MIME type filtering doesn't work at all when running from a Flatpak application.
Here are a few different backtraces I've got. thread apply all bt full for the first one.
#0 0x00007f631049a660 in g_type_check_instance_is_a (type_instance=type_instance@entry=0x558d8d7d2af0, iface_type=<optimized out>) at ../gobject/gtype.c:4016
#1 0x00007f6310b06361 in _gtk_file_system_model_set_filter (model=0x558d8d8a0560 [GtkFileSystemModel], filter=0x558d8d7d2af0) at gtkfilesystemmodel.c:2018
#2 0x00007f6310afd193 in set_list_model (error=0x0, impl=0x558d8d581c80 [GtkFileChooserWidget]) at gtkfilechooserwidget.c:5357
#3 update_current_folder_get_info_cb (cancellable=0x558d8d205f20 [GCancellable], info=<optimized out>, error=<optimized out>, user_data=0x558d8d33da10) at gtkfilechooserwidget.c:5735
#4 0x00007f6310b01f8f in query_info_callback (source_object=<optimized out>, result=<optimized out>, user_data=user_data@entry=0x558d8d9e06b0) at gtkfilesystem.c:417
#5 0x00007f6310575e5a in g_task_return_now (task=task@entry=0x558d8d83a190 [GTask]) at ../gio/gtask.c:1214
#6 0x00007f6310575e9d in complete_in_idle_cb (task=task@entry=0x558d8d83a190) at ../gio/gtask.c:1228
#7 0x00007f631038945b in g_idle_dispatch (source=source@entry=0x7f62e0000a00, callback=0x7f6310575e90 <complete_in_idle_cb>, user_data=0x558d8d83a190) at ../glib/gmain.c:5755
#8 0x00007f631038d78f in g_main_dispatch (context=0x558d8d09e120) at ../glib/gmain.c:3309
#9 g_main_context_dispatch (context=0x558d8d09e120) at ../glib/gmain.c:3974
#10 0x00007f631038db18 in g_main_context_iterate (context=0x558d8d09e120, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4047
#11 0x00007f631038de33 in g_main_loop_run (loop=0x558d8d12efc0) at ../glib/gmain.c:4241
#12 0x0000558d8c3a6f96 in main (argc=<optimized out>, argv=<optimized out>) at src/xdg-desktop-portal-gtk.c:289
#0 0x00007f5a43652660 in g_type_check_instance_is_a (type_instance=type_instance@entry=0x557d2d0d7b30, iface_type=<optimized out>) at ../gobject/gtype.c:4016
#1 0x00007f5a43cbe361 in _gtk_file_system_model_set_filter (model=0x557d2d14a0f0 [GtkFileSystemModel], filter=0x557d2d0d7b30) at gtkfilesystemmodel.c:2018
#2 0x00007f5a43cb5193 in set_list_model (error=0x0, impl=0x557d2d0d7700 [GtkFileChooserWidget]) at gtkfilechooserwidget.c:5357
#3 update_current_folder_get_info_cb (cancellable=0x557d2d107320 [GCancellable], info=<optimized out>, error=<optimized out>, user_data=0x557d2d2f81f0) at gtkfilechooserwidget.c:5735
#4 0x00007f5a43cb9f8f in query_info_callback (source_object=<optimized out>, result=<optimized out>, user_data=user_data@entry=0x557d2d047040) at gtkfilesystem.c:417
#5 0x00007f5a4372de5a in g_task_return_now (task=task@entry=0x557d2d027d80 [GTask]) at ../gio/gtask.c:1214
#6 0x00007f5a4372de9d in complete_in_idle_cb (task=task@entry=0x557d2d027d80) at ../gio/gtask.c:1228
#7 0x00007f5a4354145b in g_idle_dispatch (source=source@entry=0x7f5a04003570, callback=0x7f5a4372de90 <complete_in_idle_cb>, user_data=0x557d2d027d80) at ../glib/gmain.c:5755
#8 0x00007f5a4354578f in g_main_dispatch (context=0x557d2cb02a50) at ../glib/gmain.c:3309
#9 g_main_context_dispatch (context=0x557d2cb02a50) at ../glib/gmain.c:3974
#10 0x00007f5a43545b18 in g_main_context_iterate (context=0x557d2cb02a50, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4047
#11 0x00007f5a43545e33 in g_main_loop_run (loop=0x557d2cc59180) at ../glib/gmain.c:4241
#12 0x0000557d2b2c1f96 in main (argc=<optimized out>, argv=<optimized out>) at src/xdg-desktop-portal-gtk.c:289
#0 0x00007fa06c658354 in _gtk_file_system_model_set_filter (model=0x555c6af92480 [GtkFileSystemModel], filter=0x555c6b200890) at gtkfilesystemmodel.c:2018
#1 0x00007fa06c65072c in recent_setup_model (impl=0x555c6b117cb0 [GtkFileChooserWidget]) at gtkfilechooserwidget.c:7671
#2 recent_start_loading (impl=0x555c6b117cb0 [GtkFileChooserWidget]) at gtkfilechooserwidget.c:7818
#3 operation_mode_set_recent (impl=0x555c6b117cb0 [GtkFileChooserWidget]) at gtkfilechooserwidget.c:3215
#4 operation_mode_set (impl=0x555c6b117cb0 [GtkFileChooserWidget], mode=OPERATION_MODE_RECENT) at gtkfilechooserwidget.c:3270
#5 0x00007fa06c652469 in set_startup_mode (impl=0x555c6b117cb0 [GtkFileChooserWidget]) at gtkfilechooserwidget.c:4013
#6 gtk_file_chooser_widget_map (widget=0x555c6b117cb0 [GtkFileChooserWidget]) at gtkfilechooserwidget.c:4113
#7 0x00007fa06bfcba05 in _g_closure_invoke_va (closure=closure@entry=0x555c6a9c7e00, return_value=return_value@entry=0x0, instance=instance@entry=0x555c6b117cb0, args=args@entry=0x7ffc73768910, n_params=0, param_types=0x0) at ../gobject/gclosure.c:873
#8 0x00007fa06bfe46e9 in g_signal_emit_valist (instance=0x555c6b117cb0, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7ffc73768910) at ../gobject/gsignal.c:3407
#9 0x00007fa06bfe4c63 in g_signal_emit (instance=instance@entry=0x555c6b117cb0, signal_id=<optimized out>, detail=detail@entry=0) at ../gobject/gsignal.c:3554
#10 0x00007fa06c819148 in gtk_widget_map (widget=0x555c6b117cb0 [GtkFileChooserWidget]) at gtkwidget.c:5047
#11 0x00007fa06c592a60 in gtk_box_forall (container=<optimized out>, include_internals=<optimized out>, callback=0x7fa06c5dac20 <gtk_container_map_child>, callback_data=0x0) at gtkbox.c:2675
#12 0x00007fa06c5debb3 in gtk_container_map (widget=0x555c6af9caf0 [GtkBox]) at gtkcontainer.c:3696
#13 0x00007fa06bfcba05 in _g_closure_invoke_va (closure=closure@entry=0x555c6a9c7e00, return_value=return_value@entry=0x0, instance=instance@entry=0x555c6af9caf0, args=args@entry=0x7ffc73768c40, n_params=0, param_types=0x0) at ../gobject/gclosure.c:873
#14 0x00007fa06bfe46e9 in g_signal_emit_valist (instance=0x555c6af9caf0, signal_id=<optimized out>, detail=0, var_args=var_args@entry=0x7ffc73768c40) at ../gobject/gsignal.c:3407
#15 0x00007fa06bfe4c63 in g_signal_emit (instance=instance@entry=0x555c6af9caf0, signal_id=<optimized out>, detail=detail@entry=0) at ../gobject/gsignal.c:3554
#16 0x00007fa06c819148 in gtk_widget_map (widget=widget@entry=0x555c6af9caf0 [GtkBox]) at gtkwidget.c:5047
#17 0x00007fa06c82ffe8 in gtk_window_map (widget=0x555c6ad8e5c0 [GtkFileChooserDialog]) at gtkwindow.c:6280
#18 0x00007fa06c6187c2 in gtk_dialog_map (widget=0x555c6ad8e5c0 [GtkFileChooserDialog]) at gtkdialog.c:779
#22 0x00007fa06bfe4c63 in <emit signal ??? on instance 0x555c6ad8e5c0 [GtkFileChooserDialog]> (instance=instance@entry=0x555c6ad8e5c0, signal_id=<optimized out>, detail=detail@entry=0) at ../gobject/gsignal.c:3554
#19 0x00007fa06bfcb88a in g_closure_invoke (closure=closure@entry=0x555c6a9c7e00, return_value=return_value@entry=0x0, n_param_values=1, param_values=param_values@entry=0x7ffc73768f30, invocation_hint=invocation_hint@entry=0x7ffc73768eb0) at ../gobject/gclosure.c:810
#20 0x00007fa06bfde0ba in signal_emit_unlocked_R (node=node@entry=0x555c6a9ef0d0, detail=detail@entry=0, instance=instance@entry=0x555c6ad8e5c0, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffc73768f30) at ../gobject/gsignal.c:3672
#21 0x00007fa06bfe4af9 in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7ffc737690b0) at ../gobject/gsignal.c:3498
#23 0x00007fa06c819148 in gtk_widget_map (widget=widget@entry=0x555c6ad8e5c0 [GtkFileChooserDialog]) at gtkwidget.c:5047
#24 0x00007fa06c826686 in gtk_window_show (widget=0x555c6ad8e5c0 [GtkFileChooserDialog]) at gtkwindow.c:6185
#28 0x00007fa06bfe4c63 in <emit signal ??? on instance 0x555c6ad8e5c0 [GtkFileChooserDialog]> (instance=instance@entry=0x555c6ad8e5c0, signal_id=<optimized out>, detail=detail@entry=0) at ../gobject/gsignal.c:3554
#25 0x00007fa06bfcb88a in g_closure_invoke (closure=closure@entry=0x555c6a9c8020, return_value=return_value@entry=0x0, n_param_values=1, param_values=param_values@entry=0x7ffc73769360, invocation_hint=invocation_hint@entry=0x7ffc737692e0) at ../gobject/gclosure.c:810
#26 0x00007fa06bfde0ba in signal_emit_unlocked_R (node=node@entry=0x555c6a9d5420, detail=detail@entry=0, instance=instance@entry=0x555c6ad8e5c0, emission_return=emission_return@entry=0x0, instance_and_params=instance_and_params@entry=0x7ffc73769360) at ../gobject/gsignal.c:3672
#27 0x00007fa06bfe4af9 in g_signal_emit_valist (instance=<optimized out>, signal_id=<optimized out>, detail=<optimized out>, var_args=var_args@entry=0x7ffc737694e0) at ../gobject/gsignal.c:3498
#29 0x00007fa06c812766 in gtk_widget_show (widget=0x555c6ad8e5c0 [GtkFileChooserDialog]) at gtkwidget.c:4848
#30 0x0000555c69161a48 in handle_open (object=<optimized out>, invocation=0x555c6aea7190 [GDBusMethodInvocation], arg_handle=<optimized out>, arg_app_id=<optimized out>, arg_parent_window=<optimized out>, arg_title=<optimized out>, arg_options=0x555c6afde580) at src/filechooser.c:643
#31 0x00007fa06b211af0 in ffi_call_unix64 () at ../src/x86/unix64.S:76
#32 0x00007fa06b2112ab in ffi_call (cif=cif@entry=0x7ffc73769920, fn=fn@entry=0x555c691610b0 <handle_open>, rvalue=<optimized out>, avalue=avalue@entry=0x7ffc73769810) at ../src/x86/ffi64.c:525
#35 0x00007fa06bfde423 in <emit signal ??? on instance 0x555c6aa19640 [XdpImplFileChooserSkeleton]> (node=<optimized out>, detail=0, instance=0x555c6aa19640, emission_return=0x7ffc73769b50, instance_and_params=0x555c6ac3a010) at ../gobject/gsignal.c:3742
#33 0x00007fa06bfcc38d in g_cclosure_marshal_generic (closure=closure@entry=0x555c6aa73dd0, return_gvalue=return_gvalue@entry=0x7ffc73769ac0, n_param_values=n_param_values@entry=7, param_values=param_values@entry=0x555c6ac3a010, invocation_hint=invocation_hint@entry=0x7ffc73769aa0, marshal_data=marshal_data@entry=0x0) at ../gobject/gclosure.c:1500
#34 0x00007fa06bfcb88a in g_closure_invoke (closure=0x555c6aa73dd0, return_value=return_value@entry=0x7ffc73769ac0, n_param_values=7, param_values=param_values@entry=0x555c6ac3a010, invocation_hint=invocation_hint@entry=0x7ffc73769aa0) at ../gobject/gclosure.c:810
#36 0x0000555c6918264c in _xdp_impl_file_chooser_skeleton_handle_method_call (connection=<optimized out>, sender=<optimized out>, object_path=<optimized out>, interface_name=0x7fa0540a42b0 "org.freedesktop.impl.portal.FileChooser", method_name=0x7fa0540aebf0 "OpenFile", parameters=<optimized out>, invocation=0x555c6aea7190 [GDBusMethodInvocation], user_data=0x555c6aa19640) at src/xdg-desktop-portal-dbus.c:7362
#37 0x00007fa06c13cfe1 in g_dbus_interface_method_dispatch_helper (interface=<optimized out>, method_call_func=0x555c69182490 <_xdp_impl_file_chooser_skeleton_handle_method_call>, invocation=0x555c6aea7190 [GDBusMethodInvocation]) at ../gio/gdbusinterfaceskeleton.c:613
#38 0x00007fa06c122bd2 in call_in_idle_cb (user_data=user_data@entry=0x555c6aea7190) at ../gio/gdbusconnection.c:4888
#39 0x00007fa06bedb45b in g_idle_dispatch (source=source@entry=0x7fa054094410, callback=0x7fa06c122aa0 <call_in_idle_cb>, user_data=0x555c6aea7190) at ../glib/gmain.c:5755
#40 0x00007fa06bedf78f in g_main_dispatch (context=0x555c6a98e120) at ../glib/gmain.c:3309
#41 g_main_context_dispatch (context=0x555c6a98e120) at ../glib/gmain.c:3974
#42 0x00007fa06bedfb18 in g_main_context_iterate (context=0x555c6a98e120, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at ../glib/gmain.c:4047
#43 0x00007fa06bedfe33 in g_main_loop_run (loop=0x555c6aa7ff80) at ../glib/gmain.c:4241
#44 0x0000555c6915ff96 in main (argc=<optimized out>, argv=<optimized out>) at src/xdg-desktop-portal-gtk.c:289
Looks like a gtk crash without any specific portal involvment
@matthiasclasen: this is a portal issue. Refer https://github.com/flatpak/xdg-desktop-portal-gtk/pull/448