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 693320 - Deadlock on cancel of a stale https request
Deadlock on cancel of a stale https request
Status: RESOLVED DUPLICATE of bug 688751
Product: libsoup
Classification: Core
Component: HTTP Transport
2.40.x
Other Linux
: Normal normal
: ---
Assigned To: libsoup-maint@gnome.bugs
libsoup-maint@gnome.bugs
Depends on:
Blocks:
 
 
Reported: 2013-02-07 12:17 UTC by Milan Crha
Modified: 2016-07-12 15:44 UTC
See Also:
GNOME target: ---
GNOME version: ---



Description Milan Crha 2013-02-07 12:17:50 UTC
I got this deadlock when closing a "Find Calendars" dialog from a CalDAV calendar setup in evolution with an https:// address to a server which didn't respond on it. I'm not sure where this belongs, but let's start with libsoup, as it's the closest to the top of the main thread. Note the other threads were basically idle or unrelated to the server browsing.

Thread 1 (Thread 0x7ffe7ebdda00 (LWP 12851))

  • #0 poll
    from /lib64/libc.so.6
  • #1 claim_op
    from /usr/lib64/gio/modules/libgiognutls.so
  • #2 g_tls_connection_gnutls_close
    from /usr/lib64/gio/modules/libgiognutls.so
  • #3 g_io_stream_close
    at giostream.c line 414
  • #4 disconnect_internal
    at soup-socket.c line 116
  • #5 soup_socket_disconnect
    at soup-socket.c line 1226
  • #6 soup_connection_disconnect
    at soup-connection.c line 825
  • #7 soup_session_abort
    at soup-session.c line 1677
  • #8 context_cancel_message
    at e-caldav-chooser.c line 133
  • #9 _g_closure_invoke_va
    at gclosure.c line 840
  • #10 g_signal_emit_valist
    at gsignal.c line 3211
  • #11 g_signal_emit
    at gsignal.c line 3356
  • #12 g_cancellable_cancel
    at gcancellable.c line 507
  • #13 caldav_chooser_dialog_dispose
    at e-caldav-chooser-dialog.c line 237
  • #14 g_object_run_dispose
    at gobject.c line 1061
  • #15 cal_config_caldav_run_dialog
    at evolution-cal-config-caldav.c line 117
  • #16 _g_closure_invoke_va
    at gclosure.c line 840
  • #17 g_signal_emit_valist
    at gsignal.c line 3211
  • #18 g_signal_emit
    at gsignal.c line 3356
  • #19 gtk_real_button_released
    from /lib64/libgtk-3.so.0
  • #20 g_closure_invoke
    at gclosure.c line 777
  • #21 signal_emit_unlocked_R
    at gsignal.c line 3481
  • #22 g_signal_emit_valist
    at gsignal.c line 3300
  • #23 g_signal_emit
    at gsignal.c line 3356
  • #24 gtk_button_button_release
    from /lib64/libgtk-3.so.0
  • #25 _gtk_marshal_BOOLEAN__BOXEDv
    from /lib64/libgtk-3.so.0
  • #26 _g_closure_invoke_va
    at gclosure.c line 840
  • #27 g_signal_emit_valist
    at gsignal.c line 3211
  • #28 g_signal_emit
    at gsignal.c line 3356
  • #29 gtk_widget_event_internal
    from /lib64/libgtk-3.so.0
  • #30 propagate_event
    from /lib64/libgtk-3.so.0
  • #31 gtk_main_do_event
    from /lib64/libgtk-3.so.0
  • #32 gdk_event_source_dispatch
    from /lib64/libgdk-3.so.0
  • #33 g_main_dispatch
    at gmain.c line 2715
  • #34 g_main_context_dispatch
    at gmain.c line 3219
  • #35 g_main_context_iterate
    at gmain.c line 3290
  • #36 g_main_loop_run
    at gmain.c line 3484
  • #37 gtk_main
    from /lib64/libgtk-3.so.0
  • #38 main
    at main.c line 698

Comment 1 Milan Crha 2013-02-07 12:18:20 UTC
Oops, I forgot to add, I use libsoup 2.40.3
Comment 2 Dan Winship 2013-02-07 13:13:50 UTC
what glib-networking version?
Comment 3 Milan Crha 2013-02-08 07:26:26 UTC
$ rpm -q glib-networking
glib-networking-2.34.2-1.fc18.x86_64
Comment 4 Milan Crha 2013-02-08 07:35:16 UTC
Oh, and I realized the connection is not stale, it just takes awfully long to respond (like 20-30 seconds).

The offending address is:
https://owncloud-lostcase.rhcloud.com/remote.php/webdav/

I can give you my credentials for testing in private, if you want to test it. In Evolution, I just:
a) File->New->Calendar
b) select CalDAV calendar type
c) in the URL add the above
d) make the username set
e) click Find Calendars
f) provide password
g) when the password dialog disappears, which means it was accepted, then wait
   few seconds (3-5), then click Cancel. Application freezes.
Comment 5 Rich Coe 2014-11-20 19:03:31 UTC
While running liferea, I loaded the webpage from here:
https://www.backblaze.com/blog/hard-drive-reliability-update-september-2014/

I can scroll up and down within the webpage, but if I try and switch to the
next item, the application hangs in poll() called from g_tls_connection_gnutls_close().

gtk+ 2.42.0
libsoup 2.48.0


