Bug 1232347 - ktorrent hangs on recent kernels
Summary: ktorrent hangs on recent kernels
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Fedora
Classification: Fedora
Component: ktorrent
Version: 21
Hardware: x86_64
OS: Unspecified
unspecified
unspecified
Target Milestone: ---
Assignee: Roland Wolters
QA Contact: Fedora Extras Quality Assurance
URL:
Whiteboard:
Depends On:
Blocks:
TreeView+ depends on / blocked
 
Reported: 2015-06-16 14:24 UTC by Chris Siebenmann
Modified: 2015-07-06 00:37 UTC (History)
4 users (show)

Fixed In Version:
Clone Of:
Environment:
Last Closed: 2015-07-06 00:37:45 UTC
Type: Bug
Embargoed:


Attachments (Terms of Use)

Description Chris Siebenmann 2015-06-16 14:24:54 UTC
Description of problem:

I updated from kernel 3.19.7-200.fc21 to 4.0.4-202.fc21 and ktorrent has
started hanging while seeding. Its window stops responding and it does
nothing; it must be killed with eg 'kill -9'. The hang is long term (it
can last hours).

Given the stack backtrace I've obtained through gdb, it's possible that
this issue is in libQtNetwork.

I haven't reverted to 3.19.7-200 to verify that it is specifically the
kernel that did this, but I don't see any other relevant package update
for me between 'working ktorrent' and 'hanging ktorrent'. I can do this
test if desired.

I'm using a 64-bit x86 kernel and I have multiple interfaces, although
none of them are coming and going dynamically (this is relevant given
the stack trace).

Version-Release number of selected component (if applicable):

ktorrent-4.3.1-12.fc21.x86_64
qt-4.8.6-30.fc21.x86_64
kernel-4.0.4-202.fc21.x86_64

How reproducible:

Reliably, although it can take a while before ktorrent hangs.

Additional info:

GDB on a running but hung ktorrent reports:
(gdb) where
#0  0x00007f84d6b501dd in recvmsg () at /lib64/libc.so.6
#1  0x00007f84d6b6a69d in __netlink_request () at /lib64/libc.so.6
#2  0x00007f84d6b6a96c in getifaddrs_internal () at /lib64/libc.so.6
#3  0x00007f84d6b6b610 in getifaddrs () at /lib64/libc.so.6
#4  0x00007f84da34e132 in QNetworkInterfaceManager::scan() ()
    at /lib64/libQtNetwork.so.4
#5  0x00007f84da348cee in QNetworkInterfaceManager::allInterfaces() ()
    at /lib64/libQtNetwork.so.4
#6  0x00007f84da349270 in QNetworkInterfaceManager::interfaceFromName(QString const&) () at /lib64/libQtNetwork.so.4
#7  0x00007f84da34936b in QNetworkInterface::interfaceFromName(QString const&) () at /lib64/libQtNetwork.so.4
#8  0x00007f84db774184 in bt::NetworkInterfaceIPAddresses(QString const&) ()
    at /lib64/libktorrent.so.5
#9  0x00007f84db78ff98 in net::TrafficShapedSocket::TrafficShapedSocket(bool, int) () at /lib64/libktorrent.so.5
#10 0x00007f84db7862bd in net::PacketSocket::PacketSocket(bool, int) ()
    at /lib64/libktorrent.so.5
#11 0x00007f84db790f65 in mse::EncryptedPacketSocket::EncryptedPacketSocket(int) () at /lib64/libktorrent.so.5
#12 0x00007f84db794014 in bt::Authenticate::Authenticate(net::Address const&, bt::TransportProtocol, bt::SHA1Hash const&, bt::PeerID const&, QWeakPointer<bt::PeerConnector>) () at /lib64/libktorrent.so.5
#13 0x00007f84db7918bc in mse::EncryptedAuthenticate::EncryptedAuthenticate(net::Address const&, bt::TransportProtocol, bt::SHA1Hash const&, bt::PeerID const&, QWeakPointer<bt::PeerConnector>) () at /lib64/libktorrent.so.5
#14 0x00007f84db7acc13 in bt::PeerConnector::Private::start(bt::PeerConnector::Method) () at /lib64/libktorrent.so.5
#15 0x00007f84db77f4e4 in bt::ResourceManager::update() ()
    at /lib64/libktorrent.so.5
