Bug 371473 - hang in function Konversation::DCC::TransferRecv::createDirs 396 KIO Job exec
Summary: hang in function Konversation::DCC::TransferRecv::createDirs 396 KIO Job exec
Status: RESOLVED WORKSFORME
Alias: None
Product: konversation
Classification: Applications
Component: dcc (show other bugs)
Version: 1.6
Platform: Other Linux
: NOR crash
Target Milestone: ---
Assignee: Bernd Buschinski
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-10-22 03:18 UTC by Zhang Jingqiang
Modified: 2021-01-16 04:35 UTC (History)
2 users (show)

See Also:
Latest Commit:
Version Fixed In:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Zhang Jingqiang 2016-10-22 03:18:24 UTC
There are 5 DCC downloading jobs running.
Then I request another one, which can not be established.
Then the loop occure.

Backtrace 1:
#0  0x00007f9c875618ce in QWindowSystemInterfacePrivate::getNonUserInputWindowSystemEvent() () from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#1  0x00007f9c87561b85 in QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Gui.so.5
#2  0x00007f9c7a05cd60 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5XcbQpa.so.5
#3  0x00007f9c82e257d7 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#4  0x00007f9c82e25a40 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#5  0x00007f9c82e25aec in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#6  0x00007f9c871fa4ff in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#7  0x00007f9c871a219a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#8  0x00007f9c88a3f24e in KJob::exec() () from /usr/lib/x86_64-linux-gnu/libKF5CoreAddons.so.5
#9  0x0000000000657e54 in Konversation::DCC::TransferRecv::createDirs (this=this@entry=0x251f940, dirURL=...) at ./src/dcc/transferrecv.cpp:396
#10 0x00000000006582b9 in Konversation::DCC::TransferRecv::prepareLocalKio (this=this@entry=0x251f940, overwrite=overwrite@entry=false,
    resume=resume@entry=false, startPosition=startPosition@entry=0) at ./src/dcc/transferrecv.cpp:311
#11 0x0000000000658a0f in Konversation::DCC::TransferRecv::start (this=0x251f940) at ./src/dcc/transferrecv.cpp:296
#12 0x000000000054115d in Server::addDccGet (this=0x2143040, sourceNick=..., dccArguments=...) at ./src/irc/server.cpp:2249
#13 0x000000000069ebf7 in Server::qt_static_metacall (_o=0x2143040, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>)
    at ./obj-x86_64-linux-gnu/src/moc_server.cpp:759
#14 0x00007f9c871d2729 in QObject::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#15 0x00007f9c87b6bbec in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#16 0x00007f9c87b7108f in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#17 0x00007f9c871a4450 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#18 0x00007f9c871a63cc in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#19 0x00007f9c871fa0f3 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#20 0x00007f9c82e257d7 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#21 0x00007f9c82e25a40 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#22 0x00007f9c82e25aec in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0


Backtrace2:
#0  0x00007f9c865db56d in poll () at ../sysdeps/unix/syscall-template.S:84
#1  0x00007f9c82e259d6 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#2  0x00007f9c82e25aec in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#3  0x00007f9c871fa4ff in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#4  0x00007f9c871a219a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#5  0x00007f9c88a3f24e in KJob::exec() () from /usr/lib/x86_64-linux-gnu/libKF5CoreAddons.so.5
#6  0x0000000000657e54 in Konversation::DCC::TransferRecv::createDirs (this=this@entry=0x251f940, dirURL=...) at ./src/dcc/transferrecv.cpp:396
#7  0x00000000006582b9 in Konversation::DCC::TransferRecv::prepareLocalKio (this=this@entry=0x251f940, overwrite=overwrite@entry=false, 
    resume=resume@entry=false, startPosition=startPosition@entry=0) at ./src/dcc/transferrecv.cpp:311
#8  0x0000000000658a0f in Konversation::DCC::TransferRecv::start (this=0x251f940) at ./src/dcc/transferrecv.cpp:296
#9  0x000000000054115d in Server::addDccGet (this=0x2143040, sourceNick=..., dccArguments=...) at ./src/irc/server.cpp:2249
#10 0x000000000069ebf7 in Server::qt_static_metacall (_o=0x2143040, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>)
    at ./obj-x86_64-linux-gnu/src/moc_server.cpp:759
