Bug 295340

Summary: Digikam crashed while tagging faces
Product: [Applications] digikam Reporter: Frederic Grelot <fredericg_99>
Component: Faces-EngineAssignee: Digikam Developers <digikam-bugs-null>
Status: RESOLVED FIXED    
Severity: crash CC: marcel.wiesweg
Priority: NOR    
Version: 2.6.0   
Target Milestone: ---   
Platform: Compiled Sources   
OS: Linux   
Latest Commit: Version Fixed In: 2.6.0
Sentry Crash Report:

Description Frederic Grelot 2012-03-04 20:08:46 UTC
I'm sorry for the evasive bug subject, but I'm not sure about what happened...
I tagged faces, and noticed a first bug : every time I tagged a face, several progress bar appear on the bottom of the screen : "Process Item/Applying Face change", "Assigning image tags", and "Writing metadata to file".
I expect them to disappear quickly, but unfortunately, the last one ("Writing metadata to file") does not (whatever the time I wait for it, the progress is still 0%)
After 5 taggings, I had 5 "Writing metadata to file" progress bars at 0%.
Then, for an unknown reason (I don't really remember what I did, I think I was trying to cancel the progress bars), digikam crashed.
I decided to keep this bug report, even if not very precise, since the crash would give me the opportunity to get the back trace, which would certainly help the bug relative to the progress bar not disappearing, so here it is! (but maybe this bug report is about 2 different bugs, and in this case I'm very sorry for that but I don't know how to differenciate them in the backtrace...)


Application: digiKam (digikam), signal: Segmentation fault
Using host libthread_db library "/lib64/libthread_db.so.1".
[Current thread is 1 (Thread 0x7ff632db7a40 (LWP 27220))]

Thread 7 (Thread 0x7ff62345e700 (LWP 27258)):
#0  0x000000389b80bae5 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00000038ac07c07b in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib64/libQtCore.so.4
#2  0x00000000005d2300 in Digikam::ScanController::run (this=0x1ac1af0) at /home/goulou/digikam/digikam-sc/core/digikam/database/scancontroller.cpp:647
#3  0x00000038ac07bb6b in ?? () from /usr/lib64/libQtCore.so.4
#4  0x000000389b807d90 in start_thread () from /lib64/libpthread.so.0
#5  0x000000389b4f0f5d in clone () from /lib64/libc.so.6

Thread 6 (Thread 0x7ff622c5d700 (LWP 27259)):
#0  0x000000389b4e85c3 in poll () from /lib64/libc.so.6
#1  0x000000389d444fd8 in ?? () from /lib64/libglib-2.0.so.0
#2  0x000000389d44549c in g_main_context_iteration () from /lib64/libglib-2.0.so.0
#3  0x00000038ac1a7dc6 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#4  0x00000038ac178182 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#5  0x00000038ac1783d7 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#6  0x00000038ac078b27 in QThread::exec() () from /usr/lib64/libQtCore.so.4
#7  0x00000038ac157e7f in ?? () from /usr/lib64/libQtCore.so.4
#8  0x00000038ac07bb6b in ?? () from /usr/lib64/libQtCore.so.4
#9  0x000000389b807d90 in start_thread () from /lib64/libpthread.so.0
#10 0x000000389b4f0f5d in clone () from /lib64/libc.so.6

Thread 5 (Thread 0x7ff62245c700 (LWP 27389)):
#0  0x000000389b80bae5 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00000038ac07c07b in QWaitCondition::wait(QMutex*, unsigned long) () from /usr/lib64/libQtCore.so.4
#2  0x00007ff633565f89 in Digikam::ParkingThread::run (this=0x1cebaa0) at /home/goulou/digikam/digikam-sc/core/libs/threads/threadmanager.cpp:119
#3  0x00000038ac07bb6b in ?? () from /usr/lib64/libQtCore.so.4
#4  0x000000389b807d90 in start_thread () from /lib64/libpthread.so.0
#5  0x000000389b4f0f5d in clone () from /lib64/libc.so.6

Thread 4 (Thread 0x7ff5fd78e700 (LWP 27741)):
#0  0x00000038ac0d224a in ?? () from /usr/lib64/libQtCore.so.4
#1  0x00000038ac0d2289 in QElapsedTimer::isMonotonic() () from /usr/lib64/libQtCore.so.4
#2  0x00000038ac1a87bd in ?? () from /usr/lib64/libQtCore.so.4
#3  0x00000038ac1a8821 in ?? () from /usr/lib64/libQtCore.so.4
#4  0x00000038ac1a729c in ?? () from /usr/lib64/libQtCore.so.4
#5  0x00000038ac1a7345 in ?? () from /usr/lib64/libQtCore.so.4
#6  0x000000389d444062 in g_main_context_prepare () from /lib64/libglib-2.0.so.0
#7  0x000000389d444e6d in ?? () from /lib64/libglib-2.0.so.0
#8  0x000000389d44549c in g_main_context_iteration () from /lib64/libglib-2.0.so.0
#9  0x00000038ac1a7dc6 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#10 0x00000038ac178182 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#11 0x00000038ac1783d7 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#12 0x00007ff63356559e in Digikam::WorkerObjectRunnable::run (this=0x7ff5e8017b60) at /home/goulou/digikam/digikam-sc/core/libs/threads/threadmanager.cpp:196
#13 0x00000038ac06f4e2 in ?? () from /usr/lib64/libQtCore.so.4
#14 0x00000038ac07bb6b in ?? () from /usr/lib64/libQtCore.so.4
#15 0x000000389b807d90 in start_thread () from /lib64/libpthread.so.0
#16 0x000000389b4f0f5d in clone () from /lib64/libc.so.6

Thread 3 (Thread 0x7ff5fdf8f700 (LWP 31495)):
#0  0x000000389d4445ef in g_main_context_check () from /lib64/libglib-2.0.so.0
#1  0x000000389d444ff2 in ?? () from /lib64/libglib-2.0.so.0
#2  0x000000389d44549c in g_main_context_iteration () from /lib64/libglib-2.0.so.0
#3  0x00000038ac1a7dc6 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#4  0x00000038ac178182 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#5  0x00000038ac1783d7 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#6  0x00007ff63356559e in Digikam::WorkerObjectRunnable::run (this=0x72417b0) at /home/goulou/digikam/digikam-sc/core/libs/threads/threadmanager.cpp:196
#7  0x00000038ac06f4e2 in ?? () from /usr/lib64/libQtCore.so.4
#8  0x00000038ac07bb6b in ?? () from /usr/lib64/libQtCore.so.4
#9  0x000000389b807d90 in start_thread () from /lib64/libpthread.so.0
#10 0x000000389b4f0f5d in clone () from /lib64/libc.so.6

Thread 2 (Thread 0x7ff5ed935700 (LWP 31496)):
#0  0x000000389b80af9d in pthread_mutex_unlock () from /lib64/libpthread.so.0
#1  0x000000389d444fcc in ?? () from /lib64/libglib-2.0.so.0
#2  0x000000389d44549c in g_main_context_iteration () from /lib64/libglib-2.0.so.0
#3  0x00000038ac1a7dc6 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#4  0x00000038ac178182 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#5  0x00000038ac1783d7 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#6  0x00007ff63356559e in Digikam::WorkerObjectRunnable::run (this=0x6cabe80) at /home/goulou/digikam/digikam-sc/core/libs/threads/threadmanager.cpp:196
#7  0x00000038ac06f4e2 in ?? () from /usr/lib64/libQtCore.so.4
#8  0x00000038ac07bb6b in ?? () from /usr/lib64/libQtCore.so.4
#9  0x000000389b807d90 in start_thread () from /lib64/libpthread.so.0
#10 0x000000389b4f0f5d in clone () from /lib64/libc.so.6

Thread 1 (Thread 0x7ff632db7a40 (LWP 27220)):
[KCrash Handler]
#6  fontMetrics (this=<optimized out>) at /usr/include/QtGui/qwidget.h:982
#7  updateHeight (this=<optimized out>) at /home/goulou/digikam/digikam-sc/core/digikam/album/albumtreeview.cpp:113
#8  Digikam::AbstractAlbumTreeView::albumSettingsChanged (this=<optimized out>) at /home/goulou/digikam/digikam-sc/core/digikam/album/albumtreeview.cpp:1061
#9  0x00000000005c62d5 in Digikam::AbstractAlbumTreeView::qt_static_metacall (_o=0x776b040, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at /home/goulou/digikam/digikam-sc/build/core/digikam/albumtreeview.moc:101
#10 0x00000038ac18cce1 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib64/libQtCore.so.4
#11 0x00000000004d3bdb in Digikam::Setup::okClicked (this=0x76a59f0) at /home/goulou/digikam/digikam-sc/core/utilities/setup/setup.cpp:489
#12 0x00000038b2fa90b4 in ?? () from /usr/lib64/libkdeui.so.5
#13 0x00000038ac18cce1 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib64/libQtCore.so.4
#14 0x00000038ac1945be in QSignalMapper::mapped(int) () from /usr/lib64/libQtCore.so.4
#15 0x00000038ac194b5b in QSignalMapper::map(QObject*) () from /usr/lib64/libQtCore.so.4
#16 0x00000038ac18cce1 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib64/libQtCore.so.4
#17 0x00000038af24d202 in QAbstractButton::clicked(bool) () from /usr/lib64/libQtGui.so.4
#18 0x00000038aef8f5be in ?? () from /usr/lib64/libQtGui.so.4
#19 0x00000038aef908fb in ?? () from /usr/lib64/libQtGui.so.4
#20 0x00000038aef90b6c in QAbstractButton::mouseReleaseEvent(QMouseEvent*) () from /usr/lib64/libQtGui.so.4
#21 0x00000038aec1a02a in QWidget::event(QEvent*) () from /usr/lib64/libQtGui.so.4
#22 0x00000038aebc9994 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/libQtGui.so.4
#23 0x00000038aebcf0e3 in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/libQtGui.so.4
#24 0x00000038b3050766 in KApplication::notify(QObject*, QEvent*) () from /usr/lib64/libkdeui.so.5
#25 0x00000038ac17904c in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib64/libQtCore.so.4
#26 0x00000038aebca962 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () from /usr/lib64/libQtGui.so.4
#27 0x00000038aec462e5 in ?? () from /usr/lib64/libQtGui.so.4
#28 0x00000038aec451aa in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib64/libQtGui.so.4
#29 0x00000038aec6c97c in ?? () from /usr/lib64/libQtGui.so.4
#30 0x000000389d444acd in g_main_context_dispatch () from /lib64/libglib-2.0.so.0
#31 0x000000389d4452c8 in ?? () from /lib64/libglib-2.0.so.0
#32 0x000000389d44549c in g_main_context_iteration () from /lib64/libglib-2.0.so.0
#33 0x00000038ac1a7d5f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#34 0x00000038aec6c66e in ?? () from /usr/lib64/libQtGui.so.4
#35 0x00000038ac178182 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#36 0x00000038ac1783d7 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#37 0x00000038af08f876 in QDialog::exec() () from /usr/lib64/libQtGui.so.4
#38 0x00000000004d4050 in Digikam::Setup::exec (parent=0x1b4c650, page=Digikam::Setup::LastPageUsed) at /home/goulou/digikam/digikam-sc/core/utilities/setup/setup.cpp:412
#39 0x0000000000588b3a in Digikam::DigikamApp::qt_static_metacall (_o=0x1b4c650, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at /home/goulou/digikam/digikam-sc/build/core/digikam/digikamapp.moc:183
#40 0x00000038ac18cce1 in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) () from /usr/lib64/libQtCore.so.4
#41 0x00000038aebc37b2 in QAction::triggered(bool) () from /usr/lib64/libQtGui.so.4
#42 0x00000038aebc399f in QAction::activate(QAction::ActionEvent) () from /usr/lib64/libQtGui.so.4
#43 0x00000038af00c859 in ?? () from /usr/lib64/libQtGui.so.4
#44 0x00000038af012952 in ?? () from /usr/lib64/libQtGui.so.4
#45 0x00000038b3111d10 in KMenu::mouseReleaseEvent(QMouseEvent*) () from /usr/lib64/libkdeui.so.5
#46 0x00000038aec1a02a in QWidget::event(QEvent*) () from /usr/lib64/libQtGui.so.4
#47 0x00000038af013eeb in QMenu::event(QEvent*) () from /usr/lib64/libQtGui.so.4
#48 0x00000038aebc9994 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /usr/lib64/libQtGui.so.4
#49 0x00000038aebcf0e3 in QApplication::notify(QObject*, QEvent*) () from /usr/lib64/libQtGui.so.4
#50 0x00000038b3050766 in KApplication::notify(QObject*, QEvent*) () from /usr/lib64/libkdeui.so.5
#51 0x00000038ac17904c in QCoreApplication::notifyInternal(QObject*, QEvent*) () from /usr/lib64/libQtCore.so.4
#52 0x00000038aebca962 in QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool) () from /usr/lib64/libQtGui.so.4
#53 0x00000038aec469b1 in ?? () from /usr/lib64/libQtGui.so.4
#54 0x00000038aec451aa in QApplication::x11ProcessEvent(_XEvent*) () from /usr/lib64/libQtGui.so.4
#55 0x00000038aec6c97c in ?? () from /usr/lib64/libQtGui.so.4
#56 0x000000389d444acd in g_main_context_dispatch () from /lib64/libglib-2.0.so.0
#57 0x000000389d4452c8 in ?? () from /lib64/libglib-2.0.so.0
#58 0x000000389d44549c in g_main_context_iteration () from /lib64/libglib-2.0.so.0
#59 0x00000038ac1a7d5f in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#60 0x00000038aec6c66e in ?? () from /usr/lib64/libQtGui.so.4
#61 0x00000038ac178182 in QEventLoop::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#62 0x00000038ac1783d7 in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /usr/lib64/libQtCore.so.4
#63 0x00000038ac17cdd5 in QCoreApplication::exec() () from /usr/lib64/libQtCore.so.4
#64 0x000000000048da9b in main (argc=5, argv=<optimized out>) at /home/goulou/digikam/digikam-sc/core/digikam/main/main.cpp:232
Comment 1 Marcel Wiesweg 2012-03-04 20:47:03 UTC
How recent was your git checkout from which this crash happened?
Comment 2 Frederic Grelot 2012-03-04 20:51:34 UTC
let's say... Half an hour :-)
Comment 3 Marcel Wiesweg 2012-03-12 10:38:17 UTC
The crash occurs in the context of closing the setup. The change of AlbumSettings fires a signal to all AlbumTreeViews, which call their delegate to update some cached sizes.
This slot contains a pointer access which is not checked for null; apparently there can cases where the pointer is null, so I assume this is the problem, although I cannot reproduce the crash atm and can therefore not prove the crash is fixed.
Comment 4 Marcel Wiesweg 2012-03-12 11:20:37 UTC
Git commit 3750c9c3a86f64e77765111227583bd63bf7d06b by Marcel Wiesweg.
Committed on 12/03/2012 at 12:19.
Pushed by mwiesweg into branch 'master'.

Check for null pointer

M  +2    -2    NEWS
M  +4    -1    digikam/album/albumtreeview.cpp

http://commits.kde.org/digikam/3750c9c3a86f64e77765111227583bd63bf7d06b
Comment 5 Frederic Grelot 2012-03-18 11:25:07 UTC
I probably fixes the crash, but probably not the problem with the "writing metadata to file" progress bars never finishing...
Should I open another bug for that problem?