Bug 282510

Summary: Digikam crashed when changing selection while images are being deleted
Product: [Applications] digikam Reporter: Frederic Grelot <fredericg_99>
Component: Albums-TrashAssignee: Digikam Developers <digikam-bugs-null>
Status: RESOLVED FIXED    
Severity: crash CC: caulier.gilles, horst.fiedler, jtamate
Priority: NOR    
Version: 2.2.0   
Target Milestone: ---   
Platform: Fedora RPMs   
OS: Linux   
Latest Commit: Version Fixed In: 7.2.0
Sentry Crash Report:

Description Frederic Grelot 2011-09-21 21:30:56 UTC
Application: digikam (2.2.0)
KDE Platform Version: 4.6.5 (4.6.5)
Qt Version: 4.7.3
Operating System: Linux 3.0.1-3.fc16.x86_64 x86_64
Distribution: "Fedora release 15 (Lovelock)"

-- Information about the crash:
- What I was doing when the application crashed:
I just selected 2 images, and deleted them. As they were not yet removed (moving them to the Thrash takes 1 or 2 seconds, since it is not stored in the same volume), I clicked on another image. Digikam completely crashed at that moment.

-- Backtrace:
Application: digiKam (digikam), signal: Segmentation fault
[Current thread is 1 (Thread 0x7f3d55ccca40 (LWP 499))]

Thread 8 (Thread 0x7f3d4f44f700 (LWP 508)):
#0  0x0000003126ed7423 in poll () from /lib64/libc.so.6
#1  0x0000003128a42d24 in ?? () from /lib64/libglib-2.0.so.0
#2  0x0000003128a4360d in g_main_loop_run () from /lib64/libglib-2.0.so.0
#3  0x00000031306b4564 in ?? () from /lib64/libgio-2.0.so.0
#4  0x0000003128a683a6 in ?? () from /lib64/libglib-2.0.so.0
#5  0x0000003127207b31 in start_thread () from /lib64/libpthread.so.0
#6  0x0000003126edfd2d in clone () from /lib64/libc.so.6

Thread 7 (Thread 0x7f3d44575700 (LWP 513)):
#0  0x000000312720b4b5 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x0000003133e745db in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib64/libQtCore.so.4
#2  0x00000000005c6ec0 in Digikam::ScanController::run (this=0x1bc83e0) at /raid/home/goulou/digikam/digikam-sc/core/digikam/database/scancontroller.cpp:647
#3  0x0000003133e74145 in ?? () from /usr/lib64/libQtCore.so.4
#4  0x0000003127207b31 in start_thread () from /lib64/libpthread.so.0
#5  0x0000003126edfd2d in clone () from /lib64/libc.so.6

Thread 6 (Thread 0x7f3d43d74700 (LWP 598)):
#0  0x000000312720b4b5 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x0000003133e745db in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib64/libQtCore.so.4
#2  0x00007f3d564769a7 in Digikam::ParkingThread::run (this=0x1cfda30) at /raid/home/goulou/digikam/digikam-sc/core/libs/threads/threadmanager.cpp:119
#3  0x0000003133e74145 in ?? () from /usr/lib64/libQtCore.so.4
#4  0x0000003127207b31 in start_thread () from /lib64/libpthread.so.0
#5  0x0000003126edfd2d in clone () from /lib64/libc.so.6

Thread 5 (Thread 0x7f3d10bf4700 (LWP 3066)):
#0  0x000000312720b81f in pthread_cond_timedwait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x0000003133e7454e in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib64/libQtCore.so.4
#2  0x0000003133e68edf in ?? () from /usr/lib64/libQtCore.so.4
#3  0x0000003133e74145 in ?? () from /usr/lib64/libQtCore.so.4
#4  0x0000003127207b31 in start_thread () from /lib64/libpthread.so.0
#5  0x0000003126edfd2d in clone () from /lib64/libc.so.6

Thread 4 (Thread 0x7f3d221f2700 (LWP 3069)):
#0  0x00000031272099e0 in pthread_mutex_lock () from /lib64/libpthread.so.0
#1  0x0000003128a412d9 in g_main_context_acquire () from /lib64/libglib-2.0.so.0
#2  0x0000003128a42b41 in ?? () from /lib64/libglib-2.0.so.0
#3  0x0000003128a4325c in g_main_context_iteration () from /lib64/libglib-2.0.so.0
#4  0x0000003133f84d76 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#5  0x0000003133f596c2 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#6  0x0000003133f598bf in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#7  0x00007f3d56476041 in Digikam::WorkerObjectRunnable::run (this=0x2ea6c40) at /raid/home/goulou/digikam/digikam-sc/core/libs/threads/threadmanager.cpp:196
#8  0x0000003133e68e55 in ?? () from /usr/lib64/libQtCore.so.4
#9  0x0000003133e74145 in ?? () from /usr/lib64/libQtCore.so.4
#10 0x0000003127207b31 in start_thread () from /lib64/libpthread.so.0
#11 0x0000003126edfd2d in clone () from /lib64/libc.so.6

