Summary: | crash when adding pictures to a running digikam | ||
---|---|---|---|
Product: | [Applications] digikam | Reporter: | Johannes Hirte <johannes.hirte> |
Component: | Albums-Engine | Assignee: | Digikam Developers <digikam-bugs-null> |
Status: | RESOLVED FIXED | ||
Severity: | crash | CC: | caulier.gilles, kdenis, metzpinguin |
Priority: | NOR | ||
Version: | 5.8.0 | ||
Target Milestone: | --- | ||
Platform: | Gentoo Packages | ||
OS: | Linux | ||
Latest Commit: | Version Fixed In: | 7.0.0 | |
Sentry Crash Report: |
Description
Johannes Hirte
2017-10-23 08:55:23 UTC
Johannes, do you recall the Qt version you experienced this with? If it was before Qt 5.8, someone might want to consider if this was caused by a Qt bug that was resolved fixed in 5.8, as described in Bug 361895, Comment 1. (In reply to Denis Kurz from comment #1) > Johannes, do you recall the Qt version you experienced this with? If it was > before Qt 5.8, someone might want to consider if this was caused by a Qt bug > that was resolved fixed in 5.8, as described in Bug 361895, Comment 1. I'm sure this was already Qt 5.9. I've not seen the double linked list corruption again. Instead most times I see a segfault in: Thread 1 "digikam" received signal SIGSEGV, Segmentation fault. QHashData::nextNode (node=node@entry=0x2dfd630) at tools/qhash.cpp:617. But I'm not sure if this is the same bug. Maybe this one should be closed and I open a new one for the segfault in QHashData Can you reproduce the dysfunction using digiKam 6.0.0 pre-release bundle available here : https://files.kde.org/digikam/ Gilles Caulier (In reply to caulier.gilles from comment #3) > Can you reproduce the dysfunction using digiKam 6.0.0 pre-release bundle > available here : > > https://files.kde.org/digikam/ > > Gilles Caulier Yes, reproduced with git ae3ea4e7516e054c70dac55248057b1611a9dfdc This time it happend when deleting some directories from outside of digikam. backtrace: Thread 1 "digikam" received signal SIGSEGV, Segmentation fault. __memmove_ssse3_back () at ../sysdeps/x86_64/multiarch/memcpy-ssse3-back.S:1679 1679 ../sysdeps/x86_64/multiarch/memcpy-ssse3-back.S: No such file or directory. (gdb) bt #0 __memmove_ssse3_back () at ../sysdeps/x86_64/multiarch/memcpy-ssse3-back.S:1679 #1 0x00007ffff20d6b2d in memmove (__len=11600313152, __src=<optimized out>, __dest=<optimized out>) at /usr/include/bits/string_fortified.h:40 #2 QListData::remove (this=this@entry=0x5555566dd768, i=<optimized out>, i@entry=-1) at tools/qlist.cpp:261 #3 0x00007ffff20d6e44 in QListData::erase (this=this@entry=0x5555566dd768, xi=xi@entry=0x55555c2cb3e8) at tools/qlist.cpp:330 #4 0x00007ffff78e201d in QList<Digikam::HistoryItem>::erase (it=..., this=<optimized out>) at /usr/lib/gcc/x86_64-pc-linux-gnu/8.2.0/include/g++-v8/bits/atomic_base.h:303 #5 Digikam::AlbumHistory::deleteAlbum(Digikam::Album*) () at /var/tmp/portage/media-gfx/digikam-9999/work/digikam-9999/core/libs/album/albumhistory.cpp:307 #6 0x00007ffff78e244a in Digikam::AlbumHistory::slotAlbumDeleted(Digikam::Album*) () at /var/tmp/portage/media-gfx/digikam-9999/work/digikam-9999/core/libs/album/albumhistory.cpp:569 #7 0x00007ffff79237ac in Digikam::AlbumHistory::qt_static_metacall (_o=<optimized out>, _id=<optimized out>, _a=<optimized out>, _c=<optimized out>) at core/libs/album/digikamalbum_src_autogen/EWIEGA46WW/moc_albumhistory.cpp:124 #8 0x00007ffff223400e in QMetaObject::activate(QObject*, int, int, void**) () at kernel/qobject.cpp:3771 #9 0x00007ffff223465f in QMetaObject::activate (sender=sender@entry=0x7ffff7dd4e70 <_ZZN7Digikam12_GLOBAL__N_113Q_QGS_creator13innerFunctionEvE6holder>, m=m@entry=0x7ffff7dab780 <Digikam::AlbumManager::staticMetaObject>, local_signal_index=local_signal_index@entry=3, argv=argv@entry=0x7fffffffcca0) at kernel/qobject.cpp:3633 #10 0x00007ffff7922d22 in Digikam::AlbumManager::signalAlbumDeleted (this=this@entry=0x7ffff7dd4e70 <_ZZN7Digikam12_GLOBAL__N_113Q_QGS_creator13innerFunctionEvE6holder>, _t1=<optimized out>, _t1@entry=0x5555589fc310) at core/libs/album/digikamalbum_src_autogen/EWIEGA46WW/moc_albummanager.cpp:600 #11 0x00007ffff7911d9a in Digikam::AlbumManager::removePAlbum(Digikam::PAlbum*) () at /var/tmp/portage/media-gfx/digikam-9999/work/digikam-9999/core/libs/album/albummanager.cpp:3137 #12 0x00007ffff7914216 in Digikam::AlbumManager::scanPAlbums() () at /var/tmp/portage/media-gfx/digikam-9999/work/digikam-9999/core/libs/album/albummanager.cpp:1375 #13 0x00007ffff7924ae2 in Digikam::AlbumManager::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) () at core/libs/album/digikamalbum_src_autogen/EWIEGA46WW/moc_albummanager.cpp:336 #14 0x00007ffff223400e in QMetaObject::activate(QObject*, int, int, void**) () at kernel/qobject.cpp:3771 #15 0x00007ffff223465f in QMetaObject::activate (sender=<optimized out>, m=m@entry=0x7ffff2685dc0 <QTimer::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7fffffffcf90) at kernel/qobject.cpp:3633 #16 0x00007ffff223f7a7 in QTimer::timeout (this=<optimized out>, _t1=...) at .moc/moc_qtimer.cpp:200 #17 0x00007ffff2234c63 in QObject::event(QEvent*) () at kernel/qobject.cpp:1232 #18 0x00007ffff2f04d11 in QApplicationPrivate::notify_helper (this=this@entry=0x5555555f10d0, receiver=receiver@entry=0x555555837d60, e=e@entry=0x7fffffffd250) at kernel/qapplication.cpp:3727 #19 0x00007ffff2f0c1a0 in QApplication::notify(QObject*, QEvent*) () at kernel/qapplication.cpp:3486 #20 0x00007ffff220d481 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () at kernel/qcoreapplication.cpp:1048 #21 0x00007ffff225a719 in QCoreApplication::sendEvent (event=0x7fffffffd250, receiver=<optimized out>) at ../../include/QtCore/../../src/corelib/kernel/qcoreapplication.h:234 #22 QTimerInfoList::activateTimers() () at kernel/qtimerinfo_unix.cpp:643 #23 0x00007ffff225af44 in timerSourceDispatch (source=<optimized out>) at kernel/qeventdispatcher_glib.cpp:182 #24 0x00007fffeaa893cd in g_main_dispatch (context=0x7fffd8004ff0) at /var/tmp/portage/dev-libs/glib-2.56.2/work/glib-2.56.2/glib/gmain.c:3176 #25 g_main_context_dispatch (context=context@entry=0x7fffd8004ff0) at /var/tmp/portage/dev-libs/glib-2.56.2/work/glib-2.56.2/glib/gmain.c:3829 #26 0x00007fffeaa89660 in g_main_context_iterate (context=context@entry=0x7fffd8004ff0, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>) at /var/tmp/portage/dev-libs/glib-2.56.2/work/glib-2.56.2/glib/gmain.c:3902 #27 0x00007fffeaa896ec in g_main_context_iteration (context=0x7fffd8004ff0, may_block=may_block@entry=1) at /var/tmp/portage/dev-libs/glib-2.56.2/work/glib-2.56.2/glib/gmain.c:3963 #28 0x00007ffff225b373 in QEventDispatcherGlib::processEvents (this=0x555555651710, flags=...) at kernel/qeventdispatcher_glib.cpp:423 #29 0x00007fffdec912e1 in QPAEventDispatcherGlib::processEvents (this=0x555555651710, flags=...) at qeventdispatcher_glib.cpp:69 #30 0x00007ffff220c4c3 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () at ../../include/QtCore/../../src/corelib/global/qflags.h:140 #31 0x00007ffff2214167 in QCoreApplication::exec() () at ../../include/QtCore/../../src/corelib/global/qflags.h:120 #32 0x00005555555618c5 in main () at /var/tmp/portage/media-gfx/digikam-9999/work/digikam-9999/core/app/main/main.cpp:286 #33 0x00007ffff17dc3be in __libc_start_main (main=0x555555560ab0 <main>, argc=1, argv=0x7fffffffd8a8, init=<optimized out>, fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7fffffffd898) at ../csu/libc-start.c:308 #34 0x00005555555627ba in _start () at /usr/include/qt5/QtCore/qdebug.h:125 Do you need the full backtrace with all threads? Interesting backtrace, but I see no problem in AlbumHistory::deleteAlbum(). Even after intensive debugging and trying to reproduce the crash, I have not succeeded so far. After all, it crashes in QList, but it's actually not possible for us to delete a wrong QList item with erase(). Maik Yes, it's a very nasty bug, and I'm still not sure if this may be a bug in Qt or some other component. But I've seen this only with digikam. And it smells like some race condition to me. In the past, I've seen this once a day or more. With current digikam, I get this once a month. I have some more backtraces, always ending in: QHashData::nextNode As digikam is highly multithreaded, mabye the thread-sanitizer can light this up. Ok, just starting digikam spits me 47 ThreadSanitizer warnings. Maybe false positives, cause not all code was instrumented. For Example, glib and dbus wasn't compiled with -fsanitize=thread. I've stopped debugging after recompiled Qt with thread sanitizer support (except qtwebkit), cause this broke all remaining binaries compiled against Qt and without thread sanitizer. I can provide the warnings, if you're interested. But I'm not sure how useful they are. Git commit a3e9a0ff35cc7f3a8c1202feabdbd125e3403297 by Maik Qualmann. Committed on 14/10/2018 at 20:18. Pushed by mqualmann into branch 'master'. move this qHash function into the Digikam namespace Qt-5.11 does not seem to need this function any more and accepts a QList also as a QHash key. In the documentation of Qt but nothing is noted about it yet. M +10 -11 core/libs/album/albumhistory.cpp https://commits.kde.org/digikam/a3e9a0ff35cc7f3a8c1202feabdbd125e3403297 Johannes, You can provide the logs, I'll look at them. Maik Can you reproduce the dysfunction using the last digiKam 6.0.0-beta3 just released ? https://www.digikam.org/news/2018-12-30-6.0.0-beta3_release_announcement/ Git commit 939b2d08743e5e6c084c0c7b0b7606d178952f90 by Maik Qualmann. Committed on 01/01/2019 at 11:49. Pushed by mqualmann into branch 'master'. prevent crashes when copying large video or TIF files M +18 -1 core/libs/threadimageio/engine/dfileoperations.cpp https://commits.kde.org/digikam/939b2d08743e5e6c084c0c7b0b7606d178952f90 Last crashes I've seen were without a backtrace, so I can't say what happened. I've added kcrash for catching a trace when the next crash happens. Hopefully this gives some more infos. Good news, After 2 weeks of works, the pre-release 6.1.0 bundles are now reconstructed from scratch with: - All OpenCV options for CUDA, OPenMP, and OPenCL disabled to prevent crashes in face management. - A large upgrade of Qt5 from 5.9.7 to 5.11.3. - An upgrade to KF5 5.55. - An upgrade to Ffmpeg 3.3.9 - The fontconfig/freetype integration in the bundle to reduce system dependencies Files can be downloaded here : https://files.kde.org/digikam/ Please test and report. Gilles Caulier Johannes, We need a fresh feedback using last 7.0.0-beta AppImage pre-release. Can you reproduce the crash ? https://files.kde.org/digikam/ Gilles Caulier I haven't seen this crash for a long time. So I think we can consider it as fixed. Thanks for the feedback |