Summary: | Krusader crashes when right-clicking on a file which being externally updated | ||
---|---|---|---|
Product: | [Applications] krusader | Reporter: | DaBler <dabler> |
Component: | general | Assignee: | Krusader Bugs Distribution List <krusader-bugs-null> |
Status: | CONFIRMED --- | ||
Severity: | crash | CC: | dabler, davide, heiko, krusader-bugs-null, nikita+kde, toni.asensi |
Priority: | NOR | Keywords: | drkonqi, triaged |
Version First Reported In: | Git | ||
Target Milestone: | --- | ||
Platform: | Compiled Sources | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | ||
Sentry Crash Report: | |||
Bug Depends on: | |||
Bug Blocks: | 409834 | ||
Attachments: |
New crash information added by DrKonqi
New crash information added by DrKonqi New crash information added by DrKonqi |
Description
DaBler
2020-08-06 11:18:33 UTC
The problem is about setting the file as the selected one in the panel. Can you share your .krusaderrc config file or at least your selection settings? (Konfigurator -> Panel -> Selection Mode). The file seems to be a Chrome partial download. Does it still exists in the directory? Can you try the same action in Dolphin? Thank you That excerpt from krusaderrc: [Custom Selection Mode] Immediate Context Menu=false Left Selects=false Right Preserves=true ShiftCtrl Left Selects=true Space Moves Down=false (I can share the whole file if needed) The Dolphin is fine (will not crash on right-click). Thank you for the info; unfortunately, I cannot replicate the bug nor install Chrome to test a download - for now (I think you can right-click on other files without issues). You can simulate the Chrome download with: dd bs=1 if=/dev/urandom of=tmp and then right-click on the tmp file. I could not also reproduce the problem :-( , right-clicking on those files had the normal behavior. When the crash happened, did you have the file preview enabled? Created attachment 131459 [details]
New crash information added by DrKonqi
krusader (2.7.2 "Peace of Mind") using Qt 5.14.2
The file previews are disabled. Just follow these steps to reproduce the crash:
$ export LANG=C
$ dd bs=1 if=/dev/urandom of=tmp &
$ krusader --left .
right-click on the "tmp" file
-- Backtrace (Reduced):
#6 KrView::setSelected (this=0x18, fileitem=0x33, select=true) at /var/tmp/portage/kde-misc/krusader-2.7.2/work/krusader-2.7.2/krusader/Panel/PanelView/krview.cpp:1186
#7 0x0000560a8b6e8575 in KrViewItem::setSelected (this=0x560a8e8cabd0, s=s@entry=true) at /var/tmp/portage/kde-misc/krusader-2.7.2/work/krusader-2.7.2/krusader/Panel/PanelView/krviewitem.cpp:132
#8 0x0000560a8b6de567 in KrMouseHandler::showContextMenu (this=0x560a8d813830) at /var/tmp/portage/kde-misc/krusader-2.7.2/work/krusader-2.7.2/krusader/Panel/PanelView/krmousehandler.cpp:319
#9 0x00007fce3f720aa0 in doActivate<false> (sender=0x560a8d813868, signal_index=3, argv=0x7ffd2dd3dcd0) at /var/tmp/portage/dev-qt/qtcore-5.14.2/work/qtbase-everywhere-src-5.14.2/include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:395
[...]
#11 0x00007fce3f7242aa in QTimer::timeout (this=<optimized out>, _t1=...) at .moc/moc_qtimer.cpp:205
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! 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! Created attachment 136013 [details]
New crash information added by DrKonqi
krusader (2.7.2 "Peace of Mind") using Qt 5.15.2
I still face this problem in Krusader version 2.7.2 (KDE 20.08.3). It occurs, for example, when clicking on *.crdownload.
-- Backtrace (Reduced):
#6 0x000055dc0b849057 in std::__atomic_base<int>::load (__m=std::memory_order_relaxed, this=<optimized out>) at /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include/g++-v9/bits/atomic_base.h:419
#7 QAtomicOps<int>::load<int> (_q_value=...) at /usr/include/qt5/QtCore/qatomic_cxx11.h:227
#8 QBasicAtomicInteger<int>::load (this=<optimized out>) at /usr/include/qt5/QtCore/qbasicatomic.h:103
[...]
#10 QList<QUrl>::~QList (this=0x7ffc555e5910, __in_chrg=<optimized out>) at /usr/include/qt5/QtCore/qlist.h:845
#11 0x000055dc0b8490e5 in QList<QUrl>::operator= (other=..., this=<optimized out>) at /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include/g++-v9/bits/move.h:182
I've tried it, though I found no problem using the git version of Krusader under Kubuntu 20.04 nor 20.10. Can you follow the steps of https://commits.kde.org/krusader?path=INSTALL in order to build the git version of Krusader and tell us if your problem is solved? Created attachment 136074 [details]
New crash information added by DrKonqi
krusader (2.8.0-dev "Bleeding Edge") using Qt 5.15.2
Crashes even with git version of the Krusader (version 2.8.0-dev "Bleeding Edge", cloned on 08:17:36 23/2/2021) with exactly the same stacktrace.
-- Backtrace (Reduced):
#6 KrView::setSelected (this=0x18, fileitem=0x56501c982e00, select=true) at /var/tmp/portage/kde-misc/krusader-9999/work/krusader-9999/krusader/Panel/PanelView/krview.cpp:1189
#7 0x000056501a475235 in KrViewItem::setSelected (this=0x56501cabc520, s=s@entry=true) at /var/tmp/portage/kde-misc/krusader-9999/work/krusader-9999/krusader/Panel/PanelView/krviewitem.cpp:120
#8 0x000056501a46ace7 in KrMouseHandler::showContextMenu (this=0x56501c25b850) at /var/tmp/portage/kde-misc/krusader-9999/work/krusader-9999/krusader/Panel/PanelView/krmousehandler.cpp:334
#9 0x00007f6512f20ee5 in QtPrivate::QSlotObjectBase::call (a=0x7ffc17194800, r=0x56501c25b850, this=0x56501c25ae90) at /var/tmp/portage/dev-qt/qtcore-5.15.2-r2/work/qtbase-everywhere-src-5.15.2/include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#10 doActivate<false> (sender=0x56501c25b888, signal_index=3, argv=0x7ffc17194800) at /var/tmp/portage/dev-qt/qtcore-5.15.2-r2/work/qtbase-everywhere-src-5.15.2/src/corelib/kernel/qobject.cpp:3886
It could be related to bug 425528: the panel refreshes its contents and when the right click popup renders, it has no more a valid fileitem. (In reply to DaBler from comment #7) > $ export LANG=C > $ dd bs=1 if=/dev/urandom of=tmp & > $ krusader --left . > > right-click on the "tmp" file I can repro this bug with the above steps by doing a long right click (for the context menu). Thanks DaBler! (In reply to Davide Gianforte from comment #13) > It could be related to bug 425528: the panel refreshes its contents and when > the right click popup renders, it has no more a valid fileitem. Exactly! We've bumped into this multiple times and I have to admit we should take on redesigning that legacy piece of code. This change won't be small and it touches the core of Krusader logic, but it's worth doing. Hopefully, I could find some time to look into it in the next few months. Reference discussion: https://invent.kde.org/utilities/krusader/-/merge_requests/33 https://phabricator.kde.org/D22431 (there was also a discussion with a deeper investigation I did long time ago, and I couldn't find it now...) *** Bug 429655 has been marked as a duplicate of this bug. *** Consolidated multiple bugs here as the root cause is the same: when we get inotify for dir update, due to a legacy piece of code mentioned in comment #14, krusader kills all old KrViewItem instances, including the one user works with (right click or rename). It also affects scrolling, as underlying view loses position when list is re-created. To solve we need to carefully merge old list and new list, keeping all the objects for the files that remained in the dir. In addition, when an item pointer is used, we need a way to say if the item is still valid as it actually could have been deleted in case the file is vanished from the dir. Likely, the shared pointer pattern and isValid member is sufficient. still an issue |