Summary: | kioworker crashes in ThumbnailProtocol::get() when save dialog is open | ||
---|---|---|---|
Product: | [Frameworks and Libraries] frameworks-kio | Reporter: | Sven Grewe <svengrewe> |
Component: | Open/save dialogs | Assignee: | KIO Bugs <kio-bugs-null> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | akselmo, ashleysommer, joachim, kde, kdebugs, kdedev, kdelibs-bugs-null, laura.stern, mcumbrella, nate, nicolas.fella, sitter |
Priority: | NOR | ||
Version First Reported In: | git master | ||
Target Milestone: | --- | ||
Platform: | Other | ||
OS: | Linux | ||
See Also: |
https://bugs.kde.org/show_bug.cgi?id=501046 https://bugs.kde.org/show_bug.cgi?id=501787 |
||
Latest Commit: | https://invent.kde.org/frameworks/kio/-/commit/6552bc6f280b2eddff4b1da931004a8a9230ac81 | Version Fixed In: | 6.16 |
Sentry Crash Report: | https://crash-reports.kde.org/organizations/kde/issues/4222 | ||
Attachments: |
KCrash report
second KCrash report |
Thread 1 (Thread 0x7ab7f4f14280 (LWP 176938)): [KCrash Handler] #6 __pthread_kill_implementation (no_tid=0, signo=6, threadid=134930507055744) at ./nptl/pthread_kill.c:44 #7 __pthread_kill_internal (signo=6, threadid=134930507055744) at ./nptl/pthread_kill.c:78 #8 __GI___pthread_kill (threadid=134930507055744, signo=signo@entry=6) at ./nptl/pthread_kill.c:89 #9 0x00007ab7f8e42476 in __GI_raise (sig=sig@entry=6) at ../sysdeps/posix/raise.c:26 #10 0x00007ab7f8e287f3 in __GI_abort () at ./stdlib/abort.c:79 #11 0x00007ab7f96fdb6e in qAbort () at ./src/corelib/global/qglobal.cpp:161 #12 0x00007ab7f96f820a in qt_message_fatal<QString&> (message=..., context=...) at ./src/corelib/global/qlogging.cpp:2025 #13 qt_message(QtMsgType, const QMessageLogContext &, const char *, typedef __va_list_tag __va_list_tag *) (msgType=msgType@entry=QtFatalMsg, context=..., msg=<optimized out>, ap=ap@entry=0x7ffde408add0) at ./src/corelib/global/qlogging.cpp:374 #14 0x00007ab7f96fe511 in QMessageLogger::fatal (this=<optimized out>, msg=<optimized out>) at ./src/corelib/global/qlogging.cpp:889 #15 0x00007ab7f96c2ac2 in qt_assert (assertion=assertion@entry=0x7ab7f9a4c85c "info.isAbsolute()", file=file@entry=0x7ab7f9a4c72e "./thumbnail/thumbnail.cpp", line=line@entry=170) at ./src/corelib/global/qassert.cpp:68 #16 0x00007ab7f9a406d4 in ThumbnailProtocol::get (this=0x7ffde408b910, url=...) at ./thumbnail/thumbnail.cpp:170 #17 0x00007ab7f9914765 in KIO::WorkerSlaveBaseBridge::get (this=0x621f5f39e160, url=...) at ./src/core/workerbase_p.h:71 #18 0x00007ab7f991052e in KIO::SlaveBase::dispatch (this=0x621f5f39e160, command=67, data=...) at ./src/core/slavebase.cpp:1168 #19 0x00007ab7f99c12ba in KIO::SlaveBase::dispatchLoop() [clone .constprop.0] (this=<optimized out>) at ./src/core/slavebase.cpp:350 #20 0x00007ab7f990eefd in KIO::WorkerBase::dispatchLoop (this=this@entry=0x7ffde408b910) at ./src/core/workerbase.cpp:27 #21 0x00007ab7f9a44a3c in kdemain (argc=<optimized out>, argc@entry=4, argv=0x7ffde408c4b8) at ./thumbnail/thumbnail.cpp:114 #22 0x0000621f5e1d95a0 in main (argc=5, argv=0x7ffde408c638) at /usr/include/x86_64-linux-gnu/qt6/QtCore/qvarlengtharray.h:84 thumbnail.cpp:170 is this:
> Q_ASSERT(info.isAbsolute())
> I saw it crash when using the file picker/saver. I'm not sure if it's related.
It's very much related. Can you tell which program you used specifically?
A possibly relevant merge request was started @ https://invent.kde.org/frameworks/kio/-/merge_requests/1673 A possibly relevant merge request was started @ https://invent.kde.org/network/kio-extras/-/merge_requests/363 Git commit 7be69649a6d3ba8786ff6586aa0769fc05d0ac9c by Nicolas Fella. Committed on 13/08/2024 at 18:21. Pushed by nicolasfella into branch 'master'. [thumbnail] Print file name when asserting This gives us more information to debug the issue M +1 -1 thumbnail/thumbnail.cpp https://invent.kde.org/network/kio-extras/-/commit/7be69649a6d3ba8786ff6586aa0769fc05d0ac9c Git commit 9052690e66052f32c021256439e81168d501a0d7 by Nicolas Fella. Committed on 14/08/2024 at 12:34. Pushed by nicolasfella into branch 'release/24.08'. [thumbnail] Print file name when asserting This gives us more information to debug the issue (cherry picked from commit 7be69649a6d3ba8786ff6586aa0769fc05d0ac9c) M +1 -1 thumbnail/thumbnail.cpp https://invent.kde.org/network/kio-extras/-/commit/9052690e66052f32c021256439e81168d501a0d7 I used the Signal Desktop Messenger (Flatpak) for this and can reproduce a crash on an up-to-date system when trying to save a file from a chat. Opening/selecting files on the system doesn't seem to cause an issue. Created attachment 172912 [details]
second KCrash report
It still crashes with the 24.08.0 update
A possibly relevant merge request was started @ https://invent.kde.org/frameworks/kio/-/merge_requests/1703 Two questions: - does the crash happen in any folder, only in specific ones (like one starting with smb://) - Can share the list of you enabled thumbnailer (in dolphin > preview), as a screenshot for instance Git commit d09989f93698a01aef719bfd19bd665269df091e by Nicolas Fella. Committed on 07/11/2024 at 14:16. Pushed by nicolasfella into branch 'master'. [previewjob] Assert that path is absolute The worker expects that, so catch failure early M +4 -0 src/gui/previewjob.cpp https://invent.kde.org/frameworks/kio/-/commit/d09989f93698a01aef719bfd19bd665269df091e From https://crash-reports.kde.org/organizations/kde/issues/107873 0 libc.so.6 0x7f073d29eb1c [inlined] __pthread_kill_implementation (pthread_kill.c:44) 1 libc.so.6 0x7f073d29eb1c [inlined] __pthread_kill_internal (pthread_kill.c:78) 2 libc.so.6 0x7f073d29eb1c pthread_kill (pthread_kill.c:89) 3 libc.so.6 0x7f073d29eb1b [inlined] __pthread_kill_implementation (pthread_kill.c:43) 4 libc.so.6 0x7f073d29eb1b [inlined] __pthread_kill_internal (pthread_kill.c:78) 5 libc.so.6 0x7f073d29eb1b [inlined] pthread_kill (pthread_kill.c:89) 6 libc.so.6 0x7f073d29eb1b [inlined] __pthread_kill_implementation (pthread_kill.c:43) 7 libc.so.6 0x7f073d29eb1b [inlined] __pthread_kill_internal (pthread_kill.c:78) 8 libc.so.6 0x7f073d29eb1b pthread_kill (pthread_kill.c:89) 9 libc.so.6 0x7f073d24526d __GI_raise (raise.c:26) 10 libc.so.6 0x7f073d2288fe abort (abort.c:79) 11 libQt6Core.so.6.8.1 0x7f073df0e0bd [inlined] qAbort (qassert.cpp:49) 12 libQt6Core.so.6.8.1 0x7f073df0e0bd [inlined] qt_message_fatal<T> (qlogging.cpp:2116) 13 libQt6Core.so.6.8.1 0x7f073df0e0bd qt_message (qlogging.cpp:382) 14 libQt6Core.so.6.8.1 0x7f073df0ef9a QMessageLogger::fatal (qlogging.cpp:884) 15 libQt6Core.so.6.8.1 0x7f073df0f06c qt_assert_x (qassert.cpp:114) 16 libKF6KIOGui.so.6.9.0 0x7f07405564cb KIO::PreviewJobPrivate::createThumbnail (previewjob.cpp:835) 17 libKF6KIOGui.so.6.9.0 0x7f074057541a KIO::PreviewJobPrivate::getOrCreateThumbnail (previewjob.cpp:710) 18 libKF6KIOGui.so.6.9.0 0x7f0740576017 KIO::PreviewJob::slotResult (previewjob.cpp:592) 19 libQt6Core.so.6.8.1 0x7f073de7ada8 [inlined] ? (qobjectdefs_impl.h:486) 20 libQt6Core.so.6.8.1 0x7f073de7ada8 doActivate<T> (qobject.cpp:4124) 21 libKF6CoreAddons.so.6.9.0 0x7f073f2d0475 KJob::result (moc_kjob.cpp:622) 22 libKF6CoreAddons.so.6.9.0 0x7f073f2d2b6a KJob::finishJob (kjob.cpp:115) 23 libQt6Core.so.6.8.1 0x7f073de7ada8 [inlined] ? (qobjectdefs_impl.h:486) 24 libQt6Core.so.6.8.1 0x7f073de7ada8 doActivate<T> (qobject.cpp:4124) 25 libKF6KIOCore.so.6.9.0 0x7f073f575534 [inlined] KIO::WorkerInterface::finished (moc_workerinterface_p.cpp:515) 26 libKF6KIOCore.so.6.9.0 0x7f073f575534 KIO::WorkerInterface::dispatch (workerinterface.cpp:127) 27 libKF6KIOCore.so.6.9.0 0x7f073f573cb6 KIO::WorkerInterface::dispatch (workerinterface.cpp:58) 28 libKF6KIOCore.so.6.9.0 0x7f073f57086d KIO::Worker::gotInput (worker.cpp:260) 29 libQt6Core.so.6.8.1 0x7f073de7ada8 [inlined] ? (qobjectdefs_impl.h:486) 30 libQt6Core.so.6.8.1 0x7f073de7ada8 doActivate<T> (qobject.cpp:4124) 31 libQt6Core.so.6.8.1 0x7f073de108fc QObject::event (qobject.cpp:1419) 32 libQt6Widgets.so.6.8.1 0x7f073effff47 QApplicationPrivate::notify_helper (qapplication.cpp:3296) 33 libQt6Core.so.6.8.1 0x7f073deb5717 QCoreApplication::notifyInternal2 (qcoreapplication.cpp:1168) 34 libQt6Core.so.6.8.1 0x7f073deb8241 QCoreApplicationPrivate::sendPostedEvents (qcoreapplication.cpp:1968) 35 libQt6Core.so.6.8.1 0x7f073dc725ce postEventSourceDispatch (qeventdispatcher_glib.cpp:246) 36 libglib-2.0.so.0.8000.0 0x7f073b4155b5 <unknown> 37 libglib-2.0.so.0.8000.0 0x7f073b474717 <unknown> 38 libglib-2.0.so.0.8000.0 0x7f073b414a53 g_main_context_iteration 39 libQt6Core.so.6.8.1 0x7f073dc702ce QEventDispatcherGlib::processEvents (qeventdispatcher_glib.cpp:399) 40 libQt6Core.so.6.8.1 0x7f073dec1aea QEventLoop::exec (qeventloop.cpp:194) 41 libQt6Widgets.so.6.8.1 0x7f073ee1793a QDialog::exec (qdialog.cpp:567) 42 xdg-desktop-portal-kde 0x643107951846 FileChooserPortal::OpenFile (filechooser.cpp:488) 43 xdg-desktop-portal-kde 0x6431078ac368 FileChooserPortal::qt_static_metacall (moc_filechooser.cpp:188) 44 xdg-desktop-portal-kde 0x6431078ae979 FileChooserPortal::qt_metacall (moc_filechooser.cpp:235) 45 libQt6DBus.so.6.8.1 0x7f073e99a49b QDBusConnectionPrivate::deliverCall (qdbusintegrator.cpp:1008) 46 libQt6DBus.so.6.8.1 0x7f073e99b202 QDBusConnectionPrivate::activateCall (qdbusintegrator.cpp:910) 47 libQt6DBus.so.6.8.1 0x7f073e99dd6a QDBusConnectionPrivate::activateObject (qdbusintegrator.cpp:1485) 48 libQt6DBus.so.6.8.1 0x7f073e99e6e9 QDBusActivateObjectEvent::placeMetaCall (qdbusintegrator.cpp:1605) 49 libQt6Core.so.6.8.1 0x7f073de108fc QObject::event (qobject.cpp:1419) 50 libQt6Widgets.so.6.8.1 0x7f073effff47 QApplicationPrivate::notify_helper (qapplication.cpp:3296) 51 libQt6Core.so.6.8.1 0x7f073deb5717 QCoreApplication::notifyInternal2 (qcoreapplication.cpp:1168) 52 libQt6Core.so.6.8.1 0x7f073deb8241 QCoreApplicationPrivate::sendPostedEvents (qcoreapplication.cpp:1968) 53 libQt6Core.so.6.8.1 0x7f073dc725ce postEventSourceDispatch (qeventdispatcher_glib.cpp:246) 54 libglib-2.0.so.0.8000.0 0x7f073b4155b5 <unknown> 55 libglib-2.0.so.0.8000.0 0x7f073b474717 <unknown> 56 libglib-2.0.so.0.8000.0 0x7f073b414a53 g_main_context_iteration 57 libQt6Core.so.6.8.1 0x7f073dc702ce QEventDispatcherGlib::processEvents (qeventdispatcher_glib.cpp:399) 58 libQt6Core.so.6.8.1 0x7f073dec1aea QEventLoop::exec (qeventloop.cpp:194) 59 libQt6Core.so.6.8.1 0x7f073deb8c2c QCoreApplication::exec (qcoreapplication.cpp:1513) 60 xdg-desktop-portal-kde 0x6431078aa322 main (xdg-desktop-portal-kde.cpp:50) 61 libc.so.6 0x7f073d22a1c9 __libc_start_call_main (libc_start_call_main.h:58) 62 libc.so.6 0x7f073d22a28a __libc_start_main_alias_1 (libc-start.c:360) 63 xdg-desktop-portal-kde 0x6431078aa684 _start Somehow item.localPath() is "." *** Bug 491896 has been marked as a duplicate of this bug. *** A possibly relevant merge request was started @ https://invent.kde.org/frameworks/kio/-/merge_requests/1770 A possibly relevant merge request was started @ https://invent.kde.org/network/kdeconnect-kde/-/merge_requests/764 Git commit b2e67aacb4d1d958b710d903d7c2f0987f8c32ff by Nicolas Fella. Committed on 23/12/2024 at 00:46. Pushed by nicolasfella into branch 'master'. [kio] Handle error when getting mount point The DBus reply is implicitly converted to QString, so when the call fails we get the call error message as string We then write that into UDS_LOCAL_PATH, which causes issues later on SENTRY: DOLPHIN-5CT M +7 -1 kio/kiokdeconnect.cpp https://invent.kde.org/network/kdeconnect-kde/-/commit/b2e67aacb4d1d958b710d903d7c2f0987f8c32ff Git commit be86637a4f71693b29288e93f7f3bedde95ac4a7 by Nicolas Fella. Committed on 23/12/2024 at 00:52. Pushed by nicolasfella into branch 'release/24.12'. [kio] Handle error when getting mount point The DBus reply is implicitly converted to QString, so when the call fails we get the call error message as string We then write that into UDS_LOCAL_PATH, which causes issues later on SENTRY: DOLPHIN-5CT (cherry picked from commit b2e67aacb4d1d958b710d903d7c2f0987f8c32ff) M +7 -1 kio/kiokdeconnect.cpp https://invent.kde.org/network/kdeconnect-kde/-/commit/be86637a4f71693b29288e93f7f3bedde95ac4a7 > Somehow item.localPath() is "."
d'oh, my assert was slightly wrong, it's printing the file's folder path, excluding the file name.
The actual full path is something like "./someFile"
It can be reproduced by entering "file:." into the file dialog's address bar
A possibly relevant merge request was started @ https://invent.kde.org/frameworks/kio/-/merge_requests/1772 A possibly relevant merge request was started @ https://invent.kde.org/network/kio-extras/-/merge_requests/394 Git commit 07c68404decf95ad0897685a1c5071bfbf0254b5 by Nicolas Fella. Committed on 10/01/2025 at 18:04. Pushed by nicolasfella into branch 'master'. [thumbnail] Fix assert message Print the full file path, not just the folder path M +1 -1 thumbnail/thumbnail.cpp https://invent.kde.org/network/kio-extras/-/commit/07c68404decf95ad0897685a1c5071bfbf0254b5 Git commit 0ba7ab4e6941785d63ffd8d6c68a5853763454f5 by Nicolas Fella. Committed on 10/01/2025 at 18:57. Pushed by nicolasfella into branch 'release/24.12'. [thumbnail] Fix assert message Print the full file path, not just the folder path (cherry picked from commit 07c68404decf95ad0897685a1c5071bfbf0254b5) M +1 -1 thumbnail/thumbnail.cpp https://invent.kde.org/network/kio-extras/-/commit/0ba7ab4e6941785d63ffd8d6c68a5853763454f5 failing assertion for signal-desktop snap apparently https://crash-reports.kde.org/organizations/kde/issues/112252/events/e599410f6ce348559db6ef8b1eaa8ecf/?project=36 (can't test as snap is being a bit broken for me ^^) *** Bug 501172 has been marked as a duplicate of this bug. *** For me this crash behavior started after 2025-01-29, judging from my list of downloaded files. Saving files from signal-desktop (installed from snap) worked fine until then. I'm seeing this bug in Signal too, I'm using the Signal-desktop Flatpak. As Laura said, I think this started happening around the end of January. Downloading files worked fine before that. I am seeing this error in journalctl: --- xdg-desktop-portal-kde: ASSERT failure in PreviewJobPrivate::getOrCreateThumbnail: "Local path for url file:./.cache is not absolute: ./.cache", file ./src/gui/previewjob.cpp, line 716 --- I'm on KDE Neon, relevant installed packages: kf6-kio: 6.11.0+p24.04+vstable+git20250303.0733-0 xdg-desktop-portal-kde: 6.3.2+p24.04+vstable+git20250225.1925-0 *** Bug 501599 has been marked as a duplicate of this bug. *** The sentry issue has 34 events. Changing back to confirmed since the prior work was merged *** Bug 504255 has been marked as a duplicate of this bug. *** Okay I can reproduce this with ASHPD application which is used to test portals https://flathub.org/apps/com.belmoussaoui.ashpd.demo 1. Open ASHPD 2. Select File Chooser 3. Go to save file section 4. Type ".cache" to current folder 5. Press request 6. File dialog opens in ~/.cache 7. And then crashes immediately due to the previewjob not getting an absolute path I think the solution is to make sure whatever passes the ".cache" to the file dialog etc to turn it into absolute URL before starting the file dialog. Operating System: Fedora Linux 42 KDE Plasma Version: 6.4.80 KDE Frameworks Version: 6.16.0 Qt Version: 6.9.0 Kernel Version: 6.15.0-61.fc43.x86_64 (64-bit) Graphics Platform: Wayland Processors: 12 × AMD Ryzen 5 3600 6-Core Processor Memory: 16 GiB of RAM (15.5 GiB usable) Graphics Processor: AMD Radeon RX 6600 To clarify it doesnt need to be ".cache", it can also be "Pictures" to cause the crash. But if its "~/Pictures" it works. Thanks, we can easily work around not absolute paths in the portal as those dont make sense cross process. KFileWidget docs also say no relative paths but doesnt check it and runs into the assert sometimes #include <KFileWidget> #include <QApplication> #include <QUrl> #include <unistd.h> int main(int argc, char**argv){ chdir(getenv("HOME")); QApplication app(argc, argv); KFileWidget f(QUrl("file:.cache")); // does not explode, ignores URL // KFileWidget f(QUrl("file:./.cache")); // explodes f.setUrl(QUrl("file:.cache")); // explodes f.show(); app.exec(); } Actually it does not say say so /*! * Sets the directory to view. * * \a url URL to show. * * \a clearforward Indicates whether the forward queue * should be cleared. */ void setUrl(const QUrl &url, bool clearforward = true); /*! * Sets the URL to preselect to \a url * * This method handles absolute URLs (remember to use fromLocalFile for local paths). * It also handles relative URLs, which you should construct like this: * QUrl relativeUrl; relativeUrl.setPath(fileName); * * \since 5.33 */ void setSelectedUrl(const QUrl &url); We can make the same happen via QFileDialog -> plasma-integtration-> KFileWidget #include <QApplication> #include <QUrl> #include <unistd.h> #include <QFileDialog> int main(int argc, char**argv){ chdir(getenv("HOME")); QApplication app(argc, argv); QFileDialog f; f.setDirectoryUrl(QUrl("file:.cache")); f.show(); app.exec(); } A possibly relevant merge request was started @ https://invent.kde.org/plasma/xdg-desktop-portal-kde/-/merge_requests/401 Git commit 7c8e601a663eb33029e2723bbd2372c89e0cb9be by David Redondo. Committed on 10/06/2025 at 12:01. Pushed by davidre into branch 'master'. filechooser: Ignore non absolute current_folder urls These do not make sense in cross process communication SENTRY:XDG-DESKTOP-PORTAL-KDE-G4 M +8 -0 src/filechooser.cpp https://invent.kde.org/plasma/xdg-desktop-portal-kde/-/commit/7c8e601a663eb33029e2723bbd2372c89e0cb9be A possibly relevant merge request was started @ https://invent.kde.org/plasma/xdg-desktop-portal-kde/-/merge_requests/402 Git commit 609752566234575f68c38cd24fbccb4c6e8b133f by David Redondo. Committed on 10/06/2025 at 13:07. Pushed by davidre into branch 'Plasma/6.4'. filechooser: Ignore non absolute current_folder urls These do not make sense in cross process communication SENTRY:XDG-DESKTOP-PORTAL-KDE-G4 (cherry picked from commit 7c8e601a663eb33029e2723bbd2372c89e0cb9be) Co-authored-by: David Redondo <kde@david-redondo.de> M +8 -0 src/filechooser.cpp https://invent.kde.org/plasma/xdg-desktop-portal-kde/-/commit/609752566234575f68c38cd24fbccb4c6e8b133f A possibly relevant merge request was started @ https://invent.kde.org/frameworks/kio/-/merge_requests/1910 Git commit 6552bc6f280b2eddff4b1da931004a8a9230ac81 by David Redondo. Committed on 11/06/2025 at 07:53. Pushed by davidre into branch 'master'. kfilewidget: Resolve relative file urls against current working dir We need to work with absolute urls for previewjob which asserts on relative urls. M +11 -6 src/filewidgets/kfilewidget.cpp https://invent.kde.org/frameworks/kio/-/commit/6552bc6f280b2eddff4b1da931004a8a9230ac81 |
Created attachment 171990 [details] KCrash report SUMMARY kioworker crashed in the background. I saw it crash when using the file picker/saver. I'm not sure if it's related. SOFTWARE/OS VERSIONS Operating System: KDE neon 6.0 KDE Plasma Version: 6.1.3 KDE Frameworks Version: 6.4.0 Qt Version: 6.7.0 Kernel Version: 6.5.0-44-generic (64-bit) Graphics Platform: X11