g_app_info_launch_default_for_uri_async is not really async
Submitted by Carlos Soriano
Link to original bug (#793831)
Description
The first call is launch_default_for_uri which is all sync. Specifically, g_file_query_default_handler blocks in case the file is in a ssh server that is down.
Most probably the best approach would be to make the whole g_app_info_launch_default_for_uri_async a GTask wrapper of g_app_info_launch_default_for_uri.
See nautilus#266 (closed) for the original report against Nautilus.
Here's the backtrace or where is blocking:
#0 0x00007ffff46213db in poll () at /lib64/libc.so.6
#1 0x00007ffff573fe99 in g_main_context_iterate.isra () at /lib64/libglib-2.0.so.0
#2 0x00007ffff5740232 in g_main_loop_run () at /lib64/libglib-2.0.so.0
#3 0x00007ffff5d1aec7 in g_dbus_connection_send_message_with_reply_sync () at /lib64/libgio-2.0.so.0
#4 0x00007ffff5d1b2bf in g_dbus_connection_call_sync_internal () at /lib64/libgio-2.0.so.0
#5 0x00007ffff5d272d3 in g_dbus_proxy_call_sync_internal () at /lib64/libgio-2.0.so.0
#6 0x00007ffff5d286b4 in g_dbus_proxy_call_sync () at /lib64/libgio-2.0.so.0
#7 0x00007fffe7a6a622 in gvfs_dbus_mount_call_query_info_sync () at /usr/lib64/gvfs/libgvfscommon.so
#8 0x00007fffe7c983f0 in g_daemon_file_query_info () at /usr/lib64/gio/modules/libgvfsdbus.so
#9 0x00007ffff5cad57e in g_file_query_default_handler () at /lib64/libgio-2.0.so.0
#10 0x00007ffff5c9479f in launch_default_for_uri () at /lib64/libgio-2.0.so.0
#11 0x00007ffff5c9497b in g_app_info_launch_default_for_uri_async () at /lib64/libgio-2.0.so.0
#12 0x0000000000481446 in on_window_handle_export (window=<optimized out>, handle_str=<optimized out>, user_data=<optimized out>)
at ../../../../jhbuild/checkout/nautilus/src/nautilus-program-choosing.c:594
#13 0x0000000000482089 in window_export_handle (callback=0x4813d0 <on_window_handle_export>, user_data=0x135eed0, window=0x1096450)
at ../../../../jhbuild/checkout/nautilus/src/nautilus-program-choosing.c:499
#14 0x0000000000482089 in nautilus_launch_default_for_uri_async (uri=<optimized out>, parent_window=0x1096450, cancellable=<optimized out>, callback=<optimized out>, callback_data=<optimized out>) at ../../../../jhbuild/checkout/nautilus/src/nautilus-program-choosing.c:652
#15 0x00000000004b3852 in activate_files (parameters=0x1015730) at ../../../../jhbuild/checkout/nautilus/src/nautilus-mime-actions.c:1875
#16 0x00000000004b3852 in activate_callback (files=<optimized out>, callback_data=0x1015730)
at ../../../../jhbuild/checkout/nautilus/src/nautilus-mime-actions.c:2029
#17 0x0000000000479812 in file_list_file_ready_callback (file=<optimized out>, user_data=0x1780df0)
at ../../../../jhbuild/checkout/nautilus/src/nautilus-file.c:9144
#18 0x00000000004d8ffb in call_ready_callbacks_at_idle (callback_data=<optimized out>)
at ../../../../jhbuild/checkout/nautilus/src/nautilus-directory-async.c:1985
#19 0x00007ffff573c577 in g_idle_dispatch () at /lib64/libglib-2.0.so.0
#20 0x00007ffff573fb77 in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
#21 0x00007ffff573ff20 in g_main_context_iterate.isra () at /lib64/libglib-2.0.so.0
#22 0x00007ffff573ffac in g_main_context_iteration () at /lib64/libglib-2.0.so.0
#23 0x00007ffff5cfccad in g_application_run () at /lib64/libgio-2.0.so.0
#24 0x0000000000440377 in main (argc=1, argv=0x7fffffffd788) at ../../../../jhbuild/checkout/nautilus/src/nautilus-main.c:84
Version: 2.55.x