Thread 3 (Thread 0x7f3d12bf8700 (LWP 3070)):
#0  0x000000313e6094d6 in ?? () from /usr/lib64/libgomp.so.1
#1  0x000000313e607ffe in ?? () from /usr/lib64/libgomp.so.1
#2  0x0000003127207b31 in start_thread () from /lib64/libpthread.so.0
#3  0x0000003126edfd2d in clone () from /lib64/libc.so.6

Thread 2 (Thread 0x7f3d11bf6700 (LWP 3071)):
#0  0xffffffffff600135 in ?? ()
#1  0x00007f3d11bf5800 in ?? ()
#2  0x00007fff1f5ff7e7 in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)

Thread 1 (Thread 0x7f3d55ccca40 (LWP 499)):
[KCrash Handler]
#6  ref (this=0x825) at /usr/include/QtCore/qatomic_x86_64.h:121
#7  assign (o=..., this=0x7fff1f5c4830) at /raid/home/goulou/digikam/digikam-sc/core/libs/dimg/dshareddata.h:217
#8  operator= (o=..., this=0x7fff1f5c4830) at /raid/home/goulou/digikam/digikam-sc/core/libs/dimg/dshareddata.h:191
#9  Digikam::ImageInfo::ImageInfo (this=0x7fff1f5c4830, info=...) at /raid/home/goulou/digikam/digikam-sc/core/libs/database/imageinfo.cpp:230
#10 0x00007f3d55e6fc3a in Digikam::ImageThumbnailModel::data (this=0x2f9cc48, index=<optimized out>, role=<optimized out>) at /raid/home/goulou/digikam/digikam-sc/core/libs/models/imagethumbnailmodel.cpp:250
#11 0x00007f3d55e427a2 in data (arole=34, this=0x1cb9f80) at /usr/include/QtCore/qabstractitemmodel.h:398
#12 Digikam::ImageHistoryGraphModel::data (this=0x2f9ced0, index=<optimized out>, role=34) at /raid/home/goulou/digikam/digikam-sc/core/libs/database/imagehistory/imagehistorygraphmodel.cpp:707
#13 0x00000000005fb60d in data (arole=34, this=0x7fff1f5c4e10) at /usr/include/QtCore/qabstractitemmodel.h:398
#14 Digikam::ImageDelegate::retrieveThumbnailPixmap (index=..., thumbnailSize=<optimized out>) at /raid/home/goulou/digikam/digikam-sc/core/digikam/items/imagedelegate.cpp:214
#15 0x00000000004affde in Digikam::VersionsDelegate::initStyleOption (this=0x2fa2410, option=0x7fff1f5c4a40, index=...) at /raid/home/goulou/digikam/digikam-sc/core/libs/imageproperties/versionsdelegate.cpp:253
#16 0x0000003cb375aa05 in QStyledItemDelegate::paint(QPainter*, QStyleOptionViewItem const&, QModelIndex const&) const () from /usr/lib64/libQtGui.so.4
#17 0x00000000004b06f9 in Digikam::VersionsDelegate::paint (this=0x2fa2410, painter=0x7fff1f5c5200, option=..., index=...) at /raid/home/goulou/digikam/digikam-sc/core/libs/imageproperties/versionsdelegate.cpp:215
#18 0x0000003cb36f3c0f in QTreeView::drawRow(QPainter*, QStyleOptionViewItem const&, QModelIndex const&) const () from /usr/lib64/libQtGui.so.4
#19 0x0000003cb36f6718 in QTreeView::drawTree(QPainter*, QRegion const&) const () from /usr/lib64/libQtGui.so.4
#20 0x0000003cb36f70b0 in QTreeView::paintEvent(QPaintEvent*) () from /usr/lib64/libQtGui.so.4
#21 0x00000000004b0f1c in Digikam::VersionsTreeView::paintEvent (this=0x2f9d310, e=0x7fff1f5c5fa0) at /raid/home/goulou/digikam/digikam-sc/core/libs/imageproperties/versionstreeview.cpp:158
#22 0x0000003cb3207ab6 in QWidget::event(QEvent*) () from /usr/lib64/libQtGui.so.4
#23 0x0000003cb35a4da6 in QFrame::event(QEvent*) () from /usr/lib64/libQtGui.so.4
#24 0x0000003cb36b41eb in QAbstractItemView::viewportEvent(QEvent*) () from /usr/lib64/libQtGui.so.4
#25 0x0000003cb36f8b35 in QTreeView::viewportEvent(QEvent*) () from /usr/lib64/libQtGui.so.4
#26 0x00000000004b10a3 in Digikam::VersionsTreeView::viewportEvent (this=0x2f9d310, event=0x7fff1f5c5fa0) at /raid/home/goulou/digikam/digikam-sc/core/libs/imageproperties/versionstreeview.cpp:255
#27 0x0000003133f5a338 in QCoreApplicationPrivate::sendThroughObjectEventFilters(QObject*, QEvent*) () from /usr/lib64/libQtCore.so.4
#28 0x0000003cb31b740f in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/libQtGui.so.4
#29 0x0000003cb31bc2d1 in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/libQtGui.so.4
#30 0x0000003cb4441d56 in KApplication::notify(QObject*, QEvent*) () from /usr/lib64/libkdeui.so.5
#31 0x0000003133f5a1ac in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib64/libQtCore.so.4
#32 0x0000003cb32049d0 in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib64/libQtGui.so.4
#33 0x0000003cb32055a0 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib64/libQtGui.so.4
#34 0x0000003cb320472c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib64/libQtGui.so.4
#35 0x0000003cb32055a0 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib64/libQtGui.so.4
#36 0x0000003cb320472c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib64/libQtGui.so.4
#37 0x0000003cb32055a0 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib64/libQtGui.so.4
#38 0x0000003cb320472c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib64/libQtGui.so.4
#39 0x0000003cb32055a0 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib64/libQtGui.so.4
#40 0x0000003cb3205480 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib64/libQtGui.so.4
#41 0x0000003cb320472c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib64/libQtGui.so.4
#42 0x0000003cb32055a0 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib64/libQtGui.so.4
#43 0x0000003cb320472c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib64/libQtGui.so.4
#44 0x0000003cb32055a0 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib64/libQtGui.so.4
#45 0x0000003cb3205480 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib64/libQtGui.so.4
#46 0x0000003cb3205480 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib64/libQtGui.so.4
#47 0x0000003cb320472c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib64/libQtGui.so.4
#48 0x0000003cb32055a0 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib64/libQtGui.so.4
#49 0x0000003cb3205480 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib64/libQtGui.so.4
#50 0x0000003cb320472c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib64/libQtGui.so.4
#51 0x0000003cb32055a0 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib64/libQtGui.so.4
#52 0x0000003cb3205480 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib64/libQtGui.so.4
#53 0x0000003cb3205480 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib64/libQtGui.so.4
#54 0x0000003cb3205480 in QWidgetPrivate::paintSiblingsRecursive(QPaintDevice*, QList<QObject*> const&, int, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib64/libQtGui.so.4
#55 0x0000003cb320472c in QWidgetPrivate::drawWidget(QPaintDevice*, QRegion const&, QPoint const&, int, QPainter*, QWidgetBackingStore*) () from /usr/lib64/libQtGui.so.4
#56 0x0000003cb33c08b0 in ?? () from /usr/lib64/libQtGui.so.4
#57 0x0000003cb31fad00 in QWidgetPrivate::syncBackingStore() () from /usr/lib64/libQtGui.so.4
#58 0x0000003cb3225f38 in ?? () from /usr/lib64/libQtGui.so.4
#59 0x0000003cb3232c2f in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib64/libQtGui.so.4
#60 0x0000003cb325a2ec in ?? () from /usr/lib64/libQtGui.so.4
#61 0x0000003128a427ed in g_main_context_dispatch () from /lib64/libglib-2.0.so.0
#62 0x0000003128a42fc8 in ?? () from /lib64/libglib-2.0.so.0
#63 0x0000003128a4325c in g_main_context_iteration () from /lib64/libglib-2.0.so.0
#64 0x0000003133f84d0f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#65 0x0000003cb3259fde in ?? () from /usr/lib64/libQtGui.so.4
#66 0x0000003133f596c2 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#67 0x0000003133f598bf in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#68 0x0000003133f5da07 in QCoreApplication::exec() () from /usr/lib64/libQtCore.so.4
#69 0x000000000048a51d in main (argc=5, argv=<optimized out>) at /raid/home/goulou/digikam/digikam-sc/core/digikam/main/main.cpp:232

