After an evaluation, GNOME has moved from Bugzilla to GitLab. Learn more about GitLab.
No new issues can be reported in GNOME Bugzilla anymore.
To report an issue in a GNOME project, go to GNOME GitLab.
Do not go to GNOME Gitlab for: Bluefish, Doxygen, GnuCash, GStreamer, java-gnome, LDTP, NetworkManager, Tomboy.
Bug 790894 - Do not connect to the session bus when trying GProxyResolverPortal io extension implementation if not under flatpak
Do not connect to the session bus when trying GProxyResolverPortal io extensi...
Status: RESOLVED FIXED
Product: glib
Classification: Platform
Component: gio
unspecified
Other Linux
: Normal normal
: ---
Assigned To: gtkdev
gtkdev
Depends on:
Blocks:
 
 
Reported: 2017-11-27 10:49 UTC by Carlos Garcia Campos
Modified: 2017-11-27 11:38 UTC
See Also:
GNOME target: ---
GNOME version: ---


Attachments
gproxyresolverportal: do not connect to session bus when not under flatpak (3.28 KB, patch)
2017-11-27 10:51 UTC, Carlos Garcia Campos
committed Details | Review

Description Carlos Garcia Campos 2017-11-27 10:49:16 UTC
I've seen crashes like this one in WebKitGTK+ bugs lately:

Thread 1 (Thread 0x7f1ef2ba3f00 (LWP 11083))

  • #0 _g_log_abort
    at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.52.1/glib/gmessages.c line 549
  • #1 g_logv
    at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.52.1/glib/gmessages.c line 1357
  • #2 g_log
    at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.52.1/glib/gmessages.c line 1398
  • #3 g_closure_invoke
    at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.52.1/gobject/gclosure.c line 804
  • #4 signal_emit_unlocked_R
    at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.52.1/gobject/gsignal.c line 3635
  • #5 g_signal_emit_valist
    at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.52.1/gobject/gsignal.c line 3391
  • #6 g_signal_emit
    at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.52.1/gobject/gsignal.c line 3447
  • #7 g_cancellable_cancel
    at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.52.1/gio/gcancellable.c line 508
  • #8 _g_dbus_worker_close
    at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.52.1/gio/gdbusprivate.c line 1689
  • #9 _g_dbus_worker_stop
    at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.52.1/gio/gdbusprivate.c line 1710
  • #10 g_dbus_connection_dispose
    at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.52.1/gio/gdbusconnection.c line 630
  • #11 g_object_unref
    at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.52.1/gobject/gobject.c line 3148
  • #12 g_dbus_proxy_finalize
    at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.52.1/gio/gdbusproxy.c line 228
  • #13 g_object_unref
    at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.52.1/gobject/gobject.c line 3185
  • #14 g_proxy_resolver_portal_finalize
    at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.52.1/gio/gproxyresolverportal.c line 168
  • #15 g_object_unref
    at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.52.1/gobject/gobject.c line 3185
  • #16 try_implementation
    at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.52.1/gio/giomodule.c line 787
  • #17 _g_io_module_get_default
    at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.52.1/gio/giomodule.c line 882
  • #18 soup_proxy_resolver_default_constructed
    at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/libsoup-2.57.1/libsoup/soup-proxy-resolver-default.c line 84
  • #19 g_object_new_internal
    at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.52.1/gobject/gobject.c line 1823
  • #20 g_object_newv
    at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.52.1/gobject/gobject.c line 1930
  • #21 g_object_new
    at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.52.1/gobject/gobject.c line 1623
  • #22 soup_session_add_feature_by_type
    at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/libsoup-2.57.1/libsoup/soup-session.c line 2718
  • #23 soup_session_set_property
    at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/libsoup-2.57.1/libsoup/soup-session.c line 757
  • #24 object_set_property
    at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.52.1/gobject/gobject.c line 1423
  • #25 g_object_set_valist
    at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.52.1/gobject/gobject.c line 2167
  • #26 g_object_set
    at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.52.1/gobject/gobject.c line 2277
  • #27 WebCore::SoupNetworkSession::SoupNetworkSession(PAL::SessionID, _SoupCookieJar*)
    from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
  • #28 WebCore::NetworkStorageSession::switchToNewTestingSession()
    from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
  • #29 WebKit::WebProcess::initializeWebProcess(WebKit::WebProcessCreationParameters&&)
    from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
  • #30 void IPC::handleMessage<Messages::WebProcess::InitializeWebProcess, WebKit::WebProcess, void
  • #31 WebKit::WebProcess::didReceiveWebProcessMessage(IPC::Connection&, IPC::Decoder&)
    from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
  • #32 IPC::Connection::dispatchMessage(std::unique_ptr<IPC::Decoder, std::default_delete<IPC::Decoder> >)
    from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
  • #33 IPC::Connection::dispatchOneMessage()
    from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
  • #34 WTF::RunLoop::performWork()
    from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libjavascriptcoregtk-4.0.so.18
  • #35 WTF::RunLoop::RunLoop()::{lambda(void*)#1}::_FUN(void*)
    from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libjavascriptcoregtk-4.0.so.18
  • #36 g_main_dispatch
    at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.52.1/glib/gmain.c line 3212
  • #37 g_main_context_dispatch
    at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.52.1/glib/gmain.c line 3865
  • #38 g_main_context_iterate
    at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.52.1/glib/gmain.c line 3938
  • #39 g_main_loop_run
    at /home/slave/webkitgtk/gtk-linux-64-release-tests/build/WebKitBuild/DependenciesGTK/Source/glib-2.52.1/glib/gmain.c line 4134
  • #40 WTF::RunLoop::run()
    from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libjavascriptcoregtk-4.0.so.18
  • #41 int WebKit::ChildProcessMain<WebKit::WebProcess, WebKit::WebProcessMain>(int, char**)
    from /home/slave/webkitgtk/gtk-linux-64-release/build/WebKitBuild/Release/lib/libwebkit2gtk-4.0.so.37
  • #42 __libc_start_main
    at ../csu/libc-start.c line 291
  • #43 _start

This happens at web process startup, when our soup session is created and SOUP_TYPE_PROXY_RESOLVER_DEFAULT is set. It doesn't always happen, and it's not easy to reproduce, so I think the problem is a race condition, maybe related to #674885.

I tried to debug it, but without being able to reproduce it, I couldn't figure out what the problem is. What I noticed is that we don't really need to connect to the session bus when we are not under flatpak, so we could at least stop doing so, which will not fix the actual bug, but will fix this crash for sure.
Comment 1 Carlos Garcia Campos 2017-11-27 10:50:30 UTC
Bugzilla suggested the crash might be a duplicate of bug #781601. I still think it's a good idea to not connect (synchronously) to the session bus when it's not needed.
Comment 2 Carlos Garcia Campos 2017-11-27 10:51:31 UTC
Created attachment 364488 [details] [review]
gproxyresolverportal: do not connect to session bus when not  under flatpak
Comment 3 Philip Withnall 2017-11-27 11:23:00 UTC
Review of attachment 364488 [details] [review]:

Sure.
Comment 4 Carlos Garcia Campos 2017-11-27 11:38:01 UTC
Comment on attachment 364488 [details] [review]
gproxyresolverportal: do not connect to session bus when not  under flatpak

Pushed https://git.gnome.org/browse/glib/commit/?id=7dcc09e58688ea4c538f77824268a35c9654f5e6