Deadlock in soup_connection_manager_get_connection_locked?
Here is small test that seems to reproduce deadlock I am getting in my real app.
Looking at my real app debug output I had 213 requests queued and 210 requests unqueued before it deadlocked in same place.
From my app:
Thread 1 (Thread 0x7f539f594a80 (LWP 855216)):
#0 syscall () at ../sysdeps/unix/sysv/linux/x86_64/syscall.S:38
#1 0x00007f53a0a9d163 in g_cond_wait (cond=cond@entry=0x557df92616d0, mutex=mutex@entry=0x557df92616c8) at ../../../glib/gthread-posix.c:1581
sampled = 263
#2 0x00007f53a0df0ea5 in soup_connection_manager_get_connection_locked (item=0x557dfaf88a00, manager=0x557df92616c0) at ../--Type
libsoup/soup-connection-manager.c:451
msg = <optimized out>
conn = <optimized out>
socket_props = <optimized out>
host = 0x557dfb7d6c30
need_new_connection = 1
force_http_version = 1 '\001'
l = 0x0
remote_connectable = <optimized out>
try_cleanup = <optimized out>
conn = <optimized out>
conn = <optimized out>
__func__ = "soup_session_process_queue_item"
#3 soup_connection_manager_get_connection (item=0x557dfaf88a00, manager=0x557df92616c0) at ../libsoup/soup-connection-manager.c:502
conn = <optimized out>
conn = <optimized out>
__func__ = "soup_session_process_queue_item"
#4 soup_session_ensure_item_connection (item=0x557dfaf88a00, session=<optimized out>) at ../libsoup/soup-session.c:1696
conn = <optimized out>
__func__ = "soup_session_process_queue_item"
#5 soup_session_process_queue_item (session=<optimized out>, item=0x557dfaf88a00, loop=<optimized out>) at ../libsoup/soup-session.c:1747
__func__ = "soup_session_process_queue_item"
#6 0x00007f53a0df63c1 in soup_session_send (session=0x557df9121e20, msg=0x557df923c0f0, cancellable=<optimized out>, error=--Type
0x7ffc8a6e29c0) at ../libsoup/soup-session.c:3194
item = 0x557dfaf88a00
stream = 0x0
ostream = <optimized out>
mostream = <optimized out>
size = <optimized out>
my_error = 0x0
__func__ = "soup_session_send"
(gdb) p *((SoupConnectionManager *) (0x557df92616c0))
$3 = {session = 0x557df9121e20, mutex = {p = 0x0, i = {0, 0}}, cond = {p = 0x0, i = {263, 0}}, remote_connectable = 0x0,
max_conns = 100, max_conns_per_host = 2, num_conns = 2, http_hosts = 0x557df931f460, https_hosts = 0x557df931f520 = {
[0x557df9a8f560] = 0x557dfb7d6c30}, conns = 0x557df92e95e0 = {[0x557dfb5ac0b0] = 0x557dfb7d6c30,
[0x557df91c2b80] = 0x557dfb7d6c30}, last_connection_id = 55}
libsoup-3.0-dev:
Installed: 3.2.2-1
Candidate: 3.2.2-1
Version table:
*** 3.2.2-1 500
500 http://lv.archive.ubuntu.com/ubuntu lunar/universe amd64 Packages
100 /var/lib/dpkg/status