Hi,

I attached with gdb and I think the process gets stuck trying to empty QNetworkReplyHandlerCallQueue::m_enqueuedCalls from inside QNetworkReplyHandlerCallQueue <https://code.woboq.org/qt5/qtwebkit/Source/WebCore/platform/network/qt/QNetworkReplyHandler.h.html#WebCore::QNetworkReplyHandlerCallQueue>::flush(), spinning in the loop at lines 257-258.

Here's from the gdb session:

(gdb) where
#0  0x00007ffff21837b2 in __GI___fxstat (vers=vers@entry=1, fd=fd@entry=48, buf=buf@entry=0x7fffffffd160) at ../sysdeps/unix/sysv/linux/wordsize-64/fxstat.c:35 #1  0x00007ffff2f2fd1a in fstat64 (__statbuf=0x7fffffffd160, __fd=<optimized out>) at /usr/include/x86_64-linux-gnu/sys/stat.h:514 #2  0x00007ffff2f2fd1a in QFileSystemEngine::fillMetaData(int, QFileSystemMetaData&) (fd=fd@entry=48, data=...) at io/qfilesystemengine.cpp:217 #3  0x00007ffff2f47a2c in QFSFileEnginePrivate::doStat(QFlags<QFileSystemMetaData::MetaDataFlag>) const (this=this@entry=0x7fffdc0144c0, flags=..., flags@entry=...)
    at io/qfsfileengine_unix.cpp:508
#4  0x00007ffff2f28385 in QFSFileEnginePrivate::sizeFdFh() const (this=0x7fffdc0144c0) at io/qfsfileengine.cpp:484 #5  0x00007ffff2ed827c in QFileDevice::size() const (this=<optimized out>) at io/qfiledevice.cpp:608 #6  0x00007fffc92e45ff in WebCore::QNetworkReplyHandler::forwardData() () at ../Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp:712 #7  0x00007fffc92e3f5c in WebCore::QNetworkReplyHandlerCallQueue::flush() () at ../Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp:258 #8  0x00007fffc92e5d48 in WebCore::QNetworkReplyHandlerCallQueue::flush() () at ../Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp:393 #9  0x00007fffc92e5d48 in WebCore::QNetworkReplyHandlerCallQueue::unlock() () at ../Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp:238 #10 0x00007fffc92e5d48 in WebCore::QueueLocker::~QueueLocker() () at ../Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp:266 #11 0x00007fffc92e5d48 in WebCore::QNetworkReplyWrapper::emitMetaDataChanged() () at ../Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp:388 #12 0x00007fffc92e6090 in WebCore::QNetworkReplyWrapper::receiveMetaData() () at ../Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp:353 #13 0x00007ffff2febd55 in QMetaObject::activate(QObject*, int, int, void**) (sender=0x5555569b9970, signalOffset=<optimized out>, local_signal_index=<optimized out>, argv=<optimized out>)
    at kernel/qobject.cpp:3766
#14 0x00007ffff2fec8c2 in QObject::event(QEvent*) (this=0x5555569b9970, e=<optimized out>) at kernel/qobject.cpp:1246 #15 0x00007ffff3cd859c in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #16 0x00007ffff3cdfe64 in QApplication::notify(QObject*, QEvent*) () at /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5 #17 0x00007ffff2fbd258 in QCoreApplication::notifyInternal2(QObject*, QEvent*) (receiver=0x5555569b9970, event=event@entry=0x555556f80e50) at kernel/qcoreapplication.cpp:1018 #18 0x00007ffff2fbf9cd in QCoreApplication::sendEvent(QObject*, QEvent*) (event=0x555556f80e50, receiver=<optimized out>)
    at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:233
#19 0x00007ffff2fbf9cd in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) (receiver=receiver@entry=0x0, event_type=event_type@entry=0, data=0x55555588c720)
    at kernel/qcoreapplication.cpp:1678
#20 0x00007ffff2fbff58 in QCoreApplication::sendPostedEvents(QObject*, int) (receiver=receiver@entry=0x0, event_type=event_type@entry=0) at kernel/qcoreapplication.cpp:1532 #21 0x00007ffff3016ac3 in postEventSourceDispatch(GSource*, GSourceFunc, gpointer) (s=0x5555558df6a0) at kernel/qeventdispatcher_glib.cpp:276 #22 0x00007fffebf69fa7 in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#23 0x00007fffebf6a1e0 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#24 0x00007fffebf6a26c in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0 #25 0x00007ffff30160ef in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x5555558dc090, flags=...) at kernel/qeventdispatcher_glib.cpp:423 #26 0x00007ffff2fbb2aa in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fffffffd9e0, flags=..., flags@entry=...) at kernel/qeventloop.cpp:212 #27 0x00007ffff2fc4214 in QCoreApplication::exec() () at kernel/qcoreapplication.cpp:1291
#28 0x000055555559702a in  ()
#29 0x00007ffff20bdf2a in __libc_start_main (main=
    0x555555594d60, argc=1, argv=0x7fffffffdd78, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffdd68) at ../csu/libc-start.c:310
#30 0x0000555555597a0a in _start ()


(gdb) info threads
  Id   Target Id         Frame