#16 0x00007f84db77f7d2 in bt::ResourceManager::add(bt::Resource*) ()
    at /lib64/libktorrent.so.5
#17 0x00007f84db7a5688 in bt::PeerManager::Private::connectToPeers() ()
    at /lib64/libktorrent.so.5
#18 0x00007f84db7a5b3d in bt::PeerManager::Private::update() ()
    at /lib64/libktorrent.so.5
#19 0x00007f84db7da557 in bt::TorrentControl::update() ()
    at /lib64/libktorrent.so.5
#20 0x000000000042bbd3 in kt::Core::update() ()
#21 0x0000000000433e65 in kt::Core::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) ()
#22 0x00007f84d77d4d9c in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () at /lib64/libQtCore.so.4
#23 0x00007f84d77d9363 in QObject::event(QEvent*) () at /lib64/libQtCore.so.4
#24 0x00007f84d7cf0efc in QApplicationPrivate::notify_helper(QObject*, QEvent*) (gdb) where
#0  0x00007f84d6b501dd in recvmsg () at /lib64/libc.so.6
#1  0x00007f84d6b6a69d in __netlink_request () at /lib64/libc.so.6
#2  0x00007f84d6b6a96c in getifaddrs_internal () at /lib64/libc.so.6
#3  0x00007f84d6b6b610 in getifaddrs () at /lib64/libc.so.6
#4  0x00007f84da34e132 in QNetworkInterfaceManager::scan() ()
    at /lib64/libQtNetwork.so.4
#5  0x00007f84da348cee in QNetworkInterfaceManager::allInterfaces() ()
    at /lib64/libQtNetwork.so.4
#6  0x00007f84da349270 in QNetworkInterfaceManager::interfaceFromName(QString const&) () at /lib64/libQtNetwork.so.4
#7  0x00007f84da34936b in QNetworkInterface::interfaceFromName(QString const&) () at /lib64/libQtNetwork.so.4
#8  0x00007f84db774184 in bt::NetworkInterfaceIPAddresses(QString const&) ()
    at /lib64/libktorrent.so.5
#9  0x00007f84db78ff98 in net::TrafficShapedSocket::TrafficShapedSocket(bool, int) () at /lib64/libktorrent.so.5
#10 0x00007f84db7862bd in net::PacketSocket::PacketSocket(bool, int) ()
    at /lib64/libktorrent.so.5
#11 0x00007f84db790f65 in mse::EncryptedPacketSocket::EncryptedPacketSocket(int) () at /lib64/libktorrent.so.5
#12 0x00007f84db794014 in bt::Authenticate::Authenticate(net::Address const&, bt::TransportProtocol, bt::SHA1Hash const&, bt::PeerID const&, QWeakPointer<bt::PeerConnector>) () at /lib64/libktorrent.so.5
#13 0x00007f84db7918bc in mse::EncryptedAuthenticate::EncryptedAuthenticate(net::Address const&, bt::TransportProtocol, bt::SHA1Hash const&, bt::PeerID const&, QWeakPointer<bt::PeerConnector>) () at /lib64/libktorrent.so.5
#14 0x00007f84db7acc13 in bt::PeerConnector::Private::start(bt::PeerConnector::Method) () at /lib64/libktorrent.so.5
#15 0x00007f84db77f4e4 in bt::ResourceManager::update() ()
    at /lib64/libktorrent.so.5
#16 0x00007f84db77f7d2 in bt::ResourceManager::add(bt::Resource*) ()
    at /lib64/libktorrent.so.5
#17 0x00007f84db7a5688 in bt::PeerManager::Private::connectToPeers() ()
    at /lib64/libktorrent.so.5
#18 0x00007f84db7a5b3d in bt::PeerManager::Private::update() ()
    at /lib64/libktorrent.so.5
