Version: 2.0 (using 4.00.00 (KDE 4.0.0), Kubuntu packages) Compiler: gcc OS: Linux (i686) release 2.6.22-14-generic When downloading files via Kget or Konqueror the downloads get stalled after a while. On the contrary when downloading the same file with Firefox it works fine. I noticed that frequently in downloads from Rapidshare (but also in other cases).
On Sunday 20 January 2008 7:14:18 pm Samir van de Sand wrote: > When downloading files via Kget or Konqueror the downloads get stalled > after a while. On the contrary when downloading the same file with Firefox > it works fine. I noticed that frequently in downloads from Rapidshare (but > also in other cases). _______________________________________________ > Kget mailing list > Kget@kde.org > https://mail.kde.org/mailman/listinfo/kget Can you please explain more. :) when you said "or konqueror" . you mean not using kget at all? thanks Manolito
On Monday 21 January 2008 01:53:53 Manolo Valdes wrote: [bugs.kde.org quoted mail] Yeah I mean that this issue occurs while downloading files with Kget or downloading files via Konqueror (but without Kget ...). So Kget itself is probably not responsbile for the problem, but something more generic. Maybe kio?
I'll give this one a shot from kio/konq end, but it may be tricky...
Slave blocks talking to app.. #0 0xffffe410 in __kernel_vsyscall () #1 0xb64cf25d in ___newselect_nocancel () from /lib/i686/libc.so.6 #2 0xb71c987d in QNativeSocketEnginePrivate::nativeSelect (this=0x80a53f8, timeout=-1, checkRead=true, checkWrite=true, selectForRead=0xbf8b19ff, selectForWrite=0xbf8b19fe) at qnativesocketengine_unix.cpp:914 #3 0xb71ae1ec in QNativeSocketEngine::waitForReadOrWrite (this=0x80dc758, readyToRead=0xbf8b19ff, readyToWrite=0xbf8b19fe, checkRead=true, checkWrite=true, msecs=-1, timedOut=0x0) at qnativesocketengine.cpp:817 #4 0xb71bd76d in QAbstractSocket::waitForBytesWritten (this=0x80ed860, msecs=-1) at qabstractsocket.cpp:1581 #5 0xb7960635 in KIO::SocketConnectionBackend::sendCommand (this=0x80a4ed0, task=@0xbf8b1a64) at /home/maksim/kde4/src/kdelibs/kio/kio/connection.cpp:294 #6 0xb795f1a0 in KIO::Connection::sendnow (this=0x80a45ac, _cmd=100, data=@0xbf8b1b98) at /home/maksim/kde4/src/kdelibs/kio/kio/connection.cpp:494 #7 0xb795f7f6 in KIO::Connection::send (this=0x80a45ac, cmd=100, data=@0xbf8b1b98) at /home/maksim/kde4/src/kdelibs/kio/kio/connection.cpp:478 #8 0xb7a2005d in KIO::SlaveBase::send (this=0xbf8b44d8, cmd=100, arr=@0xbf8b1b98) at /home/maksim/kde4/src/kdelibs/kio/kio/slavebase.cpp:1249 #9 0xb7a220a9 in KIO::SlaveBase::data (this=0xbf8b44d8, data=@0xbf8b1b98) at /home/maksim/kde4/src/kdelibs/kio/kio/slavebase.cpp:369 #10 0xb5f2dc92 in HTTPProtocol::slotData (this=0xbf8b44d0, _d=@0xbf8b45bc) at /home/maksim/kde4/src/kdelibs/kioslave/http/http.cpp:4126 #11 0xb5f2f7c6 in HTTPProtocol::qt_metacall (this=0xbf8b44d0, _c=QMetaObject::InvokeMetaMethod, _id=0, _a=0xbf8b20cc) at /home/maksim/kde4/build/kdelibs/kioslave/http/http.moc:68 #12 0xb7f03308 in QMetaObject::activate (sender=0xbf8b41f0, from_signal_index=4, to_signal_index=4, argv=0xbf8b20cc) at kernel/qobject.cpp:3087
On the app side, the connection backend seems to spin endlessly in the KIO::SocketConnectionBackend::socketReadyRead deferred signal invocation, and not actually get any new data, even though it is resumed/buffer set to unlimited, as it thinks it has enough for a header, while it's actually looking for payload. Though fixing that it still stalls, just w/o burning CPU... Some relevant log fragments: konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 8 bytes konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 9 bytes konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 10 bytes konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Beginning of command 64 of size b50 konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 1 bytes konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 2 bytes konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 3 bytes konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 4 bytes konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 5 bytes konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 6 bytes konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 7 bytes konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 8 bytes konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 9 bytes konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 10 bytes konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 10 bytes konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 10 bytes konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 10 bytes konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 10 bytes konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 10 bytes konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 10 bytes konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 10 bytes konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 10 bytes konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 10 bytes konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming .... konqueror(7136) KIO::SocketConnectionBackend::setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 10 bytes konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502 d38) Want to read 2896 bytes konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 10 bytes konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 10 bytes konqueror(7136) KIO::SocketConnectionBackend::socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes
Let's try this again, somewhat trimmed: socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 6 bytes setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 7 bytes setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 8 bytes setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 9 bytes setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 10 bytes socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Beginning of command 64 of size b50 socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 1 bytes socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 2 bytes socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 3 bytes socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 4 bytes socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 5 bytes socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 6 bytes socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 7 bytes socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 8 bytes socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 9 bytes socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 10 bytes socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming setSuspended: KIO::SocketConnectionBackend(0x8502d38) suspending socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 10 bytes ... setSuspended: KIO::SocketConnectionBackend(0x8502d38) resuming socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 10 bytes socketReadyRead: KIO::SocketConnectionBackend(0x8502 d38) Want to read 2896 bytes socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 10 bytes socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 10 bytes socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Got 10 bytes socketReadyRead: KIO::SocketConnectionBackend(0x8502d38) Want to read 2896 bytes
Created attachment 23182 [details] initial patch OK, this avoids stalls, but the throughput is subpar, seemingly capping out at ~1.6MiB/sec. This does: 1. Always re-enables socket notifiers when resuming the backend connection 2. Uses the proper length when computing whether there is an another complete thing to read -- if we are waiting for payload, HeaderSize bytes is useless. 3. Does multiple reads immediately in a loop. w/o (3) throughput is pathetic, as the client can't keep up with the slave.
Ugh.. Something is still wrong --- it appears to occasionally miss some image loading now and such. Not sure how to approach debugging that just yet..
*** Bug 156833 has been marked as a duplicate of this bug. ***
*** Bug 155939 has been marked as a duplicate of this bug. ***
*** Bug 156945 has been marked as a duplicate of this bug. ***
SVN commit 768905 by orlovich: Fix stalls on long file transfers: 1. Always re-enable socket notifiers when resuming the backend connection 2. Use the proper length when computing whether there is an another complete thing to read -- if we are waiting for payload, HeaderSize bytes is useless. 3. Do multiple reads immediately in a loop. w/o (3) throughput is pathetic, as the client can't keep up with the slave. BUG: 156259 M +52 -44 connection.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=768905
SVN commit 771394 by qbast: Fix updating location bar for remote directories - if KDirOperator signals entering a directory then trust it that it is really a directory instead of using half-working (only for local files) check. CCBUG: 156259 M +1 -1 kfilewidget.cpp WebSVN link: http://websvn.kde.org/?view=rev&revision=771394