* 1    Thread 0x7ffff7f7b3c0 (LWP 21757) "ktorrent" 0x00007ffff21837b2 in __GI___fxstat (vers=vers@entry=1, fd=fd@entry=48, buf=buf@entry=0x7fffffffd160)
    at ../sysdeps/unix/sysv/linux/wordsize-64/fxstat.c:35
  2    Thread 0x7fffe1623700 (LWP 21760) "QXcbEventReader" 0x00007ffff21883fb in __GI___poll (fds=0x7fffe1622b70, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29   3    Thread 0x7fffda38f700 (LWP 21761) "QDBusConnection" 0x00007ffff21883fb in __GI___poll (fds=0x7fffd4031e80, nfds=5, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29   5    Thread 0x7fffd897d700 (LWP 21763) "Qt bearer threa" 0x00007ffff21883fb in __GI___poll (fds=0x7fffcc002ee0, nfds=1, timeout=9779) at ../sysdeps/unix/sysv/linux/poll.c:29   6    Thread 0x7fffd917e700 (LWP 21764) "ktorrent" 0x00007ffff2160950 in __GI___nanosleep (requested_time=0x7fffd917dbe0, remaining=0x7fffd917dbe0)
    at ../sysdeps/unix/sysv/linux/nanosleep.c:27

(gdb) thread 2
[Switching to thread 2 (Thread 0x7fffe1623700 (LWP 21760))]
#0  0x00007ffff21883fb in __GI___poll (fds=0x7fffe1622b70, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
29      ../sysdeps/unix/sysv/linux/poll.c: No such file or directory.
(gdb) where
#0  0x00007ffff21883fb in __GI___poll (fds=0x7fffe1622b70, nfds=1, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007fffee6fe150 in  () at /usr/lib/x86_64-linux-gnu/libxcb.so.1
#2  0x00007fffee6ffee9 in xcb_wait_for_event () at /usr/lib/x86_64-linux-gnu/libxcb.so.1
#3  0x00007fffe3785029 in  () at /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#4  0x00007ffff2ddf22d in QThreadPrivate::start(void*) (arg=0x5555558b3700) at thread/qthread_unix.cpp:368 #5  0x00007fffedc9e518 in start_thread (arg=0x7fffe1623700) at pthread_create.c:465 #6  0x00007ffff219297f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

(gdb) thread 3
[Switching to thread 3 (Thread 0x7fffda38f700 (LWP 21761))]
#0  0x00007ffff21883fb in __GI___poll (fds=0x7fffd4031e80, nfds=5, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
29      in ../sysdeps/unix/sysv/linux/poll.c
(gdb) where
#0  0x00007ffff21883fb in __GI___poll (fds=0x7fffd4031e80, nfds=5, timeout=-1) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007fffebf6a159 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007fffebf6a26c in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0 #3  0x00007ffff30160ef in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7fffd4000b20, flags=...) at kernel/qeventdispatcher_glib.cpp:423 #4  0x00007ffff2fbb2aa in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fffda38ec40, flags=..., flags@entry=...) at kernel/qeventloop.cpp:212 #5  0x00007ffff2dda35a in QThread::exec() (this=<optimized out>) at thread/qthread.cpp:515
#6  0x00007ffff43dee45 in  () at /usr/lib/x86_64-linux-gnu/libQt5DBus.so.5
#7  0x00007ffff2ddf22d in QThreadPrivate::start(void*) (arg=0x7ffff4651d60) at thread/qthread_unix.cpp:368 #8  0x00007fffedc9e518 in start_thread (arg=0x7fffda38f700) at pthread_create.c:465 #9  0x00007ffff219297f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95

(gdb) thread 5
[Switching to thread 5 (Thread 0x7fffd897d700 (LWP 21763))]
#0  0x00007ffff21883fb in __GI___poll (fds=0x7fffcc002ee0, nfds=1, timeout=9779) at ../sysdeps/unix/sysv/linux/poll.c:29
29      in ../sysdeps/unix/sysv/linux/poll.c
(gdb) where
#0  0x00007ffff21883fb in __GI___poll (fds=0x7fffcc002ee0, nfds=1, timeout=9779) at ../sysdeps/unix/sysv/linux/poll.c:29
#1  0x00007fffebf6a159 in  () at /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007fffebf6a26c in g_main_context_iteration () at /lib/x86_64-linux-gnu/libglib-2.0.so.0 #3  0x00007ffff30160ef in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) (this=0x7fffcc004bc0, flags=...) at kernel/qeventdispatcher_glib.cpp:423 #4  0x00007ffff2fbb2aa in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) (this=this@entry=0x7fffd897cc70, flags=..., flags@entry=...) at kernel/qeventloop.cpp:212 #5  0x00007ffff2dda35a in QThread::exec() (this=<optimized out>) at thread/qthread.cpp:515 #6  0x00007ffff2ddf22d in QThreadPrivate::start(void*) (arg=0x555555957ca0) at thread/qthread_unix.cpp:368 #7  0x00007fffedc9e518 in start_thread (arg=0x7fffd897d700) at pthread_create.c:465 #8  0x00007ffff219297f in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:95


Spinning inside flush:
(gdb) n
257     in ../Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp
(gdb) n
258     in ../Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp
(gdb) n
257     in ../Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp
(gdb) n
258     in ../Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp
(gdb) n
257     in ../Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp
(gdb) finish
Run till exit from #0 WebCore::QNetworkReplyHandlerCallQueue::flush () at ../Source/WebCore/platform/network/qt/QNetworkReplyHandler.cpp:257
^C
Thread 1 "ktorrent" received signal SIGINT, Interrupt.
0x00007ffff2183f68 in __GI___libc_read (fd=fd@entry=48, buf=buf@entry=0x55555703ede8, nbytes=nbytes@entry=16384) at ../sysdeps/unix/sysv/linux/read.c:26
26      ../sysdeps/unix/sysv/linux/read.c: No such file or directory.

Calling gdb finish with that stack will never end.

Thank you,
Alex

Reply via email to