#19 0x00007f84db7da557 in bt::TorrentControl::update() ()
    at /lib64/libktorrent.so.5
#20 0x000000000042bbd3 in kt::Core::update() ()
#21 0x0000000000433e65 in kt::Core::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) ()
#22 0x00007f84d77d4d9c in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () at /lib64/libQtCore.so.4
#23 0x00007f84d77d9363 in QObject::event(QEvent*) () at /lib64/libQtCore.so.4
#24 0x00007f84d7cf0efc in QApplicationPrivate::notify_helper(QObject*, QEvent*) () at /lib64/libQtGui.so.4
#25 0x00007f84d7cf7958 in QApplication::notify(QObject*, QEvent*) ()
    at /lib64/libQtGui.so.4
#26 0x000000000043a662 in kt::App::notify(QObject*, QEvent*) ()
#27 0x00007f84d77c022d in QCoreApplication::notifyInternal(QObject*, QEvent*) () at /lib64/libQtCore.so.4
#28 0x00007f84d77f1bab in QTimerInfoList::activateTimers() ()
    at /lib64/libQtCore.so.4
#29 0x00007f84d77eebc9 in idleTimerSourceDispatch(_GSource*, int (*)(void*), void*) () at /lib64/libQtCore.so.4
#30 0x00007f84d08507fb in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
#31 0x00007f84d0850b98 in g_main_context_iterate.isra ()
    at /lib64/libglib-2.0.so.0
#32 0x00007f84d0850c4c in g_main_context_iteration ()
    at /lib64/libglib-2.0.so.0
#33 0x00007f84d77ef55e in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib64/libQtCore.so.4
#34 0x00007f84d7d94176 in QGuiEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib64/libQtGui.so.4
#35 0x00007f84d77bed81 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib64/libQtCore.so.4
#36 0x00007f84d77bf0e5 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at /lib64/libQtCore.so.4
#37 0x00007f84d77c47c9 in QCoreApplication::exec() () at /lib64/libQtCore.so.4
#38 0x00000000004278e8 in main ()

I have a core file from gcore.

Comment 1 Rex Dieter 2015-06-16 14:43:03 UTC
> I can do this test if desired.

That would be greatly helpful if you could, thanks.

Comment 2 Chris Siebenmann 2015-06-16 18:32:59 UTC
At this point ktorrent has been seeding on 3.19.7-200 for a bit over two and
a half hours without problems. This is well over how long it seems to usually
last on 4.0.4. I'll leave it running at least overnight (I need to reboot this
machine in the near future for other work).

Comment 3 Chris Siebenmann 2015-06-30 15:49:09 UTC
For what it's worth: I updated one machine to Fedora 22 and this doesn't
seem to happen on it any more (I've been seeding Fedora torrents
with ktorrent for about 18 hours with no hang). The ktorrent and qt
versions are about the same between Fedora 21 and 22 but Fedora 22 is
using kernel-4.0.6-300.fc22.x86_64, which doesn't seem to have been
released for Fedora 21 yet.

(If it's released for F21 relatively soon, I'll test ktorrent on my
currently remaining Fedora 21 machine. If it's not released soon,
I'll probably have upgraded that machine to Fedora 22.)

Comment 4 Roland Wolters 2015-06-30 19:35:58 UTC
Thanks to let me know - please let me know if you have further tests and can narrow it down to the kernel or any other component.

Comment 5 Chris Siebenmann 2015-07-05 20:26:10 UTC
I updated my (remaining) Fedora machine to kernel 4.0.6-200.fc21 and
ktorrent immediately stopped hanging while seeding. My yum logs show
no ktorrent or qt library updates, so it looks like this was a kernel
issue that was specific to 4.0.4-201.fc21 and 4.0.5-200.fc21.

Since everything works again with the current kernel (on both Fedora
21 and 22), I think you can close this bug as 'resolved in errata' or
something like that.

Comment 6 Rex Dieter 2015-07-06 00:37:45 UTC
ok


Note You need to log in before you can comment on or make changes to this bug.