#11 0x00007f9c871d2729 in QObject::event(QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#12 0x00007f9c87b6bbec in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#13 0x00007f9c87b7108f in QApplication::notify(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Widgets.so.5
#14 0x00007f9c871a4450 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#15 0x00007f9c871a63cc in QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#16 0x00007f9c871fa0f3 in ?? () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#17 0x00007f9c82e257d7 in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#18 0x00007f9c82e25a40 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#19 0x00007f9c82e25aec in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0
#20 0x00007f9c871fa4ff in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) ()
   from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#21 0x00007f9c871a219a in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib/x86_64-linux-gnu/libQt5Core.so.5
#22 0x00007f9c88a3f24e in KJob::exec() () from /usr/lib/x86_64-linux-gnu/libKF5CoreAddons.so.5

Reproducible: Always

Steps to Reproduce:
It's not easy to reproduce, but it had happened many times, if there are many ongoing downloads, and the new one can not be established.

Actual Results:  
100% loop.
There are some notification about "/home" or "/home/user" directories.
Sometimes the loop will run into an end, sometimes not.


It seems there not any need to call KIO stats, a plain libs stat() call is enough.
Comment 1 Andrew Crouthamel 2018-11-01 13:51:10 UTC
Dear Bug Submitter,

This bug has been stagnant for a long time. Could you help us out and re-test if the bug is valid in the latest version? I am setting the status to NEEDSINFO pending your response, please change the Status back to REPORTED when you respond.

Thank you for helping us make KDE software even better for everyone!
Comment 2 Zhang Jingqiang 2018-11-01 14:06:52 UTC
(In reply to Andrew Crouthamel from comment #1)
> Dear Bug Submitter,
> 
> This bug has been stagnant for a long time. Could you help us out and
> re-test if the bug is valid in the latest version? I am setting the status
> to NEEDSINFO pending your response, please change the Status back to
> REPORTED when you respond.
> 
> Thank you for helping us make KDE software even better for everyone!

Yes, but it's not a 100% loop, sorry for the privious (maybe) wrong info.
It is reproducible by adding 5 downloadings, then adding another one,
then konversation GUI freeze.
After anyone of the 5 downloading ends, then the new one will be started to save to disk (through kio, I guess), but the connection is already timeout.
The freeze seems to be happening during adding kio jobs, which seems to be blocked. I guess there is some limit on number of KIO jobs for each application.
Comment 3 Zhang Jingqiang 2018-11-01 14:11:24 UTC
And after anyone of the 5 downloading jobs finish, there will be 3 job finish notifications, which seems to be:
1. stat for /home
2. stat for /home
3. stat for /home/<username>
So where is blocked is inside KIO stat function.
Comment 4 Andrew Crouthamel 2018-11-01 15:26:02 UTC
Thanks for the update!
Comment 5 Justin Zobel 2020-12-17 05:37:51 UTC
Thank you for the crash report.

As it has been a while since this was reported, can you please test and confirm if this issue is still occurring or if this bug report can be marked as resolved.

I have set the bug status to "needsinfo" pending your response, please change back to "reported" or "resolved/worksforme" when you respond, thank you.
Comment 6 Bug Janitor Service 2021-01-01 04:35:55 UTC
Dear Bug Submitter,

This bug has been in NEEDSINFO status with no change for at least
15 days. Please provide the requested information as soon as
possible and set the bug status as REPORTED. Due to regular bug
tracker maintenance, if the bug is still in NEEDSINFO status with
no change in 30 days the bug will be closed as RESOLVED > WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

If you have already provided the requested information, please
mark the bug as REPORTED so that the KDE team knows that the bug is
ready to be confirmed.

Thank you for helping us make KDE software even better for everyone!
Comment 7 Bug Janitor Service 2021-01-16 04:35:01 UTC
This bug has been in NEEDSINFO status with no change for at least
30 days. The bug is now closed as RESOLVED > WORKSFORME
due to lack of needed information.

For more information about our bug triaging procedures please read the
wiki located here:
https://community.kde.org/Guidelines_and_HOWTOs/Bug_triaging

Thank you for helping us make KDE software even better for everyone!