Possible duplicates by query: bug 262285, bug 254409.

Reported using DrKonqi
Comment 1 caulier.gilles 2011-09-22 07:39:45 UTC

*** This bug has been marked as a duplicate of bug 276592 ***
Comment 2 Marcel Wiesweg 2011-09-22 19:37:40 UTC
Frederic, is this reproducible?
Comment 3 Marcel Wiesweg 2011-09-22 20:51:21 UTC
Git commit ffdfb1f4ec646197e9c27e3e814432e76ea79c81 by Marcel Wiesweg.
Committed on 22/09/2011 at 21:54.
Pushed by mwiesweg into branch 'master'.

Add security checks to avoid crashes with invalid indexes

CCBUG: 282510

M  +14   -5    libs/models/imagemodel.cpp
M  +6    -1    libs/models/imagethumbnailmodel.cpp

http://commits.kde.org/digikam/ffdfb1f4ec646197e9c27e3e814432e76ea79c81
Comment 4 caulier.gilles 2012-02-09 09:28:28 UTC
*** Bug 293692 has been marked as a duplicate of this bug. ***
Comment 5 caulier.gilles 2012-06-22 19:00:59 UTC
*** Bug 302359 has been marked as a duplicate of this bug. ***
Comment 6 caulier.gilles 2020-09-13 02:00:54 UTC
Fixed with 276592