(gdb) where
  • #0 poll
    at ../sysdeps/unix/syscall-template.S line 81
  • #1 g_poll
    at /usr/include/bits/poll2.h line 46
  • #2 g_poll
    at gpoll.c line 124
  • #3 claim_op
    at gtlsconnection-gnutls.c line 603
  • #4 g_tls_connection_gnutls_close
    at gtlsconnection-gnutls.c line 1558
  • #5 g_io_stream_close
    at giostream.c line 399
  • #6 disconnect_internal
    at soup-socket.c line 184
  • #7 soup_socket_disconnect
    at soup-socket.c line 1499
  • #8 soup_connection_disconnect
    at soup-connection.c line 620
  • #9 soup_connection_set_state
    at soup-connection.c line 701
  • #10 soup_session_unqueue_item
    at soup-session.c line 1481
  • #11 soup_session_process_queue_item
    at soup-session.c line 1999
  • #12 soup_session_async_cancel_message
    at soup-session-async.c line 130
  • #13 soup_session_cancel_message
    at soup-session.c line 2414
  • #14 WebCore::ResourceLoader::cancel(WebCore::ResourceError const&)
  • #15 WebCore::ResourceLoader::cancel()
  • #16 WebCore::cancelAll(WTF::HashSet<WTF::RefPtr<WebCore::ResourceLoader>, WTF::PtrHash<WTF::RefPtr<WebCore::ResourceLoader> >, WTF::HashTraits<WTF::RefPtr<WebCore::ResourceLoader> > > const&)
  • #17 WebCore::DocumentLoader::stopLoading()
  • #18 WebCore::FrameLoader::stopAllLoaders(WebCore::ClearProvisionalItemPolicy)
  • #19 WebCore::FrameLoader::continueLoadAfterNavigationPolicy(WebCore::ResourceRequest const&, WTF::PassRefPtr<WebCore::FormState>, bool)
  • #20 std::_Function_handler<void
  • #21 std::function<void
  • #22 WebCore::PolicyCallback::call(bool)
  • #23 WebCore::PolicyChecker::continueAfterNavigationPolicy(WebCore::PolicyAction)
  • #24 WebKit::FrameLoaderClient::dispatchDecidePolicyForNavigationAction(WebCore::NavigationAction const&, WebCore::ResourceRequest const&, WTF::PassRefPtr<WebCore::FormState>, std::function<void (WebCore::PolicyAction)>)
  • #25 WebCore::PolicyChecker::checkNavigationPolicy(WebCore::ResourceRequest const&, WebCore::DocumentLoader*, WTF::PassRefPtr<WebCore::FormState>, std::function<void (WebCore::ResourceRequest const&, WTF::PassRefPtr<WebCore::FormState>, bool)>)
  • #26 WebCore::FrameLoader::loadWithDocumentLoader(WebCore::DocumentLoader*, WebCore::FrameLoadType, WTF::PassRefPtr<WebCore::FormState>)
  • #27 WebCore::FrameLoader::load(WebCore::DocumentLoader*)
  • #28 WebCore::FrameLoader::load(WebCore::FrameLoadRequest const&)
  • #29 webkit_web_frame_load_data(_WebKitWebFrame*, char const*, char const*, char const*, char const*, char const*)
  • #30 liferea_htmlview_write
    at liferea_htmlview.c line 323
  • #31 htmlview_update
    at htmlview.c line 415
  • #32 itemview_update
    at itemview.c line 310
  • #33 comments_refresh
    at comments.c line 234
  • #34 itemlist_selection_changed
    at itemlist.c line 586
  • #35 on_itemlist_selection_changed
    at item_list_view.c line 288
  • #36 _g_closure_invoke_va
    at gclosure.c line 831
  • #37 g_signal_emit_valist
    at gsignal.c line 3218
  • #38 g_signal_emit
    at gsignal.c line 3365
  • #39 _gtk_tree_selection_internal_select_node
    at gtktreeselection.c line 1427
  • #40 gtk_tree_view_real_set_cursor
  • #41 gtk_tree_view_real_move_cursor
    at gtktreeview.c line 10517
  • #42 gtk_tree_view_real_move_cursor
    at gtktreeview.c line 8863
  • #47 <emit signal 0x468da3 "move-cursor" on instance 0x23a0890 [GtkTreeView]>
    at gsignal.c line 3405
  • #48 ui_common_treeview_move_cursor
    at ui_common.c line 66
  • #49 itemview_move_cursor
    at itemview.c line 360
  • #50 on_key_press_event
    at liferea_shell.c line 684
  • #55 <emit signal ??? on instance 0x238a240 [GtkWindow]>
    at gsignal.c line 3365
  • #56 gtk_widget_event_internal
    at gtkwidget.c line 7773
  • #57 propagate_event
    at gtkmain.c line 2511
  • #58 gtk_propagate_event
    at gtkmain.c line 2557
  • #59 gtk_main_do_event
    at gtkmain.c line 1748
  • #60 gdk_event_source_dispatch
    at gdkeventsource.c line 364
  • #61 g_main_context_dispatch
    at gmain.c line 3111
  • #62 g_main_context_dispatch
    at gmain.c line 3710
  • #63 g_main_context_iterate
    at gmain.c line 3781
  • #64 g_main_context_iteration
    at gmain.c line 3842
  • #65 g_application_run
    at gapplication.c line 2282
  • #66 main
    at main.c line 258

Comment 6 Dan Winship 2015-02-10 11:58:18 UTC
[mass-moving all "UNCONFIRMED" libsoup bugs to "NEW" after disabling the "UNCONFIRMED" status for this product now that bugzilla.gnome.org allows that. bugspam-libsoup-20150210]
Comment 7 Debarshi Ray 2016-07-12 15:44:46 UTC
Looks like a duplicate of bug 688751 based on the version numbers and backtraces. Bug 688751 was fixed in 2.35.3
Comment 8 Debarshi Ray 2016-07-12 15:44:58 UTC

*** This bug has been marked as a duplicate of bug 688751 ***